100 Commits

Author SHA1 Message Date
LevitatingBusinessMan (Rein Fernhout)
68565d2855 use 0 instead of NULL in function returning int 2024-12-23 15:41:01 +08:00
LevitatingBusinessMan (Rein Fernhout)
72c738e9ce use cmd_tbl_t type 2024-12-23 15:41:01 +08:00
Lindsay Zhou
a46c283102 fix: implicit conversion and implicit function declaration errors on gcc14 2024-12-23 15:41:01 +08:00
Han Gao
71bb3b069e fix: set initrd_high for initrd size too big
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
Signed-off-by: Han Gao <rabenda.cn@gmail.com>
2024-12-23 15:40:00 +08:00
devops_admin
8942b2dce6 Linux_SDK_V2.0.2
Signed-off-by: devops_admin <devops_admin@alibabacloud.com>
2024-12-23 15:40:00 +08:00
Han Gao
fc9575fa63 feat: add 8g emmc lpi4a som support
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
Signed-off-by: Han Gao <rabenda.cn@gmail.com>
2024-07-21 02:01:37 +08:00
钦峰
4ca0f76729 add single/dual rank support
Change-Id: I633daa4a871f93c5b4d897b1d60ed23bcc198912
2024-07-21 00:29:20 +08:00
NekoRouter
660cb1b920 env: Add boot from usb 2024-07-21 00:19:51 +08:00
NekoRouter
f0e5c60169 ci: Add build for laptop4a and pocket4a 2024-07-16 21:25:44 +08:00
Lu
0248804ead configs: add plastic & pocket config file 2024-07-16 18:31:21 +08:00
Lu
7ce2d43f6b xhci: allow trans data on 0x0 2024-07-16 18:31:21 +08:00
Lu
dd138c76f8 th1520: enable usb host support 2024-07-16 18:31:21 +08:00
Haaland Chen
197c6cdccd ci: enable ci for DDR-16GB meles
Signed-off-by: Haaland Chen <haaland@milkv.io>
2024-07-06 19:14:03 +08:00
Haaland Chen
2a2c5264a5 configs: add DDR-16GB meles board
Signed-off-by: Haaland Chen <haaland@milkv.io>
2024-07-06 19:14:03 +08:00
Han Gao
96627087db meles: add aon config
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-05-29 16:21:44 +08:00
Han Gao
da9c7240ac Revert "fastboot: clean hibernate image when update uboot/kernel/rootfs partition"
This reverts commit 3a7b5088ee.
2024-05-29 16:21:44 +08:00
Han Gao
e6d25986dd ci: update toolchains
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-05-29 16:21:44 +08:00
xianbing Zhu
d2c6528890 fastboot: clean hibernate image when update uboot/kernel/rootfs partition
When update version,this commit erase normal hibernate image
and fastresume image.Before this,only fastresume image is erased.
This may caused issue when hibernate image saved before
update version.

Update one of uboot/kernel/rootfs will clean hibernate image.

Signed-off-by: xianbing Zhu <xianbing.zhu@linux.alibaba.com>
Change-Id: I92cd9ccda83f8d1e215e0f8d75e7cf34380a6201
2024-05-29 16:21:44 +08:00
钦峰
cefbf1d0ea 1:fix compile warning 2:add aon set magic
Change-Id: I511dc51ff71ae9567dcc0b6b91f6bcac1ae61f3b
2024-05-29 16:21:44 +08:00
Han Gao
c7e455caf5 th1520: SPL_TEXT_BASE=0xffe0000000 for nosign spl
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-05-29 16:21:44 +08:00
Han Gao
905fa2e762 sync config
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-05-29 16:21:44 +08:00
thead_admin
2674ac70e4 Linux_SDK_V1.5.4
Signed-off-by: thead_admin <occ_thead@service.alibaba.com>
2024-05-29 16:21:44 +08:00
Han Gao
e0247b8a62 fix: run gpt_partition failed
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-03-28 11:00:40 +00:00
Haaland Chen
2fc52cbb27 include: light-c910.h: add fdtoverlay_addr_r
Signed-off-by: Haaland Chen <haaland@milkv.io>
2024-03-27 04:06:40 -05:00
Han Gao
ce1890d0dc fix: remove find partuuid
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-03-24 06:57:04 -05:00
Han Gao
9893f1a2c0 feat: add sdcard boot first
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-03-24 06:57:04 -05:00
Haaland Chen
f80c918aa2 configs: meles: use new fdt default name
Since T-HEAD Linux SDK V1.4.2, modified the kernel device tree
naming rules, starting with th1520.

Signed-off-by: Haaland Chen <haaland@milkv.io>
2024-03-21 04:16:26 -05:00
Han Gao
69d7d3cda0 feat: add format swap partition for resume
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-31 20:52:36 +08:00
Han Gao
4529d8d50f Revert "fix(c9xx): don't flush dcache when invalidating"
This reverts commit adec30ace4.
2024-01-31 16:19:17 +08:00
Han Gao
74eca2553e feat: enable load str firmware
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-31 16:19:17 +08:00
Han Gao
f14addebf4 Add tag publish firmware
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-27 11:11:02 +00:00
Han Gao
9d7cb33654 fix error to written eth1addr
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-24 00:15:25 +08:00
Han Gao
5dd8bce935 ci: add lc4a mainline dt name support
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-24 00:00:18 +08:00
Han Gao
de8dcffdd9 ci: add mainline dt name support
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-24 00:00:18 +08:00
Han Gao
0060af48c1 workaround: add delay
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-22 15:55:16 +08:00
Han Gao
6935c50d54 config: enable BOARD_RNG_SEED
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-22 15:55:16 +08:00
Han Gao
5bd86ffd9d config: update ROW16 to DDP
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2024-01-22 15:55:16 +08:00
thead_admin
abe41ba65e Linux_SDK_V1.4.2
Signed-off-by: thead_admin <occ_thead@service.alibaba.com>
2024-01-22 15:55:16 +08:00
thead_admin
3e564f9f0c Linux_SDK_V1.3.3
Signed-off-by: thead_admin <occ_thead@service.alibaba.com>
2024-01-22 15:55:16 +08:00
Han Gao
34dd739d4c ci: add build for lcon4a & lc4a
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-12-26 17:08:20 +08:00
Lu Hui
1f45edb0fc defconfig: add light_lpi4a_[cluster|console]_defconfig 2023-12-26 17:08:20 +08:00
Lu Hui
f79d320ffa drivers: video: ilitek-ili9881c.c: add long delay panel reset 2023-12-26 17:08:20 +08:00
Lu Hui
e66283f0d5 arch: dts: light-lpi4a: allow pane0 ref by other dts 2023-12-26 17:08:20 +08:00
Lu Hui
d43b44b9a0 drivers: panel: add panel-mingjun-070bi30ia2 2023-12-26 17:08:20 +08:00
Han Gao
a455494040 ci: update toolchains
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-12-15 23:35:53 +08:00
Gilbert Gilb's
adec30ace4 fix(c9xx): don't flush dcache when invalidating
The data cache invalidation function for c9xx CPUs uses `dcache.cipa`
instruction. According to T-Head extension specification[1] section
3.1.5, this instruction also performs a cache clean along with the
invalidation.

On top of being incorrect, this leads to a serious issue on the
designware ethernet driver, where stalled cache may get flushed each
time we handle a new received packet[2]. As a result, received packet
are randomly corrupted with old cached data. This can easily be
reproduced by sending an ARP request to the device during a TFTP
transfer. The last TFTP block is treated as the ARP reply we just sent,
which makes U-Boot hang on the block.

Always use `dcache.ipa` instruction to invalidate dcache. Replace
existing usages of `dcache.ipa` with our implementation.

Note that this fix is slightly intrusive as it changes the cache
invalidation behavior in all drivers. However, I have not noticed any
side-effect during my tests.

[1] https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.3.0/xthead-2023-11-10-2.3.0.pdf

[2] 918a8c89e0/drivers/net/designware.c (L475)
2023-12-15 23:35:31 +08:00
Haaland Chen
7632089652 board: light-c910: update milkv meles iopin initialization status
Signed-off-by: Haaland Chen <haaland@milkv.io>
2023-12-13 14:04:27 +08:00
Han Gao
e76acfd716 ci: enable ci for meles 4g/8g
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-12-03 11:32:41 +08:00
Han Gao
0e64ba274e fix: set fdt_default_name for meles 4g/8g
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-12-03 11:32:41 +08:00
Haaland Chen
119bb8eaed configs: add milkv-meles singlerank ddr and dualrank ddr defconfig
Signed-off-by: Haaland Chen <haaland@milkv.io>
2023-12-03 11:32:41 +08:00
Haaland Chen
078bfd152e riscv: dts: milkv-meles: turn on blue user led
Signed-off-by: Haaland Chen <haaland@milkv.io>
2023-12-03 11:32:41 +08:00
Haaland Chen
b604779862 light-c910: set CONFIG_MISC_INIT_R
Signed-off-by: Haaland Chen <haaland@milkv.io>
2023-12-03 11:32:41 +08:00
Haaland Chen
253adbc8e9 board: light-c910: add function light_c910_set_gpio_output_high
Signed-off-by: Haaland Chen <haaland@milkv.io>
2023-12-03 11:32:41 +08:00
Haaland Chen
985e884b0b add Milk-V Meles board
Signed-off-by: Haaland Chen <haaland@milkv.io>
2023-12-03 11:32:41 +08:00
Han Gao
918a8c89e0 configs: fix default dtb file name
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-10-26 02:52:22 +08:00
Han Gao
79454e91bc chore: enable ci for beagle-ahead
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-10-20 13:38:37 +08:00
Han Gao
491776f3c1 chore: sync lpi4a config
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-10-20 13:38:37 +08:00
Deepak Khatri
24498fc55d Update cape header GPIO pinmuxing 2023-10-20 13:38:37 +08:00
Baozhu Zuo
146c2c2031 Modify GPIO default status for Beagle Bluetooth uart4 module 2023-10-20 13:38:37 +08:00
Deepak Khatri
bb72cf3a29 Fix SD boot button issue 2023-10-20 13:38:37 +08:00
Deepak Khatri
b24d63765c Update default mikroBus pinmuxing 2023-10-20 13:38:37 +08:00
Deepak Khatri
c7f2155100 Update debug port pinmux
To check if low drive strength is causing problem.
2023-10-20 13:38:37 +08:00
Deepak Khatri
3e7fb26cb0 Pinmux update: PullDown pins 2023-10-20 13:38:37 +08:00
Deepak Khatri
ce871ac516 Update BeagleV Ahead pinmuxing 2023-10-20 13:38:37 +08:00
Robert Nelson
798af1f1c5 backport of: [PATCH] cmd: pxe: add support for FDT overlays
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
2023-10-20 13:38:37 +08:00
Kory Maincent
cccf006cae pytest: add sandbox test for "extension" command
This commit extends the sandbox to implement a dummy
extension_board_scan() function and enables the extension command in
the sandbox configuration. It then adds a test that checks the proper
functionality of the extension command by applying two Device Tree
overlays to the sandbox Device Tree.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
[trini: Limit to running on sandbox]
Signed-off-by: Tom Rini <trini@konsulko.com>
2023-10-20 13:38:37 +08:00
Kory Maincent
c86cc5402a cmd: add support for a new "extension" command
This patch adds a new "extension" command, which aims at detecting
extension boards connected to the hardware platform, and apply the
Device Tree overlays that describe the hardware present on those
extension boards.

In order to enable this mechanism, board-specific code must implement
the extension_board_scan() function that fills in a linked list of
"struct extension", each describing one extension board. In addition,
the board-specific code must select the SUPPORT_EXTENSION_SCAN Kconfig
boolean.

Based on this:

 - "extension scan" makes the generic code call the board-specific
   extension_board_scan() function to retrieve the list of detected
   extension boards.

 - "extension list" allows to list the detected extension boards.

 - "extension apply <number>|all" allows to apply the Device Tree
   overlay(s) corresponding to one, or all, extension boards

The latter requires two environment variables to exist and set one variable
to run:

 - extension_overlay_addr: the RAM address where to load the Device
   Tree overlays

 - extension_overlay_cmd: the U-Boot command to load one overlay.
   Indeed, the location and mechanism to load DT overlays is very setup
   specific.

 - extension_overlay_name: set by the command: the name of the DT which
   will be load during the execution.

When calling the command described in the extension_overlay_cmd
variable, the variable extension_overlay_name will be defined. So a
typical extension_overlay_cmd will look like this:

  extension_overlay_cmd=load mmc 0:1 $extension_overlay_addr /boot/$extension_overlay_name

Here is an example on how to use it:
=> run loadfdt
=> fdt addr $fdtaddr
=> setenv extension_overlay_addr 0x1000
=> setenv extension_overlay_cmd 'load mmc 0:1 ${extension_overlay_addr} /boot/${extension_overlay_name}'
=> extension scan
Found 1 extension board(s).
=> extension apply 0
519 bytes read in 3 ms (168.9 KiB/s)

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Maxime Ripard <maxime@cerno.tech>
2023-10-20 13:38:37 +08:00
Kory Maincent
5468ecbaf0 fdt_support: move fdt_valid from cmd_fdt.c to fdt_support.c
Move the fdt_valid function to fdt_support.
This changes allow to be able to test the validity of a devicetree in
other c files.

Update code syntax.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Maxime Ripard <maxime@cerno.tech>
2023-10-20 13:38:37 +08:00
Robert Nelson
4f8a362580 light_beagle_defconfig: enable CONFIG_OF_LIBFDT_OVERLAY=y
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
2023-10-20 13:38:37 +08:00
Robert Nelson
e6972d40e0 Modify_GPIO_default_status_for_Beagle_WIFI_BLE_module
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
2023-10-20 13:38:37 +08:00
Robert Nelson
44d2f2e746 light_beagle_defconfig: run savedefconfig
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
2023-10-20 13:38:37 +08:00
Han Gao
620420ad19 fix: ensure flashing img not to lose mac address
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-10-19 01:55:10 +08:00
Sean Anderson
a9ee746687 fastboot: Fix overflow when calculating chunk size
If a chunk was larger than 4GiB, then chunk_data_sz would overflow and
blkcnt would not be calculated correctly. Upgrade it to a u64 and cast
its multiplicands as well. Also fix bytes_written while we're at it.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
2023-10-19 00:15:40 +08:00
Lu Hui
8640db84b8 include: configs: light-c910.h: allow boot partition use other filesystem type 2023-09-03 01:40:15 +08:00
thead_admin
329e2581fe Linux_SDK_V1.2.1
Signed-off-by: thead_admin <occ_thead@service.alibaba.com>
2023-08-19 02:17:24 +08:00
Nekorouter
8337ee75f4 Update dtb name: add vendor name path to CONFIG_DEFAULT_FDT_FILE 2023-08-08 14:26:28 +08:00
Han Gao
a1d4fb05b7 chore: add ums gadget for light-val-a
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-08-02 02:58:25 +08:00
Han Gao
5de93f1630 chore: add 16g ci & modify SYS_PROMPT
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-08-02 02:58:25 +08:00
Icenowy Zheng
54c4a8493c add default fdt filenames
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Co-Authored-By: Han Gao <gaohan@iscas.ac.cn>
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-08-02 02:58:25 +08:00
Icenowy Zheng
5742f1a0d7 fix 16g dram print
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
2023-08-02 02:58:25 +08:00
Icenowy Zheng
1957dccb60 add config for 16G board
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
2023-08-02 02:58:25 +08:00
Icenowy Zheng
32c42cd31c add row16 option
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
2023-08-02 02:58:25 +08:00
Han Gao
6fb1286862 fix: disable custom logo
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-30 04:05:47 +08:00
Han Gao
ea605b77cf feat: update SDK1.2.0
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-30 03:57:28 +08:00
Spacefish
abc7bb33e3 Typo in spl.c
Small typo in comment
2023-07-25 10:05:19 +08:00
Alexandre Ghiti
5316611f0d riscv: Fix build against binutils 2.38
The following description is copied from the equivalent patch for the
Linux Kernel proposed by Aurelien Jarno:

>From version 2.38, binutils default to ISA spec version 20191213. This
means that the csr read/write (csrr*/csrw*) instructions and fence.i
instruction has separated from the `I` extension, become two standalone
extensions: Zicsr and Zifencei. As the kernel uses those instruction,
this causes the following build failure:

arch/riscv/cpu/mtrap.S: Assembler messages:
arch/riscv/cpu/mtrap.S:65: Error: unrecognized opcode `csrr a0,scause'
arch/riscv/cpu/mtrap.S:66: Error: unrecognized opcode `csrr a1,sepc'
arch/riscv/cpu/mtrap.S:67: Error: unrecognized opcode `csrr a2,stval'
arch/riscv/cpu/mtrap.S:70: Error: unrecognized opcode `csrw sepc,a0'

Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Christian Stewart <christian@paral.in>
Reviewed-by: Rick Chen <rick@andestech.com>
2023-07-24 06:14:09 +08:00
Han Gao
a75631c2e3 fix: unknown CSR 'mhcr' (arch/riscv/cpu/c9xx/cpu.c)
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-24 06:14:09 +08:00
Han Gao
5532ffee67 feat: add gcc-12 build
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-24 06:14:09 +08:00
Han Gao
94a1ac2308 fix: save mac address
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-14 20:30:10 +08:00
Han Gao
0cc8176254 feat: update slogan
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-13 01:33:27 +08:00
Han Gao
b69e053b49 feat: add extlinux boot
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-12 21:57:40 +08:00
Han Gao
3e234eecd6 feat: add ruyisdk logo
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-12 03:54:52 +08:00
Han Gao
f81b413992 fix: repair check mac vaild timing
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-07-12 02:52:40 +08:00
chainsx
d43b782d70 fix: fix and add ums gadget(usb mass storage gadget) 2023-07-07 11:55:19 +08:00
wu-yue-yu
d6c9182f62 fix: fix the problem of wrong overwritten mac address 2023-06-28 01:15:58 +08:00
ztd
b5768043c2 fix: set fixed mac addrs (#1)
* fix: set fixed mac addr
2023-05-15 19:19:21 +08:00
Han Gao
57dbac41bd feat: add ci build
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-05-10 02:36:47 +08:00
Han Gao
403553d697 fix: ftbfs
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-05-10 02:25:53 +08:00
Han Gao
0fd098d190 fix: fix bootargs
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-05-10 02:23:55 +08:00
t61230
09e2c3f93f ENV_SETTINGS 2023-04-06 13:34:05 +08:00
58 changed files with 4088 additions and 774 deletions

166
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,166 @@
name: thead-u-boot-build
on:
push:
tags:
- '*'
branches:
- '*'
pull_request:
workflow_dispatch:
schedule:
- cron: "0 2 * * *"
env:
xuantie_toolchain: https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395627867
toolchain_file_name: Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.1-20240115.tar.gz
mainline_toolchain: https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2024.04.12
mainline_toolchain_file_name: riscv64-glibc-ubuntu-22.04-gcc-nightly-2024.04.12-nightly.tar.gz
wget_alias: 'wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0'
ARCH: riscv
CROSS_COMPILE: riscv64-unknown-linux-gnu-
jobs:
build:
strategy:
fail-fast: false
matrix:
name: [thead-gcc, gcc-13]
runs-on: ubuntu-22.04
steps:
- name: Install software
run: |
sudo apt update && \
sudo apt install -y gdisk dosfstools g++-12-riscv64-linux-gnu build-essential \
libncurses-dev gawk flex bison openssl libssl-dev tree \
dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf device-tree-compiler
- name: Checkout uboot
uses: actions/checkout@v4
- name: uboot compile
run: |
mkdir output
if [[ ${{ matrix.name }} = "thead-gcc" ]]; then
${wget_alias} ${xuantie_toolchain}/${toolchain_file_name}
tar -xvf ${toolchain_file_name} -C /opt
export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.1/bin:$PATH"
else
${wget_alias} ${mainline_toolchain}/${mainline_toolchain_file_name}
tar -xvf ${mainline_toolchain_file_name} -C /opt
export PATH="/opt/riscv/bin:$PATH"
fi
${CROSS_COMPILE}gcc -v
pushd $PWD
make light_lpi4a_16g_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lpi4a-16g.bin
make clean
make light_lpi4a_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lpi4a.bin
make clean
make light_lpi4a_console_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lcon4a.bin
make clean
make light_lpi4a_console_16g_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lcon4a-16g.bin
make clean
make light_lpi4a_plastic_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-laptop4a.bin
make clean
make light_lpi4a_plastic_16g_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-laptop4a-16g.bin
make clean
make light_lpi4a_pocket_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-pocket4a.bin
make clean
make light_lpi4a_cluster_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lc4a.bin
make clean
make light_lpi4a_cluster_16g_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lc4a-16g.bin
make clean
make light_beagle_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-beagle.bin
make clean
make light_a_val_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-vala.bin
make clean
make light_milkv_meles_16g_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-meles-16g.bin
make clean
make light_milkv_meles_dualrank_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-meles.bin
make clean
make light_milkv_meles_singlerank_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-meles-4g.bin
# mainline support
make clean
make light_lpi4a_defconfig
sed -i 's#thead/light-lpi4a.dtb#thead/th1520-lichee-pi-4a.dtb#' .config
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lpi4a-main.bin
make clean
make light_lpi4a_16g_defconfig
sed -i 's#thead/light-lpi4a-16gb.dtb#thead/th1520-lichee-pi-4a-16g.dtb#' .config
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lpi4a-16g-main.bin
make clean
make light_lpi4a_cluster_defconfig
sed -i 's#thead/light-lpi4a-cluster.dtb#thead/th1520-lichee-cluster-4a.dtb#' .config
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lc4a-main.bin
make clean
make light_lpi4a_cluster_16g_defconfig
sed -i 's#thead/light-lpi4a-cluster-16gb.dtb#thead/th1520-lichee-cluster-4a-16g.dtb#' .config
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lc4a-16g-main.bin
# 8g emmc support
sed -i 's/name=swap,size=4096MiB,type=swap/name=swap,size=2MiB,type=swap/' include/configs/light-c910.h
make clean
make light_lpi4a_defconfig
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lpi4a_8gemmc.bin
make clean
make light_lpi4a_defconfig
sed -i 's#thead/light-lpi4a.dtb#thead/th1520-lichee-pi-4a.dtb#' .config
make -j$(nproc)
find . -name "u-boot-with-spl.bin" | xargs -I{} cp -av {} ${GITHUB_WORKSPACE}/output/u-boot-with-spl-lpi4a-main_8gemmc.bin
popd
tree ${GITHUB_WORKSPACE}/output
- name: 'Upload Artifact'
uses: actions/upload-artifact@v3
with:
name: thead-u-uboot-${{ matrix.name }}
path: output/*.bin
retention-days: 30
- name: 'Create release by tag'
uses: softprops/action-gh-release@v1
if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.name == 'thead-gcc' }}
with:
files: output/*.bin
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -119,6 +119,7 @@ config SANDBOX
select SPI
select SUPPORT_OF_CONTROL
select SYSRESET_CMD_POWEROFF if CMD_POWEROFF
select SUPPORT_EXTENSION_SCAN
imply BITREVERSE
select BLOBLIST
imply CMD_DM
@@ -152,6 +153,7 @@ config SANDBOX
imply PHYLIB
imply DM_MDIO
imply DM_MDIO_MUX
imply CMD_EXTENSION
config SH
bool "SuperH architecture"

View File

@@ -24,7 +24,16 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
CMODEL = medany
endif
ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \
RISCV_MARCH = $(ARCH_BASE)$(ARCH_A)$(ARCH_C)
# Newer binutils versions default to ISA spec version 20191213 which moves some
# instructions from the I extension to the Zicsr and Zifencei extensions.
toolchain-need-zicsr-zifencei := $(call cc-option-yn, -mabi=$(ABI) -march=$(RISCV_MARCH)_zicsr_zifencei)
ifeq ($(toolchain-need-zicsr-zifencei),y)
RISCV_MARCH := $(RISCV_MARCH)_zicsr_zifencei
endif
ARCH_FLAGS = -march=$(RISCV_MARCH) -mabi=$(ABI) \
-mcmodel=$(CMODEL)
PLATFORM_CPPFLAGS += $(ARCH_FLAGS)

View File

@@ -125,10 +125,11 @@ void icache_enable(void)
#ifdef CONFIG_SPL_BUILD
#ifdef CONFIG_SPL_RISCV_MMODE
#ifdef CONFIG_TARGET_LIGHT_C910
// mhcr is 0x7c1
asm volatile (
"csrr x29, mhcr\n\t"
"csrr x29, 0x7c1\n\t"
"ori x28, x29, 0x1\n\t"
"csrw mhcr, x28\n\t"
"csrw 0x7c1, x28\n\t"
);
#endif
#endif
@@ -141,9 +142,9 @@ void dcache_enable(void)
#ifdef CONFIG_SPL_RISCV_MMODE
#ifdef CONFIG_TARGET_LIGHT_C910
asm volatile (
"csrr x29, mhcr\n\t"
"ori x28, x29, 0x2\n\t"
"csrw mhcr, x28\n\t"
"csrr x29, 0x7c1\n\t"
"ori x28, x29, 0x2\n\t"
"csrw 0x7c1, x28\n\t"
);
#endif
#endif

View File

@@ -5,7 +5,9 @@ dtb-$(CONFIG_TARGET_SIFIVE_FU540) += hifive-unleashed-a00.dtb
dtb-$(CONFIG_TARGET_ICE_C910) += ice-c910.dtb
dtb-$(CONFIG_TARGET_LIGHT_EVB_MPW_C910) += light-evb-mpw-c910.dtb
dtb-$(CONFIG_TARGET_LIGHT_FPGA_FM_C910) += light-fpga-fm-c910.dtb
dtb-$(CONFIG_TARGET_LIGHT_C910) += light-a-ref.dtb light-b-ref.dtb light-a-val.dtb light-b-product.dtb light-a-product.dtb light-ant-ref.dtb light-beagle.dtb light-b-power.dtb light-lpi4a.dtb th1520-rvbook.dtb
dtb-$(CONFIG_TARGET_LIGHT_C910) += light-a-ref.dtb light-b-ref.dtb light-a-val.dtb light-b-product.dtb light-a-product.dtb light-ant-ref.dtb light-beagle.dtb light-b-power.dtb light-lpi4a.dtb light-milkv-meles.dtb
dtb-$(CONFIG_TARGET_LIGHT_C910) += light-lpi4a-laptop.dtb
dtb-$(CONFIG_TARGET_LIGHT_C910) += th1520-rvbook.dtb
targets += $(dtb-y)

View File

@@ -0,0 +1,46 @@
#include "light-lpi4a.dts"
/ {
};
&i2c1 {
clock-frequency = <400000>;
status = "okay";
pcal6408ahk_c: gpio@20 {
compatible = "nxp,pca9557";
reg = <0x18>;
gpio-controller;
#gpio-cells = <2>;
};
};
&i2c3 {
clock-frequency = <400000>;
status = "okay";
pcal6408ahk_d: gpio@20 {
compatible = "nxp,pca9557";
reg = <0x18>;
gpio-controller;
#gpio-cells = <2>;
};
};
&lcd_backlight {
pwms = <&pwm 0 50000>;
brightness-levels = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100>;
default-brightness-level = <2>;
};
&panel0 {
compatible = "ilitek,ili9881c";
status = "okay";
backlight = <&lcd_backlight>;
// 5v power cycle
// TODO: move into regulator
reset-gpios = <&pcal6408ahk_c 0 0>; /* active low */
/delete-property/ lcd-en-gpios;
/delete-property/ lcd-bias-en-gpios;
};

View File

@@ -8,6 +8,10 @@
#address-cells = <2>;
#size-cells = <2>;
config {
huben-gpio = <&gpio1_porta 16 0>;
};
memory@0 {
device_type = "memory";
reg = <0x0 0xc0000000 0x0 0x40000000>;
@@ -489,7 +493,7 @@
default-brightness-level = <7>;
};
jadard_jd9365da {
panel0: dsi_panel0 {
compatible = "jadard,jd9365da-h3";
backlight = <&lcd_backlight>;
reset-gpio = <&pcal6408ahk_d 7 0>;

View File

@@ -0,0 +1,654 @@
/dts-v1/;
#include <dt-bindings/pmic/light_pmic.h>
/ {
model = "Milk-V Meles";
compatible = "milkv,meles", "thead,c910_light";
#address-cells = <2>;
#size-cells = <2>;
config {
select-gpio = <&gpio1_porta 16 0>;
};
memory@0 {
device_type = "memory";
reg = <0x0 0xc0000000 0x0 0x40000000>;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
timebase-frequency = <3000000>;
u-boot,dm-pre-reloc;
cpu@0 {
device_type = "cpu";
reg = <0>;
status = "okay";
compatible = "riscv";
riscv,isa = "rv64imafdcvsu";
mmu-type = "riscv,sv39";
u-boot,dm-pre-reloc;
};
};
soc {
#address-cells = <2>;
#size-cells = <2>;
compatible = "simple-bus";
ranges;
u-boot,dm-pre-reloc;
intc: interrupt-controller@ffd8000000 {
compatible = "riscv,plic0";
reg = <0xff 0xd8000000 0x0 0x04000000>;
status = "disabled";
};
dummy_apb: apb-clock {
compatible = "fixed-clock";
clock-frequency = <62500000>;
clock-output-names = "dummy_apb";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_ahb: ahb-clock {
compatible = "fixed-clock";
clock-frequency = <250000000>;
clock-output-names = "core";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_spi: spi-clock {
compatible = "fixed-clock";
clock-frequency = <396000000>;
clock-output-names = "dummy_spi";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_qspi0: qspi0-clock {
compatible = "fixed-clock";
clock-frequency = <792000000>;
clock-output-names = "dummy_qspi0";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_uart_sclk: uart-sclk-clock {
compatible = "fixed-clock";
clock-frequency = <100000000>;
clock-output-names = "dummy_uart_sclk";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_i2c_icclk: i2c-icclk-clock {
compatible = "fixed-clock";
clock-frequency = <50000000>;
clock-output-names = "dummy_i2c_icclk";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_dpu_pixclk: dpu-pix-clock {
compatible = "fixed-clock";
clock-frequency = <74250000>;
clock-output-names = "dummy_dpu_pixclk";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
dummy_dphy_refclk: dphy-ref-clock {
compatible = "fixed-clock";
clock-frequency = <24000000>;
clock-output-names = "dummy_dpu_refclk";
#clock-cells = <0>;
u-boot,dm-pre-reloc;
};
serial@ffe7014000 {
compatible = "snps,dw-apb-uart";
reg = <0xff 0xe7014000 0x0 0x400>;
clocks = <&dummy_uart_sclk>;
clock-frequency = <100000000>;
clock-names = "baudclk";
reg-shift = <2>;
reg-io-width = <4>;
u-boot,dm-pre-reloc;
};
gmac0: ethernet@ffe7070000 {
compatible = "snps,dwmac";
reg = <0xff 0xe7070000 0x0 0x2000>;
clocks = <&dummy_apb>;
clock-names = "stmmaceth";
snps,pbl = <32>;
snps,fixed-burst;
phy-mode = "rgmii-id";
phy-handle = <&phy_88E1111_a>;
status = "okay";
mdio0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
phy_88E1111_a: ethernet-phy@1 {
reg = <0x1>;
};
};
};
emmc: sdhci@ffe7080000 {
compatible = "snps,dwcmshc-sdhci";
reg = <0xff 0xe7080000 0x0 0x10000>;
index = <0x0>;
clocks = <&dummy_ahb>;
clock-frequency = <198000000>;
clock-names = "core";
max-frequency = <198000000>;
sdhci-caps-mask = <0x0 0x1000000>;
mmc-hs400-1_8v;
non-removable;
no-sdio;
no-sd;
bus-width = <8>;
voltage= "1.8v";
pull_up;
io_fixed_1v8;
fifo-mode;
u-boot,dm-pre-reloc;
};
sdhci0: sd@ffe7090000 {
compatible = "snps,dwcmshc-sdhci";
reg = <0xff 0xe7090000 0x0 0x10000>;
index = <0x1>;
clocks = <&dummy_ahb>;
clock-frequency = <198000000>;
max-frequency = <198000000>;
sd-uhs-sdr104;
pull_up;
clock-names = "core";
bus-width = <4>;
voltage= "3.3v";
};
gpio2: gpio@ffe7f34000 {
compatible = "snps,dw-apb-gpio";
reg = <0xff 0xe7f34000 0x0 0x1000>;
clocks = <&dummy_apb>;
#address-cells = <1>;
#size-cells = <0>;
gpio2_porta: gpio-controller@0 {
compatible = "snps,dw-apb-gpio-port";
gpio-controller;
#gpio-cells = <2>;
snps,nr-gpios = <32>;
reg = <0>;
};
};
gpio0: gpio@ffec005000 {
compatible = "snps,dw-apb-gpio";
reg = <0xff 0xec005000 0x0 0x1000>;
clocks = <&dummy_apb>;
#address-cells = <1>;
#size-cells = <0>;
gpio0_porta: gpio-controller@0 {
compatible = "snps,dw-apb-gpio-port";
gpio-controller;
#gpio-cells = <2>;
snps,nr-gpios = <32>;
reg = <0>;
};
};
gpio1: gpio@ffec006000 {
compatible = "snps,dw-apb-gpio";
reg = <0xff 0xec006000 0x0 0x1000>;
clocks = <&dummy_apb>;
#address-cells = <1>;
#size-cells = <0>;
gpio1_porta: gpio-controller@0 {
compatible = "snps,dw-apb-gpio-port";
gpio-controller;
#gpio-cells = <2>;
snps,nr-gpios = <32>;
reg = <0>;
};
};
axiscr {
compatible = "thead,axiscr";
reg = <0xff 0xff004000 0x0 0x1000>;
lock-read = "okay";
lock-write = "okay";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
axiscr0: axisrc@0 {
device_type = "axiscr";
region = <0x00 0x00000000 0x00 0x80000000>; // 4KB align
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
};
axiscr1: axisrc@1 {
device_type = "axiscr";
region = <0x00 0x80000000 0x00 0x80000000>; // 4KB align
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
};
axiscr2: axisrc@2 {
device_type = "axiscr";
region = <0x01 0x00000000 0x00 0x80000000>; // 4KB align
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
};
};
axiparity {
compatible = "thead,axiparity";
reg = <0xff 0xff00c000 0x0 0x1000>;
lock = "okay";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
axiparity0: axiparity@0 {
device_type = "axiparity";
region = <0x00 0x00000000 0x01 0x0000000>; // 4KB align
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
};
axiparity1: axiparity@1 {
device_type = "axiparity";
region = <0x01 0x00000000 0x01 0x00000000>; // 4KB align
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
u-boot,dm-pre-reloc;
};
};
aon {
compatible = "thead,light-aon";
status = "okay";
wakeup-by-gpio-on;
wakeup-by-rtc-on;
pd: light-aon-pd {
compatible = "thead,light-aon-pd";
#power-domain-cells = <1>;
};
light-regu-reg {
compatible = "thead,light-dialog-pmic";
status = "okay";
soc_dvdd18_aon_reg: soc_dvdd18_aon {
regulator-name = "soc_dvdd18_aon";
regulator-boot-on;
regulator-always-on;
};
soc_avdd33_usb3_reg: soc_avdd33_usb3 {
regulator-name = "soc_avdd33_usb3";
regulator-boot-on;
regulator-always-on;
};
soc_dvdd08_aon_reg: soc_dvdd08_aon {
regulator-name = "soc_dvdd08_aon";
regulator-boot-on;
regulator-always-on;
};
soc_apcpu_dvdd_dvddm_reg: soc_apcpu_dvdd_dvddm {
regulator-name = "soc_apcpu_dvdd_dvddm";
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1570000>;
regulator-boot-on;
regulator-always-on;
};
soc_dvdd08_ddr_reg: soc_dvdd08_ddr {
regulator-name = "soc_dvdd08_ddr";
regulator-boot-on;
regulator-always-on;
};
soc_vdd_ddr_1v8_reg: soc_vdd_ddr_1v8 {
regulator-name = "soc_vdd_ddr_1v8";
regulator-boot-on;
regulator-always-on;
};
soc_vdd_ddr_1v1_reg: soc_vdd_ddr_1v1 {
regulator-name = "soc_vdd_ddr_1v1";
regulator-boot-on;
regulator-always-on;
};
soc_vdd_ddr_0v6_reg: soc_vdd_ddr_0v6 {
regulator-name = "soc_vdd_ddr_0v6";
regulator-boot-on;
regulator-always-on;
};
soc_dvdd18_ap_reg: soc_dvdd18_ap {
regulator-name = "soc_dvdd18_ap";
regulator-boot-on;
regulator-always-on;
};
soc_dvdd08_ap_reg: soc_dvdd08_ap {
regulator-name = "soc_dvdd08_ap";
regulator-boot-on;
regulator-always-on;
};
soc_avdd08_mipi_hdmi_reg: soc_avdd08_mipi_hdmi {
regulator-name = "soc_avdd08_mipi_hdmi";
regulator-boot-on;
regulator-always-on;
};
soc_avdd18_mipi_hdmi_reg: soc_avdd18_mipi_hdmi {
regulator-name = "soc_avdd18_mipi_hdmi";
regulator-boot-on;
regulator-always-on;
};
soc_dvdd33_emmc_reg: soc_dvdd33_emmc {
regulator-name = "soc_dvdd33_emmc";
regulator-boot-on;
regulator-always-on;
};
soc_dvdd18_emmc_reg: soc_dvdd18_emmc {
regulator-name = "soc_vdd18_emmc";
regulator-boot-on;
regulator-always-on;
};
soc_dovdd18_scan_reg: soc_dovdd18_scan {
regulator-name = "soc_dovdd18_scan";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <3600000>;
};
soc_vext_2v8_reg: soc_vext_2v8 {
regulator-name = "soc_vext_2v8";
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
soc_dvdd12_scan_reg: soc_dvdd12_scan {
regulator-name = "soc_dvdd12_scan";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <3600000>;
};
soc_avdd28_scan_en_reg: soc_avdd28_scan_en {
regulator-name = "soc_avdd28_scan_en";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
};
soc_avdd28_rgb_reg: soc_avdd28_rgb {
regulator-name = "soc_avdd28_rgb";
regulator-min-microvolt = <2200000>;
regulator-max-microvolt = <3475000>;
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
soc_dovdd18_rgb_reg: soc_dovdd18_rgb {
regulator-name = "soc_dovdd18_rgb";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <3600000>;
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
soc_dvdd12_rgb_reg: soc_dvdd12_rgb {
regulator-name = "soc_dvdd12_rgb";
regulator-min-microvolt = <400000>;
regulator-max-microvolt = <1675000>;
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
soc_avdd25_ir_reg: soc_avdd25_ir {
regulator-name = "soc_avdd25_ir";
regulator-min-microvolt = <2200000>;
regulator-max-microvolt = <3475000>;
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
soc_dovdd18_ir_reg: soc_dovdd18_ir {
regulator-name = "soc_dovdd18_ir";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <3600000>;
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
soc_dvdd12_ir_reg: soc_dvdd12_ir {
regulator-name = "soc_dvdd12_ir";
regulator-min-microvolt = <400000>;
regulator-max-microvolt = <1675000>;
regulator-boot-on;
regulator-always-on;
status = "disabled";
};
};
aon_pmic_config {
compatible = "thead,light-pmic-conf";
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
iic-config = <0 0 2>;
pmic_dev_0: pmic-dev@0 {
pmic-name = "dialog,da9063,v1";
pmic-addr = <0x5a 0x5b>;
pmic_wdt_on;
status = "okay";
};
pmic_dev_1: pmic-dev@1 {
pmic-name = "dialog,da9121,v1";
pmic-addr = <0x68>;
status = "okay";
};
regu_config_0 {
reg_info = <&soc_dvdd18_aon_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO3>;
};
};
regu_config_1 {
reg_info = <&soc_avdd33_usb3_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO9>;
};
};
regu_config_2 {
reg_info = <&soc_dvdd08_aon_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO2>;
};
};
regu_config_3 {
reg_info = <&soc_apcpu_dvdd_dvddm_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_BCORE1>;
auto_on_info = <0 0 800000>;
};
regu_id@1 {
pmic_dev = <&pmic_dev_0 DA9063_ID_BCORE2>;
auto_on_info = <1 0 800000>;
};
regu_id@2 {
pmic_dev = <&pmic_dev_0 DA9063_ID_BUCKIO>;
auto_on_info = <2 0 800000>;
};
coupling_info@0 {
negative-min;
info = <0 2 5 30>;
};
coupling_info@1 {
negative-min;
info = <1 2 5 30>;
};
};
regu_config_4 {
reg_info = <&soc_dvdd08_ddr_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_BUCKPERI>;
};
};
regu_config_5 {
reg_info = <&soc_vdd_ddr_1v8_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO4>;
};
};
regu_config_6 {
reg_info = <&soc_vdd_ddr_1v1_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_BUCKMEM>;
};
};
regu_config_7 {
reg_info = <&soc_vdd_ddr_0v6_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_BUCKPRO>;
};
};
regu_config_8 {
reg_info = <&soc_dvdd18_ap_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO11>;
};
};
regu_config_9 {
reg_info = <&soc_avdd08_mipi_hdmi_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO1>;
};
};
regu_config_10 {
reg_info = <&soc_avdd18_mipi_hdmi_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO5>;
};
};
regu_config_11 {
reg_info = <&soc_dvdd33_emmc_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO10>;
};
};
regu_config_12 {
reg_info = <&soc_dovdd18_scan_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO6>;
auto_on_info = <3 1 1800000>;
auto_off_info = <1 1>;
};
};
regu_config_13 {
reg_info = <&soc_dvdd12_scan_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO8>;
auto_on_info = <4 1 1200000>;
auto_off_info = <2 1>;
};
};
regu_config_14 {
reg_info = <&soc_avdd28_scan_en_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_LDO7>;
auto_on_info = <5 1 2800000>;
auto_off_info = <0 1>;
};
};
regu_config_15 {
reg_info = <&soc_dvdd08_ap_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_1 DA9121_ID_BUCK1>;
parent_pmic_dev = <&pmic_dev_0 2 0>;
};
};
regu_config_16 {
reg_info = <&soc_dvdd18_emmc_reg>;
status = "okay";
regu_id@0 {
pmic_dev = <&pmic_dev_0 DA9063_ID_GPIO7>;
parent_pmic_dev = <&pmic_dev_0 7 0>;
};
};
};
};
};
chosen {
bootargs = "console=ttyS0,115200";
stdout-path = "/soc/serial@ffe7014000:115200";
};
};

View File

@@ -90,6 +90,16 @@ static inline int __test_and_clear_bit(int nr, void *addr)
return retval;
}
static inline int test_and_clear_bit(int nr, volatile void * addr)
{
unsigned long flags = 0;
int out;
out = __test_and_clear_bit(nr, addr);
return out;
}
static inline int __test_and_change_bit(int nr, void *addr)
{
int mask, retval;

View File

@@ -110,7 +110,7 @@ void next_stage(void)
bool has_reset_sample(ulong dtb_addr)
{
int node_offset;
node_offset = fdt_path_offset(dtb_addr, "/soc/reset-sample");
node_offset = fdt_path_offset((void *)dtb_addr, "/soc/reset-sample");
if (node_offset < 0) {
printf("## fdt has no reset_sample\n");
return false;
@@ -160,8 +160,8 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
announce_and_cleanup(fake);
_load_start = kernel;
_dtb_addr = images->ft_addr;
_load_start = (ulong)kernel;
_dtb_addr = (ulong)(images->ft_addr);
_dyn_info_addr = (ulong)&opensbi_info;
if (!has_reset_sample(_dtb_addr)) {
opensbi_info.magic = FW_DYNAMIC_INFO_MAGIC_VALUE;

View File

@@ -6,6 +6,7 @@ else
dtb-$(CONFIG_SANDBOX) += sandbox.dtb
endif
dtb-$(CONFIG_UT_DM) += test.dtb
dtb-$(CONFIG_CMD_EXTENSION) += overlay0.dtbo overlay1.dtbo
targets += $(dtb-y)

View File

@@ -0,0 +1,9 @@
/dts-v1/;
/plugin/;
&{/buttons} {
btn3 {
gpios = <&gpio_a 5 0>;
label = "button3";
};
};

View File

@@ -0,0 +1,9 @@
/dts-v1/;
/plugin/;
&{/buttons} {
btn4 {
gpios = <&gpio_a 5 0>;
label = "button4";
};
};

View File

@@ -12,6 +12,9 @@
#include <os.h>
#include <asm/test.h>
#include <asm/u-boot-sandbox.h>
#include <malloc.h>
#include <extension_board.h>
/*
* Pointer to initial global data area
@@ -58,6 +61,26 @@ int board_init(void)
return 0;
}
#ifdef CONFIG_CMD_EXTENSION
int extension_board_scan(struct list_head *extension_list)
{
struct extension *extension;
int i;
for (i = 0; i < 2; i++) {
extension = calloc(1, sizeof(struct extension));
snprintf(extension->overlay, sizeof(extension->overlay), "overlay%d.dtbo", i);
snprintf(extension->name, sizeof(extension->name), "extension board %d", i);
snprintf(extension->owner, sizeof(extension->owner), "sandbox");
snprintf(extension->version, sizeof(extension->version), "1.1");
snprintf(extension->other, sizeof(extension->other), "Fictionnal extension board");
list_add_tail(&extension->list, extension_list);
}
return i;
}
#endif
#ifdef CONFIG_BOARD_LATE_INIT
int board_late_init(void)
{

View File

@@ -138,13 +138,17 @@ config TARGET_LIGHT_FM_C910_B_POWER
bool "light fullmask for light-b-power board "
default n
config TARGET_LIGHT_FM_C910_MILKV_MELES
bool "light fullmask for Milk-V Meles board "
default n
config SYS_TEXT_BASE
default 0xc0000000 if RISCV_MMODE
default 0x00200000 if RISCV_SMODE
config SPL_TEXT_BASE
hex
default 0xffe0000800
default 0xffe0000000
config SPL_MAX_SIZE
hex

View File

@@ -10,6 +10,7 @@
#include <usb.h>
#include <usb/xhci.h>
#include <cpu_func.h>
#include <asm/gpio.h>
#include <abuf.h>
#include "sec_library.h"
@@ -57,8 +58,6 @@ int board_usb_cleanup(int index, enum usb_init_type init)
int xhci_hcd_init(int index, struct xhci_hccr **hccr, struct xhci_hcor **hcor)
{
int ret = board_usb_init(index, USB_INIT_HOST);
if (ret != 0) {
puts("Failed to initialize board for USB\n");
@@ -249,6 +248,35 @@ int do_bootslave(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
}
#endif
static void light_c910_set_gpio_output_high(void)
{
ofnode node;
struct gpio_desc select_gpio;
printf("%s: trying to set gpio output high\n", __func__);
node = ofnode_path("/config");
if (!ofnode_valid(node)) {
printf("%s: no /config node?\n", __func__);
return;
}
if (gpio_request_by_name_nodev(node, "select-gpio", 0,
&select_gpio, GPIOD_IS_OUT)) {
printf("%s: could not find a /config/select-gpio\n", __func__);
return;
}
dm_gpio_set_value(&select_gpio, 1);
}
int misc_init_r(void)
{
light_c910_set_gpio_output_high();
return 0;
}
#ifdef CONFIG_BOARD_RNG_SEED
const char pre_gen_seed[128] = {211, 134, 226, 116, 1, 13, 224, 196, 88, 213, 188, 219, 128, 41, 231, 228, 129, 123, 173, 234, 219, 79, 152, 154, 169, 27, 183, 166, 52, 21, 118, 7, 155, 89, 124, 156, 102, 92, 96, 190, 49, 28, 154, 177, 69, 129, 149, 199, 253, 66, 177, 216, 146, 73, 114, 59, 100, 41, 225, 152, 62, 88, 160, 217, 177, 28, 117, 23, 120, 213, 213, 169, 242, 111, 90, 55, 241, 239, 254, 238, 50, 175, 198, 196, 248, 56, 255, 92, 97, 224, 245, 160, 56, 149, 121, 233, 177, 239, 0, 41, 196, 214, 210, 182, 69, 44, 238, 54, 27, 236, 36, 77, 156, 234, 17, 148, 34, 16, 241, 132, 241, 230, 36, 41, 123, 157, 19, 44};
/* Use hardware rng to seed Linux random. */

View File

@@ -1146,7 +1146,7 @@ void ap_mipi_dsi1_clk_endisable(bool en)
writel(cfg1, (void __iomem *)AP_DPU1_PLL_CFG1);
}
#if defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE) || defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_B)
#if defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE) || defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_B) || defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || defined (CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES)
static void ap_multimedia_div_num_set(enum multimedia_div_type type, unsigned int div_num)
{
unsigned long div_reg;
@@ -1305,7 +1305,7 @@ int clk_config(void)
/* The boards other than the LightA board perform the bus down-speed operation */
#if defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE) || defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_B)
#if defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE) || defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER) || defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_B) || defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || defined (CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES)
ap_multimedia_div_num_set(VI_MIPI_CSI0_DIV, 12); /* Input frquency: 2376MHZ */
ap_multimedia_div_num_set(VI_ISP0_CORE_DIV, 12); /* Input frquency: 2376MHZ */
ap_multimedia_div_num_set(VI_ISP1_CORE_DIV, 12); /* Input frquency: 2376MHZ */

View File

@@ -39,6 +39,7 @@
#define GMAC0_APB3S_BADDR 0xffec003000
#define GMAC1_APB3S_BADDR 0xffec004000
static uint64_t apb3s_baddr;
extern int check_image_board_id(uint8_t *image_data);
@@ -826,6 +827,7 @@ static void light_iopin_init(void)
{
return;
}
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_A)
static void light_iopin_init(void)
{
@@ -1005,6 +1007,7 @@ static void light_iopin_init(void)
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
}
#elif defined ( CONFIG_TARGET_LIGHT_FM_C910_VAL_B) || defined ( CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
static void light_iopin_init(void)
{
@@ -1410,7 +1413,8 @@ static void light_iopin_init(void)
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
}
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE)
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF)
static void light_iopin_init(void)
{
/* aon-padmux config */
@@ -1563,7 +1567,7 @@ static void light_iopin_init(void)
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_GPIO2
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_GPIO3
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_RST_N
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PU,2); ///KEY1
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2); ///KEY1
light_pin_mux(SDIO0_WPRTN,3);
@@ -1580,7 +1584,7 @@ static void light_iopin_init(void)
light_pin_mux(GPIO3_2,1);
light_pin_mux(GPIO3_3,0);
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PU, 0x2); ///NC
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
@@ -1883,6 +1887,565 @@ static void light_iopin_init(void)
light_pin_cfg(GMAC0_COL, PIN_SPEED_NORMAL, PIN_PU, 2);
light_pin_cfg(GMAC0_CRS, PIN_SPEED_NORMAL, PIN_PU, 2);
}
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE)
static void light_iopin_init(void)
{
/* P8_03 (Ball:J34) GPIO1_21_MUX*/
light_pin_mux(GPIO1_21,3);
light_pin_cfg(GPIO1_21, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_04 (Ball:J35) GPIO1_22_MUX*/
light_pin_mux(GPIO1_22,3);
light_pin_cfg(GPIO1_22, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_05 (Ball:K32) GPIO1_23_MUX*/
light_pin_mux(GPIO1_23,3);
light_pin_cfg(GPIO1_23, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_06 (Ball:K33) GPIO1_24_MUX*/
light_pin_mux(GPIO1_24,3);
light_pin_cfg(GPIO1_24, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_07 (Ball:K34) GPIO1_25_MUX*/
light_pin_mux(GPIO1_25,3);
light_pin_cfg(GPIO1_25, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_08 (Ball:K35) GPIO1_26_MUX*/
light_pin_mux(GPIO1_26,0);
light_pin_cfg(GPIO1_26, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_09 (Ball:K36) GPIO1_27_MUX*/
light_pin_mux(GPIO1_27,0);
light_pin_cfg(GPIO1_27, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_10 (Ball:K37) GPIO1_28_MUX*/
light_pin_mux(GPIO1_28,0);
light_pin_cfg(GPIO1_28, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_11 (Ball:L32) GPIO1_29_MUX*/
light_pin_mux(GPIO1_29,0);
light_pin_cfg(GPIO1_29, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_12 (Ball:L33) GPIO1_30_MUX*/
light_pin_mux(GPIO1_30,0);
light_pin_cfg(GPIO1_30, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_13 (Ball:C6) GPIO3_2_MUX*/
light_pin_mux(GPIO3_2,0);
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_14 (Ball:E29) CLK_OUT_3_MUX*/
light_pin_mux(CLK_OUT_3,3);
light_pin_cfg(CLK_OUT_3, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_15 (Ball:A6) GPIO3_0_MUX*/
light_pin_mux(GPIO3_0,0);
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_16 (Ball:F34) GPIO0_20_MUX*/
light_pin_mux(GPIO0_20,0);
light_pin_cfg(GPIO0_20, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_17 (Ball:B6) GPIO3_1_MUX*/
light_pin_mux(GPIO3_1,0);
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_18 (Ball:B34) GPIO1_5_MUX*/
light_pin_mux(GPIO1_5,0);
light_pin_cfg(GPIO1_5, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_19 (Ball:D6) GPIO3_3_MUX*/
light_pin_mux(GPIO3_3,0);
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_20 (Ball:C34) GPIO1_6_MUX*/
light_pin_mux(GPIO1_6,0);
light_pin_cfg(GPIO1_6, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_21 (Ball:D34) GPIO1_7_MUX*/
light_pin_mux(GPIO1_7,0);
light_pin_cfg(GPIO1_7, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_22 (Ball:B35) GPIO1_8_MUX*/
light_pin_mux(GPIO1_8,0);
light_pin_cfg(GPIO1_8, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_23 (Ball:A36) GPIO1_9_MUX*/
light_pin_mux(GPIO1_9,0);
light_pin_cfg(GPIO1_9, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_24 (Ball:B36) GPIO1_10_MUX*/
light_pin_mux(GPIO1_10,0);
light_pin_cfg(GPIO1_10, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_25 (Ball:B37) GPIO1_11_MUX*/
light_pin_mux(GPIO1_11,0);
light_pin_cfg(GPIO1_11, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_26 (Ball:C36) GPIO1_12_MUX*/
light_pin_mux(GPIO1_12,0);
light_pin_cfg(GPIO1_12, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_27 (Ball:D37) GPIO1_15_MUX*/
light_pin_mux(GPIO1_15,0);
light_pin_cfg(GPIO1_15, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_28 (Ball:E34) GPIO1_16_MUX*/
light_pin_mux(GPIO1_16,0);
light_pin_cfg(GPIO1_16, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_29 (Ball:D36) GPIO1_14_MUX*/
light_pin_mux(GPIO1_14,0);
light_pin_cfg(GPIO1_14, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_30 (Ball:D35) GPIO1_13_MUX*/
light_pin_mux(GPIO1_13,0);
light_pin_cfg(GPIO1_13, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_31 (Ball:D33) GPIO1_3_MUX*/
light_pin_mux(GPIO1_3,0);
light_pin_cfg(GPIO1_3, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_32 (Ball:A34) GPIO1_4_MUX*/
light_pin_mux(GPIO1_4,0);
light_pin_cfg(GPIO1_4, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_33 (Ball:C33) GPIO1_2_MUX*/
light_pin_mux(GPIO1_2,0);
light_pin_cfg(GPIO1_2, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_34 (Ball:E32) GPIO1_0_MUX*/
light_pin_mux(GPIO1_0,0);
light_pin_cfg(GPIO1_0, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_35 (Ball:A32) GPIO1_1_MUX*/
light_pin_mux(GPIO1_1,0);
light_pin_cfg(GPIO1_1, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_36 (Ball:D32) GPIO0_31_MUX*/
light_pin_mux(GPIO0_31,0);
light_pin_cfg(GPIO0_31, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_37 (Ball:B32) GPIO0_29_MUX*/
light_pin_mux(GPIO0_29,0);
light_pin_cfg(GPIO0_29, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_38 (Ball:C32) GPIO0_30_MUX*/
light_pin_mux(GPIO0_30,0);
light_pin_cfg(GPIO0_30, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_39 (Ball:D31) GPIO0_27_MUX*/
light_pin_mux(GPIO0_27,0);
light_pin_cfg(GPIO0_27, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_40 (Ball:E31) GPIO0_28_MUX*/
light_pin_mux(GPIO0_28,0);
light_pin_cfg(GPIO0_28, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_41 (Ball:F30) GPIO0_25_MUX*/
light_pin_mux(GPIO0_25,0);
light_pin_cfg(GPIO0_25, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_42 (Ball:C31) GPIO0_26_MUX*/
light_pin_mux(GPIO0_26,0);
light_pin_cfg(GPIO0_26, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_43 (Ball:C30) GPIO0_23_MUX*/
light_pin_mux(GPIO0_23,0);
light_pin_cfg(GPIO0_23, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_44 (Ball:D30) GPIO0_24_MUX*/
light_pin_mux(GPIO0_24,0);
light_pin_cfg(GPIO0_24, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_45 (Ball:F36) GPIO0_21_MUX*/
light_pin_mux(GPIO0_21,0);
light_pin_cfg(GPIO0_21, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P8_46 (Ball:D29) GPIO0_22_MUX*/
light_pin_mux(GPIO0_22,0);
light_pin_cfg(GPIO0_22, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_01 - GND */
/* P9_02 - GND */
/* P9_03 - VOUT_3V3 */
/* P9_04 - VOUT_3V3 */
/* P9_05 - VIN */
/* P9_06 - VIN */
/* P9_07 - VOUT_SYS */
/* P9_08 - VOUT_SYS */
/* P9_09 - ONKEY# */
/* P9_10 - RESET# */
/* P9_11 (Ball:M32) UART1_TXD_MUX*/
light_pin_mux(UART1_TXD,3);
light_pin_cfg(UART1_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_12 (Ball:H1) QSPI0_CSN0_MUX*/
light_pin_mux(QSPI0_CSN0,3);
light_pin_cfg(QSPI0_CSN0, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_13 (Ball:M33) UART1_RXD_MUX*/
light_pin_mux(UART1_RXD,3);
light_pin_cfg(UART1_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_14 (Ball:K3) QSPI0_D1_MISO_MUX*/
light_pin_mux(QSPI0_D1_MISO,3);
light_pin_cfg(QSPI0_D1_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_15 (Ball:K2) QSPI0_D2_WP_MUX*/
light_pin_mux(QSPI0_D2_WP,3);
light_pin_cfg(QSPI0_D2_WP, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_16 (Ball:J3) QSPI0_D0_MOSI_MUX*/
light_pin_mux(QSPI0_D0_MOSI,3);
light_pin_cfg(QSPI0_D0_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_17 (Ball:H32) QSPI1_CSN0_MUX*/
light_pin_mux(QSPI1_CSN0,3);
light_pin_cfg(QSPI1_CSN0, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_18 (Ball:G35) QSPI1_D0_MOSI_MUX*/
light_pin_mux(QSPI1_D0_MOSI,3);
light_pin_cfg(QSPI1_D0_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_19 (Ball:G4) I2C2_SCL_MUX*/
light_pin_mux(I2C2_SCL,3);
light_pin_cfg(I2C2_SCL, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_20 (Ball:G3) I2C2_SDA_MUX*/
light_pin_mux(I2C2_SDA,3);
light_pin_cfg(I2C2_SDA, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_21 (Ball:G34) QSPI1_D1_MISO_MUX*/
light_pin_mux(QSPI1_D1_MISO,3);
light_pin_cfg(QSPI1_D1_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_22 (Ball:H34) QSPI1_SCLK_MUX*/
light_pin_mux(QSPI1_SCLK,3);
light_pin_cfg(QSPI1_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_23 (Ball:K1) QSPI0_D3_HOLD_MUX*/
light_pin_mux(QSPI0_D3_HOLD,3);
light_pin_cfg(QSPI0_D3_HOLD, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_24 (Ball:G33) QSPI1_D2_WP_MUX*/
light_pin_mux(QSPI1_D2_WP,3);
light_pin_cfg(QSPI1_D2_WP, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_25 (Ball:F5) GPIO2_18_MUX*/
light_pin_mux(GPIO2_18,0);
light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_26 (Ball:F37) QSPI1_D3_HOLD_MUX*/
light_pin_mux(QSPI1_D3_HOLD,3);
light_pin_cfg(QSPI1_D3_HOLD, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_27 (Ball:E4) GPIO2_19_MUX*/
light_pin_mux(GPIO2_19,0);
light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_28 (Ball:E3) SPI_CSN_MUX*/
light_pin_mux(SPI_CSN,3);
light_pin_cfg(SPI_CSN, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_29 (Ball:F1) SPI_MISO_MUX*/
light_pin_mux(SPI_MISO,3);
light_pin_cfg(SPI_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_30 (Ball:F2) SPI_MOSI_MUX*/
light_pin_mux(SPI_MOSI,3);
light_pin_cfg(SPI_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_31 (Ball:D3) SPI_SCLK_MUX*/
light_pin_mux(SPI_SCLK,3);
light_pin_cfg(SPI_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_32 - GND */
/* P9_33 - ADC_VIN_CH4 */
/* P9_34 - GND */
/* P9_35 - ADC_VIN_CH6 */
/* P9_36 - ADC_VIN_CH5 */
/* P9_37 - ADC_VIN_CH2 */
/* P9_38 - ADC_VIN_CH3 */
/* P9_39 - ADC_VIN_CH0 */
/* P9_39 - ADC_VIN_CH1 */
/* P9_41 (Ball:D2) GPIO2_13_MUX*/
light_pin_mux(GPIO2_13,0);
light_pin_cfg(GPIO2_13, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_42 (Ball:H3) QSPI0_SCLK_MUX*/
light_pin_mux(QSPI0_SCLK,3);
light_pin_cfg(QSPI0_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
/* P9_43 - GND */
/* P9_44 - GND */
/* P9_45 - GND */
/* P9_46 - GND */
/* RTL8211F-VD-CG */
light_pin_mux(GMAC0_COL,3);
light_pin_mux(GMAC0_CRS,3);
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
/* PMIC */
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(AOGPIO_14,0);
light_pin_mux(AOGPIO_15,0);
/* Debug port */
light_pin_mux(AOGPIO_12,0xF); // TXD
light_pin_mux(AOGPIO_13,0xF); // RXD
/* LEDs */
light_pin_mux(AUDIO_PA8,3);
light_pin_cfg(AUDIO_PA8,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(AUDIO_PA9,3);
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(AUDIO_PA10,3);
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(AUDIO_PA11,3);
light_pin_cfg(AUDIO_PA11,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(AUDIO_PA12,3);
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
/* Boot select*/
/* SD boot button*/
light_pin_mux(CLK_OUT_0,3);
light_pin_cfg(CLK_OUT_0,PIN_SPEED_NORMAL,PIN_PD,2);
/* NC */
light_pin_mux(CLK_OUT_1,3);
light_pin_cfg(CLK_OUT_1,PIN_SPEED_NORMAL,PIN_PD,2);
/* USB boot button*/
light_pin_mux(CLK_OUT_2,3);
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2);
/*mikroBUS pinmuxing*/
/*mikroBUS PWM*/
light_pin_mux(QSPI0_CSN1,3); // MB_PWM
light_pin_cfg(QSPI0_CSN1,PIN_SPEED_NORMAL,PIN_PN,2);
/*mikroBUS GPIO*/
light_pin_mux(AUDIO_PA3,3); // MB_RST
light_pin_mux(GPIO2_21,0); // MB_INT
light_pin_cfg(AUDIO_PA3,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2);
/*mikroBUS UART*/
light_pin_mux(UART3_RXD,3); // MB_RXD
light_pin_mux(UART3_TXD,3); // MB_TXD
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
/*mikroBUS SPI*/
light_pin_mux(GPIO2_20,3); // MB_CS
light_pin_mux(SPI_SCLK,3); // MB_SCK
light_pin_mux(SPI_MISO,3); // MB_MOSI
light_pin_mux(SPI_MOSI,3); // MB_MISO
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(SPI_MISO,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(SPI_MOSI,PIN_SPEED_NORMAL,PIN_PN,2);
/*mikroBUS I2C*/
light_pin_mux(GPIO0_18,0); // MB_SCL
light_pin_mux(GPIO0_19,0); // MB_SDA
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
/* CSI0 */
light_pin_mux(GPIO2_23,0); // CSI0
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
/* CSI1 */
light_pin_mux(GPIO2_24,0); // CSI1
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
/* EEPROM */
light_pin_mux(GPIO2_22,0); // EEPROM
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
/* AM6203BM */
light_pin_mux(SDIO1_WPRTN,3);
light_pin_mux(SDIO1_DETN,3);
light_pin_mux(GPIO2_25,0);
light_pin_mux(GPIO2_30,0);
light_pin_mux(GPIO2_31,0);
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_30,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_31,PIN_SPEED_NORMAL,PIN_PU,2);
//BT hardware flow control uart
light_pin_cfg(UART4_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
light_pin_cfg(UART4_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
light_pin_cfg(UART4_CTSN, PIN_SPEED_NORMAL, PIN_PN, 2);
light_pin_cfg(UART4_RTSN, PIN_SPEED_NORMAL, PIN_PN, 2);
}
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES)
static void light_iopin_init(void)
{
/* aon-padmux config */
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_mux(AOGPIO_7,3);
light_pin_mux(AOGPIO_8,3);
light_pin_mux(AOGPIO_9,3);
light_pin_mux(AOGPIO_10,3);
light_pin_mux(AOGPIO_11,0);
light_pin_mux(AOGPIO_12,1);
light_pin_mux(AOGPIO_13,1);
light_pin_mux(AOGPIO_14,0);
light_pin_mux(AOGPIO_15,0);
light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(AUDIO_PA9,3);
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(AUDIO_PA10,3);
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(AUDIO_PA12,3);
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(AUDIO_PA13,0);
/*ap-padmux on left/top */
light_pin_mux(QSPI1_CSN0,3);
light_pin_mux(QSPI1_D2_WP,1);
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,0xF);
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8);
light_pin_mux(I2C0_SCL,0);
light_pin_mux(I2C0_SDA,0);
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_mux(UART3_TXD,1);
light_pin_mux(UART3_RXD,1);
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(GPIO0_18,1);
light_pin_mux(GPIO0_19,1);
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_mux(GPIO0_20,0);
light_pin_mux(GPIO0_21,0);
light_pin_mux(GPIO0_22,1);
light_pin_mux(GPIO0_23,1);
light_pin_mux(GPIO0_24,1);
light_pin_mux(GPIO0_25,1);
light_pin_mux(GPIO0_26,1);
light_pin_mux(GPIO0_27,0);
light_pin_mux(GPIO0_28,0);
light_pin_mux(GPIO0_29,0);
light_pin_mux(GPIO0_30,0);
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(GPIO1_0,1);
light_pin_mux(GPIO1_1,1);
light_pin_mux(GPIO1_2,1);
light_pin_mux(GPIO1_3,1);
light_pin_mux(GPIO1_4,1);
light_pin_mux(GPIO1_9,0);
light_pin_mux(GPIO1_10,0);
light_pin_mux(GPIO1_11,0);
light_pin_mux(GPIO1_12,0);
light_pin_mux(GPIO1_13,0);
light_pin_mux(GPIO1_14,0);
light_pin_mux(GPIO1_15,0);
light_pin_mux(GPIO1_16,0);
light_pin_mux(GPIO1_21,3);
light_pin_mux(GPIO1_22,3);
light_pin_mux(GPIO1_23,3);
light_pin_mux(GPIO1_24,3);
light_pin_mux(GPIO1_25,3);
light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_22,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO1_26,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(CLK_OUT_0,1);
light_pin_mux(CLK_OUT_1,1);
light_pin_mux(CLK_OUT_3,1);
light_pin_mux(CLK_OUT_2,3);
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2);
/*ap-pdmux on righ/top*/
light_pin_mux(QSPI0_SCLK,3);
light_pin_mux(QSPI0_CSN0,3);
light_pin_mux(QSPI0_CSN1,3);
light_pin_mux(QSPI0_D0_MOSI,3);
light_pin_mux(QSPI0_D1_MISO,3);
light_pin_mux(QSPI0_D2_WP,3);
light_pin_mux(QSPI0_D3_HOLD,3);
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
light_pin_mux(I2C3_SCL,0);
light_pin_mux(I2C3_SDA,0);
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PU,4);
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PU,4);
light_pin_mux(SPI_CSN,1);
light_pin_cfg(SPI_CSN,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(GPIO2_18,0);
light_pin_mux(GPIO2_19,0);
light_pin_mux(GPIO2_20,0);
light_pin_mux(GPIO2_21,0);
light_pin_mux(GPIO2_22,0);
light_pin_mux(GPIO2_23,0);
light_pin_mux(GPIO2_24,0);
light_pin_mux(GPIO2_25,0);
light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(SDIO0_WPRTN,3);
light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(SDIO1_WPRTN,3);
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_mux(SDIO1_DETN,3);
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2);
light_pin_mux(GPIO2_30,0);
light_pin_mux(GPIO2_31,0);
light_pin_mux(GPIO3_0,0);
light_pin_mux(GPIO3_1,0);
light_pin_mux(GPIO3_2,1);
light_pin_mux(GPIO3_3,1);
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2);
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2);
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2);
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_mux(GMAC0_COL,3);
light_pin_mux(GMAC0_CRS,3);
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
/* GMAC0 pad drive strength configurate to 0xF */
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
}
#else
static void light_iopin_init(void)
@@ -2062,10 +2625,10 @@ int board_init(void)
static void light_usb_boot_check(void)
{
int boot_mode;
uchar env_enetaddr[6]={0};
uchar env_enet1addr[6]={0};
uchar env_enetaddr[6];
uchar env_enet1addr[6];
int env_ethaddr_flag,env_eth1addr_flag;
int boot_mode;
int ret = 0;
boot_mode = readl((void *)SOC_OM_ADDRBASE) & 0x7;
@@ -2081,31 +2644,49 @@ static void light_usb_boot_check(void)
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
env_set("usb_fastboot", "yes");
#endif
/*Get this version ethaddr(mac addr) env,which follows one board, trans to next version env*/
/* ensure flashing img not to lose mac address on ramfs mode */
env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
run_command("env default -a -f", 0);
/*If mac addr in last version env is valid, before save,inherit env mac addr */
if(env_ethaddr_flag){
if (env_ethaddr_flag)
eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
run_command("printenv ethaddr",0);
}else{
printf("env ethaddr not exist or invalid\n");
}
if(env_eth1addr_flag){
if (env_eth1addr_flag)
eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
run_command("printenv eth1addr",0);
}else{
printf("env eth1addr not exist or invalid\n");
}
run_command("env save", 0);
env_save();
run_command("run gpt_partition", 0);
run_command("fastboot usb 0", 0);
}
static void light_mac_vaild_check(void)
{
uchar env_enetaddr[6];
uchar env_enet1addr[6];
int env_ethaddr_flag,env_eth1addr_flag;
/*Get this version ethaddr(mac addr) env,which follows one board, trans to next version env*/
env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
if (!env_ethaddr_flag || !env_eth1addr_flag) {
net_random_ethaddr(env_enetaddr);
if (env_enetaddr[5] == (uchar)(0xff)) {
env_enetaddr[5] = 0xfe;
}
eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
env_enetaddr[5] += 0x01;
eth_env_set_enetaddr_by_index("eth", 1, env_enetaddr);
printf("Use random addr as fixed mac addr\n");
env_save();
}
printf("ethaddr: %s\n", env_get("ethaddr"));
printf("eth1addr: %s\n", env_get("eth1addr"));
return;
}
int board_late_init(void)
{
light_usb_boot_check();
@@ -2117,19 +2698,18 @@ int board_late_init(void)
nonsec_upgrade_thread();
sec_firmware_version_dump();
#endif
light_mac_vaild_check();
ap_peri_clk_disable();
#ifdef CONFIG_MCU_HC32fX
mcu_poweron();
mcu_poweron();
#endif
#ifdef CONFIG_DM_CHARGE_DISPLAY
charge_display();
charge_display();
#endif
update_sn();
update_mac();
return 0;
}

View File

@@ -136,7 +136,7 @@ static const struct regulator_t g_apcpu_regu_id_list[] = {
REGU_ID_DEF(IIC_IDX_AONIIC,APCPU_REGU_VDDM,0x31,0x39,0,1,800000,600000,3500000,12500,1),
},
};
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_A_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF) || (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || defined(CONFIG_TARGET_LIGHT_FM_C910_RVBOOK)
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_A_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF) || (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || defined (CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES) || defined(CONFIG_TARGET_LIGHT_FM_C910_RVBOOK)
/**
* board for ant-ref
*
@@ -955,7 +955,7 @@ int pmic_reset_apcpu_voltage(void)
return ret;
return 0;
}
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_A_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF)|| (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || defined(CONFIG_TARGET_LIGHT_FM_C910_RVBOOK)
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_A_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF)|| (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE) || defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || defined (CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES) || defined(CONFIG_TARGET_LIGHT_FM_C910_RVBOOK)
int pmic_reset_apcpu_voltage(void)
{
int ret = -1;

View File

@@ -3,6 +3,7 @@
#include "../include/common_lib.h"
#include "../include/ddr_common_func.h"
#include "../include/ddr_retention.h"
#include "../include/pinmux.h"
DDR_SYSREG_REG_SW_REG_S ddr_sysreg;
@@ -48,7 +49,7 @@ int get_ddr_rank_number() {
#ifdef CONFIG_DDR_MSG
DDR_DEBUG("unsupported ddr rank type!!!\n");
#endif
return NULL;
return 0;
#endif
}

View File

@@ -1,6 +1,7 @@
#include "../include/common_lib.h"
#include "../include/ddr_common_func.h"
#include "../include/ddr_retention.h"
#include "../include/pinmux.h"
/*
/// data structure to store register address, value pairs

View File

@@ -338,37 +338,37 @@ int boundary_verify(unsigned long boundary) {
phys_addr_t verify_addr4 = (phys_addr_t)boundary + CONFIG_SYS_SDRAM_BASE;
// verify data accessing result firstly
writel(MAGIC_DATA2, verify_addr);
writel(MAGIC_DATA2, (void *)verify_addr);
invalidate_dcache_range(verify_addr, verify_addr + CONFIG_SYS_CACHELINE_SIZE);
if (readl(verify_addr) != MAGIC_DATA2) {
if (readl((void *)verify_addr) != MAGIC_DATA2) {
printf("ddr rw test failed\n");
return -1;
}
writel(MAGIC_DATA, verify_addr); // writing at beginning
writel(MAGIC_DATA, (void *)verify_addr); // writing at beginning
invalidate_dcache_range(verify_addr, verify_addr + CONFIG_SYS_CACHELINE_SIZE);
if (readl(verify_addr) != MAGIC_DATA) {
if (readl((void *)verify_addr) != MAGIC_DATA) {
printf("ddr rw test failed\n");
return -1;
}
writel(MAGIC_DATA2, verify_addr2); // writing at one-quarter addr
writel(MAGIC_DATA3, verify_addr3); // writing at half addr
writel(MAGIC_DATA2, (void *)verify_addr2); // writing at one-quarter addr
writel(MAGIC_DATA3, (void *)verify_addr3); // writing at half addr
invalidate_dcache_range(verify_addr, verify_addr + CONFIG_SYS_CACHELINE_SIZE);
invalidate_dcache_range(verify_addr2, verify_addr2 + CONFIG_SYS_CACHELINE_SIZE);
invalidate_dcache_range(verify_addr3, verify_addr3 + CONFIG_SYS_CACHELINE_SIZE);
if (boundary == (unsigned long)MAXIMAL_DDR_DENSITY_MB * UNIT_MB) { // boundary by design
if ((readl(verify_addr) == MAGIC_DATA) &&
(readl(verify_addr2) == MAGIC_DATA2) &&
(readl(verify_addr3) == MAGIC_DATA3))
if ((readl((void *)verify_addr) == MAGIC_DATA) &&
(readl((void *)verify_addr2) == MAGIC_DATA2) &&
(readl((void *)verify_addr3) == MAGIC_DATA3))
return 0;
}
else {
writel(MAGIC_DATA4, verify_addr4); // writing out of boundary
writel(MAGIC_DATA4, (void *)verify_addr4); // writing out of boundary
invalidate_dcache_range(verify_addr4, verify_addr4 + CONFIG_SYS_CACHELINE_SIZE);
if ((readl(verify_addr) == MAGIC_DATA4) && // overwrite by verify_addr4
(readl(verify_addr2) == MAGIC_DATA2) &&
(readl(verify_addr3) == MAGIC_DATA3) &&
(readl(verify_addr4) == MAGIC_DATA4))
if ((readl((void *)verify_addr) == MAGIC_DATA4) && // overwrite by verify_addr4
(readl((void *)verify_addr2) == MAGIC_DATA2) &&
(readl((void *)verify_addr3) == MAGIC_DATA3) &&
(readl((void *)verify_addr4) == MAGIC_DATA4))
return 0;
}
@@ -420,14 +420,14 @@ void cpu_performance_enable(void)
#define CSR_MHINT2_E 0x7cc
#define CSR_MHINT4 0x7ce
csr_write(CSR_SMPEN, 0x1);
csr_write(CSR_MCCR2, 0xe2490009);
csr_write(CSR_MXSTATUS, 0x638000);
csr_write(CSR_MHINT, 0x6e30c | (1<<21) | (1<<22)); // set bit21 & bit 22 to close tlb & fence broadcast
// FIXME: Clear bit[12] to disable L0BTB.
csr_write(CSR_MHCR, 0x17f); // clear bit7 to disable indirect brantch prediction
// FIXME set mhint2[22] to enable core icg en
csr_write(CSR_MHINT2_E, csr_read(CSR_MHINT2_E) | 0x420000);
csr_write(CSR_MHINT4, csr_read(CSR_MHINT4) | 0x410);
csr_write(CSR_MCCR2, 0xe2490009);
// FIXME: Clear bit[12] to disable L0BTB.
csr_write(CSR_MHCR, 0x17f); // clear bit7 to disable indirect brantch prediction
csr_write(CSR_MHINT, 0x6e30c | (1<<21) | (1<<22)); // set bit21 & bit 22 to close tlb & fence broadcast
mdelay(50); // workaround
}
static int bl1_img_have_head(unsigned long img_src_addr)

View File

@@ -375,6 +375,18 @@ config CMD_FDT
help
Do FDT related setup before booting into the Operating System.
config SUPPORT_EXTENSION_SCAN
bool
config CMD_EXTENSION
bool "Extension board management command"
select CMD_FDT
depends on SUPPORT_EXTENSION_SCAN
help
Enables the "extension" command, which allows to detect
extension boards connected to the system, and apply
corresponding Device Tree overlays.
config CMD_GO
bool "go"
default y

View File

@@ -48,6 +48,7 @@ ifdef CONFIG_POST
obj-$(CONFIG_CMD_DIAG) += diag.o
endif
obj-$(CONFIG_CMD_DTIMG) += dtimg.o
obj-$(CONFIG_CMD_EXTENSION) += extension_board.o
obj-$(CONFIG_CMD_ECHO) += echo.o
obj-$(CONFIG_ENV_IS_IN_EEPROM) += eeprom.o
obj-$(CONFIG_CMD_EEPROM) += eeprom.o

167
cmd/extension_board.c Normal file
View File

@@ -0,0 +1,167 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2021
* Köry Maincent, Bootlin, <kory.maincent@bootlin.com>
*/
#include <common.h>
#include <command.h>
#include <malloc.h>
#include <extension_board.h>
#include <mapmem.h>
#include <linux/libfdt.h>
#include <fdt_support.h>
static LIST_HEAD(extension_list);
static int extension_apply(struct extension *extension)
{
char *overlay_cmd;
ulong extrasize, overlay_addr;
struct fdt_header *blob;
if (!working_fdt) {
printf("No FDT memory address configured. Please configure\n"
"the FDT address via \"fdt addr <address>\" command.\n");
return CMD_RET_FAILURE;
}
overlay_cmd = env_get("extension_overlay_cmd");
if (!overlay_cmd) {
printf("Environment extension_overlay_cmd is missing\n");
return CMD_RET_FAILURE;
}
overlay_addr = env_get_hex("extension_overlay_addr", 0);
if (!overlay_addr) {
printf("Environment extension_overlay_addr is missing\n");
return CMD_RET_FAILURE;
}
env_set("extension_overlay_name", extension->overlay);
if (run_command(overlay_cmd, 0) != 0)
return CMD_RET_FAILURE;
extrasize = env_get_hex("filesize", 0);
if (!extrasize)
return CMD_RET_FAILURE;
fdt_shrink_to_minimum(working_fdt, extrasize);
blob = map_sysmem(overlay_addr, 0);
if (!fdt_valid(&blob))
return CMD_RET_FAILURE;
/* apply method prints messages on error */
if (fdt_overlay_apply_verbose(working_fdt, blob))
return CMD_RET_FAILURE;
return CMD_RET_SUCCESS;
}
static int do_extension_list(struct cmd_tbl *cmdtp, int flag,
int argc, char *const argv[])
{
int i = 0;
struct extension *extension;
if (list_empty(&extension_list)) {
printf("No extension registered - Please run \"extension scan\"\n");
return CMD_RET_SUCCESS;
}
list_for_each_entry(extension, &extension_list, list) {
printf("Extension %d: %s\n", i++, extension->name);
printf("\tManufacturer: \t\t%s\n", extension->owner);
printf("\tVersion: \t\t%s\n", extension->version);
printf("\tDevicetree overlay: \t%s\n", extension->overlay);
printf("\tOther information: \t%s\n", extension->other);
}
return CMD_RET_SUCCESS;
}
static int do_extension_scan(struct cmd_tbl *cmdtp, int flag,
int argc, char *const argv[])
{
struct extension *extension, *next;
int extension_num;
list_for_each_entry_safe(extension, next, &extension_list, list) {
list_del(&extension->list);
free(extension);
}
extension_num = extension_board_scan(&extension_list);
if (extension_num < 0)
return CMD_RET_FAILURE;
printf("Found %d extension board(s).\n", extension_num);
return CMD_RET_SUCCESS;
}
static int do_extension_apply(struct cmd_tbl *cmdtp, int flag,
int argc, char *const argv[])
{
struct extension *extension = NULL;
struct list_head *entry;
int i = 0, extension_id, ret;
if (argc < 2)
return CMD_RET_USAGE;
if (strcmp(argv[1], "all") == 0) {
list_for_each_entry(extension, &extension_list, list) {
ret = extension_apply(extension);
if (ret != CMD_RET_SUCCESS)
break;
}
} else {
extension_id = simple_strtol(argv[1], NULL, 10);
list_for_each(entry, &extension_list) {
if (i == extension_id) {
extension = list_entry(entry, struct extension, list);
break;
}
i++;
}
if (!extension) {
printf("Wrong extension number\n");
return CMD_RET_FAILURE;
}
ret = extension_apply(extension);
}
return ret;
}
static struct cmd_tbl cmd_extension[] = {
U_BOOT_CMD_MKENT(scan, 1, 1, do_extension_scan, "", ""),
U_BOOT_CMD_MKENT(list, 1, 0, do_extension_list, "", ""),
U_BOOT_CMD_MKENT(apply, 2, 0, do_extension_apply, "", ""),
};
static int do_extensionops(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{
struct cmd_tbl *cp;
/* Drop the extension command */
argc--;
argv++;
cp = find_cmd_tbl(argv[0], cmd_extension, ARRAY_SIZE(cmd_extension));
if (cp)
return cp->cmd(cmdtp, flag, argc, argv);
return CMD_RET_USAGE;
}
U_BOOT_CMD(extension, 3, 1, do_extensionops,
"Extension board management sub system",
"scan - scan plugged extension(s) board(s)\n"
"extension list - lists available extension(s) board(s)\n"
"extension apply <extension number|all> - applies DT overlays corresponding to extension boards\n"
);

View File

@@ -27,7 +27,6 @@
*/
DECLARE_GLOBAL_DATA_PTR;
static int fdt_valid(struct fdt_header **blobp);
static int fdt_parse_prop(char *const*newval, int count, char *data, int *len);
static int fdt_print(const char *pathp, char *prop, int depth);
static int is_printable_string(const void *data, int len);
@@ -732,54 +731,6 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
/****************************************************************************/
/**
* fdt_valid() - Check if an FDT is valid. If not, change it to NULL
*
* @blobp: Pointer to FDT pointer
* @return 1 if OK, 0 if bad (in which case *blobp is set to NULL)
*/
static int fdt_valid(struct fdt_header **blobp)
{
const void *blob = *blobp;
int err;
if (blob == NULL) {
printf ("The address of the fdt is invalid (NULL).\n");
return 0;
}
err = fdt_check_header(blob);
if (err == 0)
return 1; /* valid */
if (err < 0) {
printf("libfdt fdt_check_header(): %s", fdt_strerror(err));
/*
* Be more informative on bad version.
*/
if (err == -FDT_ERR_BADVERSION) {
if (fdt_version(blob) <
FDT_FIRST_SUPPORTED_VERSION) {
printf (" - too old, fdt %d < %d",
fdt_version(blob),
FDT_FIRST_SUPPORTED_VERSION);
}
if (fdt_last_comp_version(blob) >
FDT_LAST_SUPPORTED_VERSION) {
printf (" - too new, fdt %d > %d",
fdt_version(blob),
FDT_LAST_SUPPORTED_VERSION);
}
}
printf("\n");
*blobp = NULL;
return 0;
}
return 1;
}
/****************************************************************************/
/*
* Parse the user's input, partially heuristic. Valid formats:
* <0x00112233 4 05> - an array of cells. Numbers follow standard

View File

@@ -9,6 +9,8 @@
#include <malloc.h>
#include <mapmem.h>
#include <lcd.h>
#include <fdt_support.h>
#include <linux/libfdt.h>
#include <linux/string.h>
#include <linux/ctype.h>
#include <errno.h>
@@ -279,6 +281,9 @@ static void label_destroy(struct pxe_label *label)
if (label->fdtdir)
free(label->fdtdir);
if (label->fdtoverlays)
free(label->fdtoverlays);
free(label);
}
@@ -326,6 +331,92 @@ static int label_localboot(struct pxe_label *label)
return run_command_list(localcmd, strlen(localcmd), 0);
}
/*
* Loads fdt overlays specified in 'fdtoverlays'.
*/
#ifdef CONFIG_OF_LIBFDT_OVERLAY
static void label_boot_fdtoverlay(cmd_tbl_t *cmdtp, struct pxe_label *label)
{
char *fdtoverlay = label->fdtoverlays;
struct fdt_header *working_fdt;
char *fdtoverlay_addr_env;
ulong fdtoverlay_addr;
ulong fdt_addr;
int err;
/* Get the main fdt and map it */
fdt_addr = simple_strtoul(env_get("fdt_addr_r"), NULL, 16);
working_fdt = map_sysmem(fdt_addr, 0);
err = fdt_check_header(working_fdt);
if (err)
return;
/* Get the specific overlay loading address */
fdtoverlay_addr_env = env_get("fdtoverlay_addr_r");
if (!fdtoverlay_addr_env) {
printf("Invalid fdtoverlay_addr_r for loading overlays\n");
return;
}
fdtoverlay_addr = simple_strtoul(fdtoverlay_addr_env, NULL, 16);
/* Cycle over the overlay files and apply them in order */
do {
struct fdt_header *blob;
char *overlayfile;
char *end;
int len;
/* Drop leading spaces */
while (*fdtoverlay == ' ')
++fdtoverlay;
/* Copy a single filename if multiple provided */
end = strstr(fdtoverlay, " ");
if (end) {
len = (int)(end - fdtoverlay);
overlayfile = malloc(len + 1);
strncpy(overlayfile, fdtoverlay, len);
overlayfile[len] = '\0';
} else
overlayfile = fdtoverlay;
if (!strlen(overlayfile))
goto skip_overlay;
/* Load overlay file */
err = get_relfile_envaddr(cmdtp, overlayfile,
"fdtoverlay_addr_r");
if (err < 0) {
printf("Failed loading overlay %s\n", overlayfile);
goto skip_overlay;
}
/* Resize main fdt */
fdt_shrink_to_minimum(working_fdt, 8192);
blob = map_sysmem(fdtoverlay_addr, 0);
err = fdt_check_header(blob);
if (err) {
printf("Invalid overlay %s, skipping\n",
overlayfile);
goto skip_overlay;
}
err = fdt_overlay_apply_verbose(working_fdt, blob);
if (err) {
printf("Failed to apply overlay %s, skipping\n",
overlayfile);
goto skip_overlay;
}
skip_overlay:
if (end)
free(overlayfile);
} while ((fdtoverlay = strstr(fdtoverlay, " ")));
}
#endif
/*
* Boot according to the contents of a pxe_label.
*
@@ -520,6 +611,11 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
label->name);
goto cleanup;
}
#ifdef CONFIG_OF_LIBFDT_OVERLAY
if (label->fdtoverlays)
label_boot_fdtoverlay(cmdtp, label);
#endif
} else {
bootm_argv[3] = NULL;
}
@@ -577,6 +673,7 @@ enum token_type {
T_INCLUDE,
T_FDT,
T_FDTDIR,
T_FDTOVERLAYS,
T_ONTIMEOUT,
T_IPAPPEND,
T_BACKGROUND,
@@ -611,6 +708,7 @@ static const struct token keywords[] = {
{"fdt", T_FDT},
{"devicetreedir", T_FDTDIR},
{"fdtdir", T_FDTDIR},
{"fdtoverlays", T_FDTOVERLAYS},
{"ontimeout", T_ONTIMEOUT,},
{"ipappend", T_IPAPPEND,},
{"background", T_BACKGROUND,},
@@ -1043,6 +1141,11 @@ static int parse_label(char **c, struct pxe_menu *cfg)
err = parse_sliteral(c, &label->fdtdir);
break;
case T_FDTOVERLAYS:
if (!label->fdtoverlays)
err = parse_sliteral(c, &label->fdtoverlays);
break;
case T_LOCALBOOT:
label->localboot = 1;
err = parse_integer(c, &label->localboot_val);

View File

@@ -43,6 +43,7 @@ struct pxe_label {
char *initrd;
char *fdt;
char *fdtdir;
char *fdtoverlays;
int ipappend;
int attempted;
int localboot;

View File

@@ -1822,3 +1822,49 @@ int fdt_overlay_apply_verbose(void *fdt, void *fdto)
return err;
}
#endif
/**
* fdt_valid() - Check if an FDT is valid. If not, change it to NULL
*
* @blobp: Pointer to FDT pointer
* @return 1 if OK, 0 if bad (in which case *blobp is set to NULL)
*/
int fdt_valid(struct fdt_header **blobp)
{
const void *blob = *blobp;
int err;
if (!blob) {
printf("The address of the fdt is invalid (NULL).\n");
return 0;
}
err = fdt_check_header(blob);
if (err == 0)
return 1; /* valid */
if (err < 0) {
printf("libfdt fdt_check_header(): %s", fdt_strerror(err));
/*
* Be more informative on bad version.
*/
if (err == -FDT_ERR_BADVERSION) {
if (fdt_version(blob) <
FDT_FIRST_SUPPORTED_VERSION) {
printf(" - too old, fdt %d < %d",
fdt_version(blob),
FDT_FIRST_SUPPORTED_VERSION);
}
if (fdt_last_comp_version(blob) >
FDT_LAST_SUPPORTED_VERSION) {
printf(" - too new, fdt %d > %d",
fdt_version(blob),
FDT_LAST_SUPPORTED_VERSION);
}
}
printf("\n");
*blobp = NULL;
return 0;
}
return 1;
}

View File

@@ -735,6 +735,30 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
jump_to_image_no_args(&spl_image);
}
static void print_ruyisdk_logo(void)
{
// _____ _ _____ _____ _ __
// | __ \ (_)/ ____| __ \| |/ /
// | |__) | _ _ _ _| (___ | | | | ' /
// | _ / | | | | | | |\___ \| | | | <
// | | \ \ |_| | |_| | |____) | |__| | . \
// |_| \_\__,_|\__, |_|_____/|_____/|_|\_\
// __/ |
// |___/
printf("-----------------------------------------\n");
printf(" _____ _ _____ _____ _ __\n");
printf(" | __ \\ (_)/ ____| __ \\| |/ /\n");
printf(" | |__) | _ _ _ _| (___ | | | | ' / \n");
printf(" | _ / | | | | | | |\\___ \\| | | | < \n");
printf(" | | \\ \\ |_| | |_| | |____) | |__| | . \\ \n");
printf(" |_| \\_\\__,_|\\__, |_|_____/|_____/|_|\\_\\\n");
printf(" __/ | \n");
printf(" |___/ \n");
printf(" -- Presented by ISCAS\n");
printf("-----------------------------------------\n");
}
#ifdef CONFIG_SPL_SERIAL_SUPPORT
/*
* This requires UART clocks to be enabled. In order for this to work the
@@ -748,6 +772,8 @@ void preloader_console_init(void)
gd->have_console = 1;
print_ruyisdk_logo();
#if CONFIG_IS_ENABLED(BANNER_PRINT)
puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - "
U_BOOT_TIME " " U_BOOT_TZ ")\n");

View File

@@ -6,6 +6,7 @@ CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_VAL_A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
@@ -17,7 +18,7 @@ CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="C910 Light# "
CONFIG_SYS_PROMPT="Light VAL-A# "
CONFIG_DDR_LP4X_3733_SINGLERANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
@@ -63,6 +64,7 @@ CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
@@ -85,9 +87,11 @@ CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_BOOT_FORCE_SEQ is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="light-a-val.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
@@ -107,5 +111,6 @@ CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -6,39 +6,41 @@ CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_TARGET_LIGHT_FM_C910_BEAGLE=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_DDR_LP4X_3733_SINGLERANK=y
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DEFAULT_FDT_FILE="thead/light-beagle.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="C910 Light# "
CONFIG_DDR_LP4X_3733_SINGLERANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_SYS_PROMPT="Light AHead# "
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MTD=y
CONFIG_CMD_SPI=y
CONFIG_CMD_BMP=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-a-val"
CONFIG_DEFAULT_DEVICE_TREE="light-beagle"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
@@ -47,11 +49,12 @@ CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
@@ -59,19 +62,21 @@ CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
@@ -82,25 +87,18 @@ CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_USB_FUNCTION_MASS_STORAGE=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
# CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_OF_LIBFDT_OVERLAY=y
# CONFIG_EFI_LOADER is not set
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,114 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="Light LPI4A 16G# "
CONFIG_DDR_LP4X_3733_DUALRANK=y
CONFIG_DDR_DDP=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/light-lpi4a-16gb.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,114 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheeCluster4A 16G # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
CONFIG_DDR_DDP=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/light-lpi4a-cluster-16gb.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,113 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheeCluster4A # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/light-lpi4a-cluster.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,119 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheeConsole4A 16G # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
CONFIG_DDR_DDP=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a-laptop"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/light-lpi4a-console-16g.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y
CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
# CONFIG_DOS_PARTITION is not set
CONFIG_CMD_USB=y

View File

@@ -0,0 +1,118 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheeConsole4A # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a-laptop"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/light-lpi4a-console.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y
CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
# CONFIG_DOS_PARTITION is not set
CONFIG_CMD_USB=y

View File

@@ -18,7 +18,7 @@ CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="C910 Light# "
CONFIG_SYS_PROMPT="Light LPI4A# "
CONFIG_DDR_LP4X_3733_DUALRANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
@@ -63,6 +63,7 @@ CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
@@ -85,9 +86,11 @@ CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/light-lpi4a.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
@@ -101,7 +104,7 @@ CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=n
CONFIG_VIDEO_LCD_JD9365DA=y
CONFIG_VIDEO_LCD_CUSTOM_LOGO=y
#CONFIG_VIDEO_LCD_CUSTOM_LOGO=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
@@ -110,6 +113,6 @@ CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,119 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheeLaptop4A 16G # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a-laptop"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/th1520-lpi4a-plastic-16g.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y
CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
# CONFIG_DOS_PARTITION is not set
CONFIG_CMD_USB=y

View File

@@ -0,0 +1,119 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheeLaptop4A # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a-laptop"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/th1520-lpi4a-plastic.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y
CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
# CONFIG_DOS_PARTITION is not set
CONFIG_CMD_USB=y

View File

@@ -0,0 +1,119 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_TARGET_LIGHT_FM_C910_LPI4A=y
# CONFIG_THEAD_PLIC is not set
# CONFIG_THEAD_LIGHT_TIMER is not set
# CONFIG_THEAD_LIGHT_DIGITAL_SENSOR is not set
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="LicheePocket4A # "
CONFIG_DDR_LP4X_3733_DUALRANK=y
# CONFIG_DDR_LP4_3733_DUALRANK is not set
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_SPI=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_DDR_PRBS_TEST=n
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-lpi4a"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
CONFIG_DWAPB_GPIO=y
# CONFIG_MMC_SPI is not set
CONFIG_MMC_VERBOSE=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_CMD_MMC=y
CONFIG_CMD_MMC_RPMB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_USB_FUNCTION_MASS_STORAGE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
# CONFIG_EFI_LOADER is not set
# CONFIG_LIGHT_SEC_BOOT is not set
CONFIG_DEFAULT_FDT_FILE="thead/th1520-lpi4a-pocket.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_VIDEO=y
CONFIG_PHY=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CMD_BMP=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_DDR_REGU_0V6=600000
CONFIG_DDR_REGU_0V8=800000
CONFIG_DDR_REGU_1V1=1100000
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y
CONFIG_DM_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
# CONFIG_DOS_PARTITION is not set
CONFIG_CMD_USB=y

View File

@@ -102,7 +102,7 @@ CONFIG_DM_PCA953X=y
CONFIG_VIDEO_VS_DPU=y
CONFIG_VIDEO_LCD_ILITEK_ILI9881C=n
CONFIG_VIDEO_LCD_JD9365DA=y
CONFIG_VIDEO_LCD_CUSTOM_LOGO=y
#CONFIG_VIDEO_LCD_CUSTOM_LOGO=y
CONFIG_VIDEO_DW_DSI_LIGHT=y
CONFIG_VIDEO_DW_DPHY=y
CONFIG_VIDEO_DW_DSI_HOST=y

View File

@@ -0,0 +1,94 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES=y
CONFIG_DDR_LP4X_3733_DUALRANK=y
CONFIG_DDR_DDP=y
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DEFAULT_FDT_FILE="thead/th1520-milkv-meles-16g.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="Milk-V Meles 16G# "
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MTD=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-milkv-meles"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
# CONFIG_MMC_SPI is not set
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_SYS_WHITE_ON_BLACK=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_OF_LIBFDT_OVERLAY=y
# CONFIG_EFI_LOADER is not set
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,89 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES=y
CONFIG_DDR_LP4X_3733_SINGLERANK=y
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DEFAULT_FDT_FILE="thead/th1520-milkv-meles.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="Milk-V Meles# "
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MTD=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-milkv-meles"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
# CONFIG_MMC_SPI is not set
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_SYS_WHITE_ON_BLACK=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_OF_LIBFDT_OVERLAY=y
# CONFIG_EFI_LOADER is not set

View File

@@ -0,0 +1,93 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES=y
CONFIG_DDR_LP4X_3733_DUALRANK=y
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DEFAULT_FDT_FILE="thead/th1520-milkv-meles.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="Milk-V Meles# "
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MTD=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-milkv-meles"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
# CONFIG_MMC_SPI is not set
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_SYS_WHITE_ON_BLACK=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_OF_LIBFDT_OVERLAY=y
# CONFIG_EFI_LOADER is not set
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -0,0 +1,93 @@
CONFIG_RISCV=y
CONFIG_SPL_MMC_SUPPORT=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xe0000
CONFIG_NR_DRAM_BANKS=8
CONFIG_SPL=y
CONFIG_SMP=y
CONFIG_TARGET_LIGHT_C910=y
CONFIG_PMIC_VOL_INIT=y
CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES=y
CONFIG_DDR_LP4X_3733_SINGLERANK=y
CONFIG_DDR_BOARD_CONFIG=y
CONFIG_ARCH_RV64I=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_BUILD_TARGET="u-boot-with-spl.bin"
CONFIG_DEFAULT_FDT_FILE="thead/th1520-milkv-meles-4g.dtb"
CONFIG_BOARD_LATE_INIT=y
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
CONFIG_SPL_RAM_SUPPORT=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SYS_PROMPT="Milk-V Meles 4G# "
CONFIG_CMD_BOOT_SLAVE=y
CONFIG_CMD_ERASEENV=y
CONFIG_CMD_MEMTEST=y
CONFIG_DDR_SCAN=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MTD=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_DOS_PARTITION is not set
# CONFIG_ISO_PARTITION is not set
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_OF_EMBED=y
CONFIG_DEFAULT_DEVICE_TREE="light-milkv-meles"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_CLK=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_DW=y
# CONFIG_MMC_SPI is not set
CONFIG_SUPPORT_EMMC_RPMB=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_SNPS=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_SNPS=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_PHY_REALTEK=y
CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y
CONFIG_RTL8211X_PHY_FORCE_MASTER=y
CONFIG_RTL8211F_PHY_FORCE_EEE_RXC_ON=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_DESIGNWARE_SPI=y
CONFIG_DESIGNWARE_QSPI=y
CONFIG_USB=y
CONFIG_USB_DWC3=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="U-Boot-THEAD"
CONFIG_USB_GADGET_VENDOR_NUM=0x1234
CONFIG_USB_GADGET_PRODUCT_NUM=0x8888
CONFIG_SYS_WHITE_ON_BLACK=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_OF_LIBFDT_OVERLAY=y
# CONFIG_EFI_LOADER is not set
CONFIG_BOARD_RNG_SEED=y
CONFIG_FIXUP_MEMORY_REGION=y
CONFIG_MISC=y
CONFIG_LIGHT_AON_CONF=y

View File

@@ -6,6 +6,7 @@ CONFIG_FIT_SIGNATURE=y
# CONFIG_CMD_BOOTD is not set
# CONFIG_CMD_BOOTM is not set
# CONFIG_CMD_ELF is not set
# CONFIG_CMD_EXTENSION is not set
# CONFIG_CMD_DATE is not set
CONFIG_OF_CONTROL=y
CONFIG_OF_HOSTFILE=y

View File

@@ -89,6 +89,9 @@ pxe boot
fdt_addr - the location of a fdt blob. 'fdt_addr' will be passed to bootm
command if it is set and 'fdt_addr_r' is not passed to bootm command.
fdtoverlay_addr_r - location in RAM at which 'pxe boot' will temporarily store
fdt overlay(s) before applying them to the fdt blob stored at 'fdt_addr_r'.
pxe file format
===============
The pxe file format is nearly a subset of the PXELINUX file format; see
@@ -148,6 +151,12 @@ kernel <path> - if this label is chosen, use tftp to retrieve the kernel
It useful for overlay selection in pxe file
(see: doc/uImage.FIT/overlay-fdt-boot.txt)
fdtoverlays <path> [...] - if this label is chosen, use tftp to retrieve the DT
overlay(s) at <path>. it will be temporarily stored at the
address indicated in the fdtoverlay_addr_r environment variable,
and then applied in the load order to the fdt blob stored at the
address indicated in the fdt_addr_r environment variable.
append <string> - use <string> as the kernel command line when booting this
label.

111
doc/usage/extension.rst Normal file
View File

@@ -0,0 +1,111 @@
.. SPDX-License-Identifier: GPL-2.0+
.. Copyright 2021, Kory Maincent <kory.maincent@bootlin.com>
U-Boot extension board usage (CONFIG_EXTENSION)
===============================================
Synopsis
--------
::
extension scan
extension list
extension apply <extension number|all>
Description
-----------
The "extension" command proposes a generic U-Boot mechanism to detect
extension boards connected to the HW platform, and apply the appropriate
Device Tree overlays depending on the detected extension boards.
The "extension" command comes with three sub-commands:
- "extension scan" makes the generic code call the board-specific
extension_board_scan() function to retrieve the list of detected
extension boards.
- "extension list" allows to list the detected extension boards.
- "extension apply <number>|all" allows to apply the Device Tree
overlay(s) corresponding to one, or all, extension boards
The latter requires two environment variables to exist:
- extension_overlay_addr: the RAM address where to load the Device
Tree overlays
- extension_overlay_cmd: the U-Boot command to load one overlay.
Indeed, the location and mechanism to load DT overlays is very setup
specific.
In order to enable this mechanism, board-specific code must implement
the extension_board_scan() function that fills in a linked list of
"struct extension", each describing one extension board. In addition,
the board-specific code must select the SUPPORT_EXTENSION_SCAN Kconfig
boolean.
Usage example
-------------
1. Make sure your devicetree is loaded and set as the working fdt tree.
::
=> run loadfdt
=> fdt addr $fdtaddr
2. Prepare the environment variables
::
=> setenv extension_overlay_addr 0x88080000
=> setenv extension_overlay_cmd 'load mmc 0:1 ${extension_overlay_addr} /boot/${extension_overlay_name}'
3. Detect the plugged extension board
::
=> extension scan
4. List the plugged extension board information and the devicetree
overlay name
::
=> extension list
5. Apply the appropriate devicetree overlay
For apply the selected overlay:
::
=> extension apply 0
For apply all the overlays:
::
=> extension apply all
Simple extension_board_scan function example
--------------------------------------------
.. code-block:: c
int extension_board_scan(struct list_head *extension_list)
{
struct extension *extension;
extension = calloc(1, sizeof(struct extension));
snprintf(extension->overlay, sizeof(extension->overlay), "overlay.dtbo");
snprintf(extension->name, sizeof(extension->name), "extension board");
snprintf(extension->owner, sizeof(extension->owner), "sandbox");
snprintf(extension->version, sizeof(extension->version), "1.1");
snprintf(extension->other, sizeof(extension->other), "Extension board information");
list_add_tail(&extension->list, extension_list);
return 1;
}

View File

@@ -34,7 +34,10 @@
*/
void xhci_flush_cache(uintptr_t addr, u32 len)
{
BUG_ON((void *)addr == NULL || len == 0);
// th1520 will load fw_dymaic.bin into 0x0
// so disable it
// load usb 0:2 0x0 fw_dynamic.bin
//BUG_ON((void *)addr == NULL || len == 0);
flush_dcache_range(addr & ~(CACHELINE_SIZE - 1),
ALIGN(addr + len, CACHELINE_SIZE));
@@ -49,7 +52,10 @@ void xhci_flush_cache(uintptr_t addr, u32 len)
*/
void xhci_inval_cache(uintptr_t addr, u32 len)
{
BUG_ON((void *)addr == NULL || len == 0);
// th1520 will load fw_dymaic.bin into 0x0
// so disable it
// load usb 0:2 0x0 fw_dynamic.bin
//BUG_ON((void *)addr == NULL || len == 0);
invalidate_dcache_range(addr & ~(CACHELINE_SIZE - 1),
ALIGN(addr + len, CACHELINE_SIZE));

View File

@@ -351,16 +351,24 @@ config VIDEO_LCD_ILITEK_ILI9881C
Say Y here if you want to enable support for ILITEK ILI9881C
800x1280 DSI video mode panel.
config VIDEO_LCD_MINGJUN_070BI30IA2
bool "MingJun 070BI30IA2 DSI LCD panel support"
depends on DM_VIDEO
select VIDEO_MIPI_DSI
help
Say Y here if you want to enable support for Mingjun 070BI30IA2
800x1280 DSI video mode panel.
config VIDEO_LCD_JD9365DA
bool "JD9365DA DSI LCD panel support"
depends on DM_VIDEO
select VIDEO_MIPI_DSI
help
Say Y here if you want to enable support for JD9365DA
800x1280 DSI video mode panel.
config VIDEO_LCD_CUSTOM_LOGO
bool "LCD CUSTOM logo support"
default n
help
Say Y here if you want to enable support for custom logo.

View File

@@ -55,6 +55,7 @@ obj-$(CONFIG_VIDEO_LCD_HITACHI_TX18D42VM) += hitachi_tx18d42vm_lcd.o
obj-$(CONFIG_VIDEO_LCD_ORISETECH_OTM8009A) += orisetech_otm8009a.o
obj-$(CONFIG_VIDEO_LCD_RAYDIUM_RM68200) += raydium-rm68200.o
obj-$(CONFIG_VIDEO_LCD_ILITEK_ILI9881C) += ilitek-ili9881c.o
obj-$(CONFIG_VIDEO_LCD_MINGJUN_070BI30IA2) += mingjun-070bi30ia2.o
obj-$(CONFIG_VIDEO_LCD_SSD2828) += ssd2828.o
obj-$(CONFIG_VIDEO_MB862xx) += mb862xx.o videomodes.o
obj-${CONFIG_VIDEO_MESON} += meson/

View File

@@ -368,12 +368,12 @@ static int ili9881c_panel_prepare(struct udevice *panel)
ret = dm_gpio_set_value(&priv->reset, true);
if (ret)
return ret;
mdelay(1);
mdelay(500);
ret = dm_gpio_set_value(&priv->reset, false);
if (ret)
return ret;
mdelay(10);
mdelay(100);
return 0;
}
@@ -464,6 +464,20 @@ static int ili9881c_panel_ofdata_to_platdata(struct udevice *dev)
dev_err(dev, "Warning: cannot get reset GPIO\n");
if (ret != -ENOENT)
return ret;
} else {
/* not a bug, but uboot's regulator is buggy,
I haven't more time to fix it, so put it here
*/
/* reset panel */
ret = dm_gpio_set_value(&priv->reset, false);
if (ret)
return ret;
mdelay(100);
ret = dm_gpio_set_value(&priv->reset, true);
if (ret)
return ret;
mdelay(100);
}
/* power gpios */

View File

@@ -0,0 +1,490 @@
// SPDX-License-Identifier: GPL-2.0+
#include <common.h>
#include <backlight.h>
#include <dm.h>
#include <mipi_dsi.h>
#include <panel.h>
#include <asm/gpio.h>
struct mingjun_panel_cmd {
char cmdlen;
char cmddata[0x40];
};
static const struct mingjun_panel_cmd mingjun_on_cmds[] = {
// { .cmdlen = 4, .cmddata = {0xB9, 0xFF, 0x83, 0x94} },
// { .cmdlen = 11, .cmddata = {0xB1, 0x48, 0x0A, 0x6A, 0x09, 0x33, 0x54,
// 0x71, 0x71, 0x2E, 0x45} },
// { .cmdlen = 7, .cmddata = {0xBA, 0x63, 0x03, 0x68, 0x6B, 0xB2, 0xC0} },
// { .cmdlen = 7, .cmddata = {0xB2, 0x00, 0x80, 0x64, 0x0C, 0x06, 0x2F} },
// { .cmdlen = 22, .cmddata = {0xB4, 0x1C, 0x78, 0x1C, 0x78, 0x1C, 0x78, 0x01,
// 0x0C, 0x86, 0x75, 0x00, 0x3F, 0x1C, 0x78, 0x1C,
// 0x78, 0x1C, 0x78, 0x01, 0x0C, 0x86} },
// { .cmdlen = 34, .cmddata = {0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
// 0x08, 0x32, 0x10, 0x05, 0x00, 0x05, 0x32, 0x13,
// 0xC1, 0x00, 0x01, 0x32, 0x10, 0x08, 0x00, 0x00,
// 0x37, 0x03, 0x07, 0x07, 0x37, 0x05, 0x05, 0x37,
// 0x0C, 0x40} },
// { .cmdlen = 45, .cmddata = {0xD5, 0x18, 0x18, 0x18, 0x18, 0x22, 0x23, 0x20,
// 0x21, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02,
// 0x03, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
// 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
// 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
// 0x18, 0x19, 0x19, 0x19, 0x19} },
// { .cmdlen = 45, .cmddata = {0xD6, 0x18, 0x18, 0x19, 0x19, 0x21, 0x20, 0x23,
// 0x22, 0x03, 0x02, 0x01, 0x00, 0x07, 0x06, 0x05,
// 0x04, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
// 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
// 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
// 0x18, 0x19, 0x19, 0x18, 0x18} },
// { .cmdlen = 59, .cmddata = {0xE0, 0x07, 0x08, 0x09, 0x0D, 0x10, 0x14, 0x16,
// 0x13, 0x24, 0x36, 0x48, 0x4A, 0x58, 0x6F, 0x76,
// 0x80, 0x97, 0xA5, 0xA8, 0xB5, 0xC6, 0x62, 0x63,
// 0x68, 0x6F, 0x72, 0x78, 0x7F, 0x7F, 0x00, 0x02,
// 0x08, 0x0D, 0x0C, 0x0E, 0x0F, 0x10, 0x24, 0x36,
// 0x48, 0x4A, 0x58, 0x6F, 0x78, 0x82, 0x99, 0xA4,
// 0xA0, 0xB1, 0xC0, 0x5E, 0x5E, 0x64, 0x6B, 0x6C,
// 0x73, 0x7F, 0x7F} },
// { .cmdlen = 2, .cmddata = {0xCC, 0x03} },
// { .cmdlen = 3, .cmddata = {0xC0, 0x1F, 0x73} },
// { .cmdlen = 3, .cmddata = {0xB6, 0x90, 0x90} },
// { .cmdlen = 2, .cmddata = {0xD4, 0x02} },
// { .cmdlen = 2, .cmddata = {0xBD, 0x01} },
// { .cmdlen = 2, .cmddata = {0xB1, 0x00} },
// { .cmdlen = 2, .cmddata = {0xBD, 0x00} },
// { .cmdlen = 8, .cmddn bata = {0xBF, 0x40, 0x81, 0x50, 0x00, 0x1A, 0xFC, 0x01} },
// { .cmdlen = 2, .cmddata = {0x36, 0x02} },
{ .cmdlen =4, .cmddata = {0xFF,0x98,0x81,0x03} },
{ .cmdlen = 2, .cmddata = {0x01,0x00} },
{ .cmdlen = 2, .cmddata = {0x02,0x00} },
{ .cmdlen = 2, .cmddata = {0x03,0x73} },
{ .cmdlen = 2, .cmddata = {0x04,0x13} },
{ .cmdlen = 2, .cmddata = {0x05,0x00} },
{ .cmdlen = 2, .cmddata = {0x06,0x0A} },
{ .cmdlen = 2, .cmddata = {0x07,0x05} },
{ .cmdlen = 2, .cmddata = {0x11,0x00} },
{ .cmdlen = 2, .cmddata = {0x09,0x28} },
{ .cmdlen = 2, .cmddata = {0x0A,0x00} },
{ .cmdlen = 2, .cmddata = {0x0B,0x00} },
{ .cmdlen = 2, .cmddata = {0x0C,0x00} },
{ .cmdlen = 2, .cmddata = {0x0D,0x28} },
{ .cmdlen = 2, .cmddata = {0x0E,0x00} },
{ .cmdlen = 2, .cmddata = {0x0F,0x28} },
{ .cmdlen = 2, .cmddata = {0x10,0x28} },
{ .cmdlen = 2, .cmddata = {0x11,0x00} },
{ .cmdlen = 2, .cmddata = {0x12,0x00} },
{ .cmdlen = 2, .cmddata = {0x13,0x00} },
{ .cmdlen = 2, .cmddata = {0x14,0x00} },
{ .cmdlen = 2, .cmddata = {0x15,0x00} },
{ .cmdlen = 2, .cmddata = {0x16,0x00} },
{ .cmdlen = 2, .cmddata = {0x17,0x00} },
{ .cmdlen = 2, .cmddata = {0x18,0x00} },
{ .cmdlen = 2, .cmddata = {0x19,0x00} },
{ .cmdlen = 2, .cmddata = {0x1A,0x00} },
{ .cmdlen = 2, .cmddata = {0x1B,0x00} },
{ .cmdlen = 2, .cmddata = {0x1C,0x00} },
{ .cmdlen = 2, .cmddata = {0x1D,0x00} },
{ .cmdlen = 2, .cmddata = {0x1E,0x40} },
{ .cmdlen = 2, .cmddata = {0x1F,0x80} },
{ .cmdlen = 2, .cmddata = {0x20,0x06} },
{ .cmdlen = 2, .cmddata = {0x21,0x01} },
{ .cmdlen = 2, .cmddata = {0x22,0x00} },
{ .cmdlen = 2, .cmddata = {0x23,0x00} },
{ .cmdlen = 2, .cmddata = {0x24,0x00} },
{ .cmdlen = 2, .cmddata = {0x25,0x00} },
{ .cmdlen = 2, .cmddata = {0x26,0x00} },
{ .cmdlen = 2, .cmddata = {0x27,0x00} },
{ .cmdlen = 2, .cmddata = {0x28,0x33} },
{ .cmdlen = 2, .cmddata = {0x29,0x33} },
{ .cmdlen = 2, .cmddata = {0x2A,0x00} },
{ .cmdlen = 2, .cmddata = {0x2B,0x00} },
{ .cmdlen = 2, .cmddata = {0x2C,0x04} },
{ .cmdlen = 2, .cmddata = {0x2D,0x0C} },
{ .cmdlen = 2, .cmddata = {0x2E,0x05} },
{ .cmdlen = 2, .cmddata = {0x2F,0x05} },
{ .cmdlen = 2, .cmddata = {0x30,0x00} },
{ .cmdlen = 2, .cmddata = {0x31,0x00} },
{ .cmdlen = 2, .cmddata = {0x32,0x31} },
{ .cmdlen = 2, .cmddata = {0x33,0x00} },
{ .cmdlen = 2, .cmddata = {0x34,0x00} },
{ .cmdlen = 2, .cmddata = {0x35,0x0A} },
{ .cmdlen = 2, .cmddata = {0x36,0x00} },
{ .cmdlen = 2, .cmddata = {0x37,0x08} },
{ .cmdlen = 2, .cmddata = {0x70,0x00} },
{ .cmdlen = 2, .cmddata = {0x39,0x00} },
{ .cmdlen = 2, .cmddata = {0x3A,0x00} },
{ .cmdlen = 2, .cmddata = {0x3B,0x00} },
{ .cmdlen = 2, .cmddata = {0x3C,0x00} },
{ .cmdlen = 2, .cmddata = {0x3D,0x00} },
{ .cmdlen = 2, .cmddata = {0x3E,0x00} },
{ .cmdlen = 2, .cmddata = {0x3F,0x00} },
{ .cmdlen = 2, .cmddata = {0x40,0x00} },
{ .cmdlen = 2, .cmddata = {0x41,0x00} },
{ .cmdlen = 2, .cmddata = {0x42,0x00} },
{ .cmdlen = 2, .cmddata = {0x43,0x08} },
{ .cmdlen = 2, .cmddata = {0x44,0x00} },
{ .cmdlen = 2, .cmddata = {0xA0,0x02} },
{ .cmdlen = 2, .cmddata = {0x51,0x23} },
{ .cmdlen = 2, .cmddata = {0x52,0x44} },
{ .cmdlen = 2, .cmddata = {0x53,0x67} },
{ .cmdlen = 2, .cmddata = {0x54,0x89} },
{ .cmdlen = 2, .cmddata = {0x55,0xAB} },
{ .cmdlen = 2, .cmddata = {0x56,0x01} },
{ .cmdlen = 2, .cmddata = {0x57,0x23} },
{ .cmdlen = 2, .cmddata = {0x58,0x45} },
{ .cmdlen = 2, .cmddata = {0x59,0x67} },
{ .cmdlen = 2, .cmddata = {0x5A,0x89} },
{ .cmdlen = 2, .cmddata = {0x5B,0xAB} },
{ .cmdlen = 2, .cmddata = {0x5C,0xCD} },
{ .cmdlen = 2, .cmddata = {0x5D,0xEF} },
{ .cmdlen = 2, .cmddata = {0x5E,0x11} },
{ .cmdlen = 2, .cmddata = {0x5F,0x02} },
{ .cmdlen = 2, .cmddata = {0x60,0x08} },
{ .cmdlen = 2, .cmddata = {0x61,0x0E} },
{ .cmdlen = 2, .cmddata = {0x62,0x0F} },
{ .cmdlen = 2, .cmddata = {0x63,0x0C} },
{ .cmdlen = 2, .cmddata = {0x64,0x0D} },
{ .cmdlen = 2, .cmddata = {0x65,0x17} },
{ .cmdlen = 2, .cmddata = {0x66,0x01} },
{ .cmdlen = 2, .cmddata = {0x67,0x01} },
{ .cmdlen = 2, .cmddata = {0x68,0x02} },
{ .cmdlen = 2, .cmddata = {0x69,0x02} },
{ .cmdlen = 2, .cmddata = {0x6A,0x00} },
{ .cmdlen = 2, .cmddata = {0x6B,0x00} },
{ .cmdlen = 2, .cmddata = {0x6C,0x02} },
{ .cmdlen = 2, .cmddata = {0x6D,0x02} },
{ .cmdlen = 2, .cmddata = {0x6E,0x16} },
{ .cmdlen = 2, .cmddata = {0x6F,0x16} },
{ .cmdlen = 2, .cmddata = {0x70,0x06} },
{ .cmdlen = 2, .cmddata = {0x71,0x06} },
{ .cmdlen = 2, .cmddata = {0x72,0x07} },
{ .cmdlen = 2, .cmddata = {0x73,0x07} },
{ .cmdlen = 2, .cmddata = {0x74,0x02} },
{ .cmdlen = 2, .cmddata = {0x75,0x02} },
{ .cmdlen = 2, .cmddata = {0x76,0x08} },
{ .cmdlen = 2, .cmddata = {0x77,0x0E} },
{ .cmdlen = 2, .cmddata = {0x78,0x0F} },
{ .cmdlen = 2, .cmddata = {0x79,0x0C} },
{ .cmdlen = 2, .cmddata = {0x7A,0x0D} },
{ .cmdlen = 2, .cmddata = {0x7B,0x17} },
{ .cmdlen = 2, .cmddata = {0x7C,0x01} },
{ .cmdlen = 2, .cmddata = {0x7D,0x01} },
{ .cmdlen = 2, .cmddata = {0x7E,0x02} },
{ .cmdlen = 2, .cmddata = {0x7F,0x02} },
{ .cmdlen = 2, .cmddata = {0x80,0x00} },
{ .cmdlen = 2, .cmddata = {0x81,0x00} },
{ .cmdlen = 2, .cmddata = {0x82,0x02} },
{ .cmdlen = 2, .cmddata = {0x83,0x02} },
{ .cmdlen = 2, .cmddata = {0x84,0x16} },
{ .cmdlen = 2, .cmddata = {0x85,0x16} },
{ .cmdlen = 2, .cmddata = {0x86,0x06} },
{ .cmdlen = 2, .cmddata = {0x87,0x06} },
{ .cmdlen = 2, .cmddata = {0x88,0x07} },
{ .cmdlen = 2, .cmddata = {0x89,0x07} },
{ .cmdlen = 2, .cmddata = {0x8A,0x02} },
{ .cmdlen = 4, .cmddata = {0xFF,0x98,0x81,0x04} },
{ .cmdlen = 2, .cmddata = {0x6E,0x1A} },
{ .cmdlen = 2, .cmddata = {0x6F,0x37} },
{ .cmdlen = 2, .cmddata = {0x3A,0xA4} },
{ .cmdlen = 2, .cmddata = {0x8D,0x1F} },
{ .cmdlen = 2, .cmddata = {0x87,0xBA} },
{ .cmdlen = 2, .cmddata = {0xB2,0xD1} },
{ .cmdlen = 2, .cmddata = {0x88,0x0B} },
{ .cmdlen = 2, .cmddata = {0x38,0x01} },
{ .cmdlen = 2, .cmddata = {0x39,0x00} },
{ .cmdlen = 2, .cmddata = {0xB5,0x02} },
{ .cmdlen = 2, .cmddata = {0x31,0x25} },
{ .cmdlen = 2, .cmddata = {0x3B,0x98} },
{ .cmdlen = 4, .cmddata = {0xFF,0x98,0x81,0x01} },
{ .cmdlen = 2, .cmddata = {0x22,0x0A} },
{ .cmdlen = 2, .cmddata = {0x31,0x00} },
{ .cmdlen = 2, .cmddata = {0xA6,0xA6} },
{ .cmdlen = 2, .cmddata = {0x55,0x3D} },
{ .cmdlen = 2, .cmddata = {0x50,0x9E} },
{ .cmdlen = 2, .cmddata = {0x51,0x99} },
{ .cmdlen = 2, .cmddata = {0x60,0x06} },
{ .cmdlen = 2, .cmddata = {0x62,0x20} },
{ .cmdlen = 2, .cmddata = {0xA0,0x00} },
{ .cmdlen = 2, .cmddata = {0xA1,0x17} },
{ .cmdlen = 2, .cmddata = {0xA2,0x26} },
{ .cmdlen = 2, .cmddata = {0xA3,0x13} },
{ .cmdlen = 2, .cmddata = {0xA4,0x16} },
{ .cmdlen = 2, .cmddata = {0xA5,0x29} },
{ .cmdlen = 2, .cmddata = {0xA6,0x1E} },
{ .cmdlen = 2, .cmddata = {0xA7,0x1F} },
{ .cmdlen = 2, .cmddata = {0xA8,0x8B} },
{ .cmdlen = 2, .cmddata = {0xA9,0x1D} },
{ .cmdlen = 2, .cmddata = {0xAA,0x2A} },
{ .cmdlen = 2, .cmddata = {0xAB,0x7B} },
{ .cmdlen = 2, .cmddata = {0xAC,0x1A} },
{ .cmdlen = 2, .cmddata = {0xAD,0x19} },
{ .cmdlen = 2, .cmddata = {0xAE,0x4E} },
{ .cmdlen = 2, .cmddata = {0xAF,0x24} },
{ .cmdlen = 2, .cmddata = {0xB0,0x29} },
{ .cmdlen = 2, .cmddata = {0xB1,0x4F} },
{ .cmdlen = 2, .cmddata = {0xB2,0x5C} },
{ .cmdlen = 2, .cmddata = {0xB3,0x3E} },
{ .cmdlen = 2, .cmddata = {0xC0,0x00} },
{ .cmdlen = 2, .cmddata = {0xC1,0x17} },
{ .cmdlen = 2, .cmddata = {0xC2,0x26} },
{ .cmdlen = 2, .cmddata = {0xC3,0x13} },
{ .cmdlen = 2, .cmddata = {0xC4,0x16} },
{ .cmdlen = 2, .cmddata = {0xC5,0x29} },
{ .cmdlen = 2, .cmddata = {0xC6,0x1E} },
{ .cmdlen = 2, .cmddata = {0xC7,0x1F} },
{ .cmdlen = 2, .cmddata = {0xC8,0x8B} },
{ .cmdlen = 2, .cmddata = {0xC9,0x1D} },
{ .cmdlen = 2, .cmddata = {0xCA,0x2A} },
{ .cmdlen = 2, .cmddata = {0xCB,0x7B} },
{ .cmdlen = 2, .cmddata = {0xCC,0x1A} },
{ .cmdlen = 2, .cmddata = {0xCD,0x19} },
{ .cmdlen = 2, .cmddata = {0xCE,0x4E} },
{ .cmdlen = 2, .cmddata = {0xCF,0x24} },
{ .cmdlen = 2, .cmddata = {0xD0,0x29} },
{ .cmdlen = 2, .cmddata = {0xD1,0x4D} },
{ .cmdlen = 2, .cmddata = {0xD2,0x5C} },
{ .cmdlen = 2, .cmddata = {0xD3,0x3E} },
{ .cmdlen = 4, .cmddata = {0xFF,0x98,0x81,0x00} },
{ .cmdlen = 2, .cmddata = {0x11,0x00} },
{ .cmdlen = 2, .cmddata = {0x29,0x00} },
{ .cmdlen = 2, .cmddata = {0x35,0x00} },
{ .cmdlen = 2, .cmddata = {0x00,0x00} },
};
struct mj070bi30ia2_desc {
const struct mingjun_panel_cmd *on_cmds;
unsigned int on_cmds_num;
const struct display_timing *timing;
};
struct mj070bi30ia2_panel_priv {
struct udevice *backlight;
struct gpio_desc reset;
const struct mj070bi30ia2_desc *desc;
};
static const struct display_timing mj070bi30ia2_timing = {
.pixelclock.typ = 75750000,
.hactive.typ = 800,
.hfront_porch.typ = 48,
.hback_porch.typ = 80,
.hsync_len.typ = 32,
.vactive.typ = 1280,
.vfront_porch.typ = 3,
.vback_porch.typ = 24,
.vsync_len.typ = 10,
.flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW,
};
static int mingjun_send_mipi_cmds(struct udevice *panel,
struct mingjun_panel_cmd *cmds)
{
struct mipi_dsi_panel_plat *plat = dev_get_platdata(panel);
struct mipi_dsi_device *dsi = plat->device;
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(panel);
int ret;
int i;
for (i = 0; i < priv->desc->on_cmds_num; i++) {
ret = mipi_dsi_dcs_write_buffer(dsi,
&(cmds[i].cmddata[0]), cmds[i].cmdlen);
if (ret < 0)
return ret;
}
dev_info(dsi->dev, "%s: send initial instruction\n", __func__);
return 0;
}
static int mj070bi30ia2_panel_setup(struct udevice *panel)
{
int ret;
u8 power_mode;
const struct mj070bi30ia2_instr *instr;
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(panel);
struct mipi_dsi_panel_plat *plat = dev_get_platdata(panel);
struct mipi_dsi_device *dsi = plat->device;
dsi->mode_flags |= MIPI_DSI_MODE_LPM;
/* sanity test for connection */
ret = mipi_dsi_dcs_get_power_mode(dsi, &power_mode);
if (ret) {
dev_warn(dsi->dev, "%s: failed to get power mode: %d\n", __func__, ret);
return ret;
}
return 0;
}
static int mj070bi30ia2_panel_prepare(struct udevice *panel)
{
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(panel);
int ret;
/* reset panel */
ret = dm_gpio_set_value(&priv->reset, true);
if (ret)
return ret;
mdelay(1);
ret = dm_gpio_set_value(&priv->reset, false);
if (ret)
return ret;
mdelay(10);
return 0;
}
static int mj070bi30ia2_panel_enable(struct udevice *panel)
{
int ret;
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(panel);
struct mipi_dsi_panel_plat *plat = dev_get_platdata(panel);
struct mipi_dsi_device *dsi = plat->device;
dsi->mode_flags |= MIPI_DSI_MODE_LPM;
ret = mingjun_send_mipi_cmds(panel, priv->desc->on_cmds);
if (ret < 0) {
dev_err(panel->dev, "failed to send DCS Init Code: %d\n", ret);
return ret;
}
ret = mipi_dsi_dcs_set_tear_on(dsi, MIPI_DSI_DCS_TEAR_MODE_VBLANK);
if (ret)
return ret;
ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
if (ret)
return ret;
mdelay(10);
ret = mipi_dsi_dcs_set_display_on(dsi);
if (ret)
return ret;
#if 0
ret = backlight_enable(priv->backlight);
if (ret)
return ret;
#endif
return 0;
}
static int mj070bi30ia2_panel_enable_backlight(struct udevice *dev)
{
int ret;
struct mipi_dsi_panel_plat *plat = dev_get_platdata(dev);
struct mipi_dsi_device *device = plat->device;
ret = mipi_dsi_attach(device);
if (ret < 0)
return ret;
ret = mj070bi30ia2_panel_setup(dev);
if (ret)
return ret;
ret = mj070bi30ia2_panel_enable(dev);
if (ret)
return ret;
return 0;
}
static int mj070bi30ia2_panel_get_display_timing(struct udevice *dev,
struct display_timing *timings)
{
struct mipi_dsi_panel_plat *plat = dev_get_platdata(dev);
struct mipi_dsi_device *device = plat->device;
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(dev);
memcpy(timings, priv->desc->timing, sizeof(*timings));
device->lanes = 4;
device->format = MIPI_DSI_FMT_RGB888;
device->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST;
return 0;
}
static int mj070bi30ia2_panel_ofdata_to_platdata(struct udevice *dev)
{
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(dev);
int ret;
ret = gpio_request_by_name(dev, "reset-gpios", 0,
&priv->reset, GPIOD_IS_OUT);
if (ret) {
dev_err(dev, "Warning: cannot get reset GPIO\n");
return ret;
}
ret = uclass_get_device_by_phandle(UCLASS_PANEL_BACKLIGHT, dev,
"backlight", &priv->backlight);
if (ret) {
dev_err(dev, "Cannot get backlight: ret=%d\n", ret);
}
/* TODO: get lanes, format and mode from dtb */
return 0;
}
static int mj070bi30ia2_panel_probe(struct udevice *panel)
{
int ret;
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(panel);
priv->desc = (const struct mj070bi30ia2_desc *)dev_get_driver_data(panel);
/* prepare_panel */
ret = mj070bi30ia2_panel_prepare(panel);
if (ret) {
dev_err(panel, "failed to prepare panel : %d\n", ret);
return ret;
}
return 0;
}
static int mj070bi30ia2_panel_remove(struct udevice *panel)
{
struct mj070bi30ia2_panel_priv *priv = dev_get_priv(panel);
return dm_gpio_set_value(&priv->reset, true);
}
static const struct mj070bi30ia2_desc mj070bi30ia2_desc = {
.on_cmds = mingjun_on_cmds,
.on_cmds_num = ARRAY_SIZE(mingjun_on_cmds),
.timing = &mj070bi30ia2_timing,
};
static const struct panel_ops mj070bi30ia2_panel_ops = {
.enable_backlight = mj070bi30ia2_panel_enable_backlight,
.get_display_timing = mj070bi30ia2_panel_get_display_timing,
};
static const struct udevice_id mj070bi30ia2_panel_ids[] = {
{ .compatible = "mingjun,mj070bi30ia2", .data = (ulong)&mj070bi30ia2_desc },
{ /* sentinel */ }
};
U_BOOT_DRIVER(mj070bi30ia2_panel) = {
.name = "mj070bi30ia2_panel",
.id = UCLASS_PANEL,
.of_match = mj070bi30ia2_panel_ids,
.ops = &mj070bi30ia2_panel_ops,
.ofdata_to_platdata = mj070bi30ia2_panel_ofdata_to_platdata,
.probe = mj070bi30ia2_panel_probe,
.remove = mj070bi30ia2_panel_remove,
.platdata_auto_alloc_size = sizeof(struct mipi_dsi_panel_plat),
.priv_auto_alloc_size = sizeof(struct mj070bi30ia2_panel_priv),
};

View File

@@ -134,630 +134,51 @@
/*public bootargs in mostly boards, make env 'set_booargs' shorter and clean */
#define ENV_PUBLIC_BOOTARGS "pub_bootargs=rootfstype=ext4 rdinit=/sbin/init rootwait rw earlycon clk_ignore_unused\0"
/* Define board ID in ENV for firmware download protection */
#if defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_A) || \
defined(CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_VAL_A) || \
defined(CONFIG_TARGET_LIGHT_FM_C910_VAL_A)
#define ENV_STR_BOARD "board#=LA\0"
#elif defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_B) || \
defined(CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_VAL_B) || \
defined(CONFIG_TARGET_LIGHT_FM_C910_VAL_B)
#define ENV_STR_BOARD "board#=LB\0"
#elif defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_LPI4A) || \
defined(CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_LPI4A) || \
defined(CONFIG_TARGET_LIGHT_FM_C910_LPI4A) || \
defined(CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_RVBOOK) || \
defined(CONFIG_TARGET_LIGHT_FM_C910_RVBOOK)
#define CONFIG_MISC_INIT_R
#define ENV_STR_BOARD "board#=LP\0"
#elif defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_BEAGLE) || \
defined(CONFIG_TARGET_LIGHT_FM_C910_BEAGLE)
#define ENV_STR_BOARD "board#=LG\0"
#elif defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_ANT_REF) || \
defined(CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_ANT_REF) || \
defined(CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF)
#define ENV_STR_BOARD "board#=LD\0"
#endif
#if defined (CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_VAL_A)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
ENV_STR_BOARD \
"tf_addr=0x100000\0" \
"scriptaddr=0x00500000\0" \
"pxefile_addr_r=0x00600000\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"fdt_addr_r=0x03800000\0" \
"fdtoverlay_addr_r=0x03700000\0" \
"initrd_high=0x1a000000\0" \
"kernel_addr_r=0x00200000\0" \
"ramdisk_addr_r=0x06000000\0" \
"boot_conf_addr_r=0xc0000000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"tee_addr=0x1c000000\0" \
"sec_upgrade_mode=0\0"\
"mmcdev=0\0" \
"mmcpart=c\0" \
"mmcbootpart=2\0" \
"mmcteepart=3\0" \
"mmcsbmetapart=5\0" \
"slot_suffix=a\0" \
"retries=5\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"sbmeta_security_level=1\0" \
"nvpart_name=" NV_PARTITION_NAME"\0" \
"uboot_version=0x0000000000000000\0"\
"tee_version=0x00000000\0"\
"tf_version=0x00000000\0"\
"sbmeta_version=0x00000000\0"\
"fdt_file=th1520-a-val-sec.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot_a,size=200MiB,type=boot;name=tee_a,size=36MiB,type=boot;name=stash,size=16MiB,type=boot;name=sbmeta_a,size=8MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=${nvpart_name},size=1MiB;name=boot_b,size=200M,type=boot;name=tee_b,size=36M,type=boot;name=sbmeta_b,size=8M,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio;ext4load mmc ${mmcdev}:${mmcteepart} $tf_addr trust_firmware.bin; ext4load mmc ${mmcdev}:${mmcteepart} $tee_addr tee.bin;ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=light_bootab;run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; run finduuid; run set_bootargs; sbmetaboot; measureboot;run load_str;booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_VAL_B)
#define CONFIG_EXTRA_ENV_SETTINGS \
"opensbi_addr=0x0\0" \
"fwaddr=0x10000000\0" \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
ENV_STR_BOARD \
"tf_addr=0x100000\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"tee_addr=0x1c000000\0" \
"sec_upgrade_mode=0\0"\
"mmcdev=0\0" \
"mmcpart=a\0" \
"mmcbootpart=2\0" \
"mmcteepart=3\0" \
"mmcsbmetapart=5\0" \
"slot_suffix=a\0" \
"retries=5\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"sbmeta_security_level=1\0" \
"nvpart_name=" NV_PARTITION_NAME"\0" \
"uboot_version=0x0000000000000000\0"\
"tee_version=0x00000000\0"\
"tf_version=0x00000000\0"\
"sbmeta_version=0x00000000\0"\
"fdt_file=th1520-b-product-sec.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot_a,size=200MiB,type=boot;name=tee_a,size=36MiB,type=boot;name=stash,size=16MiB,type=boot;name=sbmeta_a,size=8MiB,type=boot;name=${nvpart_name},size=1MiB;name=boot_b,size=200M,type=boot;name=tee_b,size=36M,type=boot;name=sbmeta_b,size=8M,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio;ext4load mmc ${mmcdev}:${mmcteepart} $tf_addr trust_firmware.bin; ext4load mmc ${mmcdev}:${mmcteepart} $tee_addr tee.bin;ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=light_bootab;run bootcmd_load; fixup_memory_region; bootslave; run finduuid; run set_bootargs; sbmetaboot; run load_str;booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_ANT_REF)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
ENV_STR_BOARD \
"tf_addr=0x100000\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"tee_addr=0x1c000000\0" \
"sec_upgrade_mode=0\0"\
"mmcdev=0\0" \
"mmcpart=6\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"uboot_version=0x0000000000000000\0"\
"tee_version=0x00000000\0"\
"tf_version=0x00000000\0"\
"fdt_file=th1520-ant-ref-sec.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=tf,size=50MiB,type=boot;name=tee,size=50MiB,type=boot;name=stash,size=50MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio;run load_str; ext4load mmc 0:3 $tf_addr trust_firmware.bin; ext4load mmc 0:4 $tee_addr tee.bin;ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; fixup_memory_region; bootslave; run finduuid; run set_bootargs; secboot; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_RVBOOK)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
ENV_STR_BOARD \
"tf_addr=0x100000\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"tee_addr=0x1c000000\0" \
"sec_upgrade_mode=0\0"\
"mmcdev=0\0" \
"mmcpart=c\0" \
"mmcbootpart=2\0" \
"mmcteepart=3\0" \
"mmcsbmetapart=5\0" \
"slot_suffix=a\0" \
"retries=5\0" \
ENV_KERNEL_LOGLEVEL \
"sbmeta_security_level=1\0" \
"nvpart_name=" NV_PARTITION_NAME"\0" \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"uboot_version=0x0000000000000000\0"\
"tee_version=0x00000000\0"\
"tf_version=0x00000000\0"\
"sbmeta_version=0x00000000\0"\
"fdt_file=th1520-rvbook-product-sec.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot_a,size=200MiB,type=boot;name=tee_a,size=36MiB,type=boot;name=stash,size=16MiB,type=boot;name=sbmeta_a,size=8MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=${nvpart_name},size=1MiB;name=boot_b,size=200M,type=boot;name=tee_b,size=36M,type=boot;name=sbmeta_b,size=8M,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio;ext4load mmc ${mmcdev}:${mmcteepart} $tf_addr trust_firmware.bin; ext4load mmc ${mmcdev}:${mmcteepart} $tee_addr tee.bin;ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=light_bootab;run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; run finduuid; run set_bootargs; sbmetaboot; run load_str;booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_LIGHT_SEC_BOOT_WITH_VERIFY_LPI4A)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
ENV_STR_BOARD \
"tf_addr=0x100000\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"tee_addr=0x1c000000\0" \
"sec_upgrade_mode=0\0"\
"mmcdev=0\0" \
"mmcpart=c\0" \
"mmcbootpart=2\0" \
"mmcteepart=3\0" \
"mmcsbmetapart=5\0" \
"slot_suffix=a\0" \
"retries=5\0" \
ENV_KERNEL_LOGLEVEL \
"sbmeta_security_level=1\0" \
"nvpart_name=" NV_PARTITION_NAME"\0" \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"uboot_version=0x0000000000000000\0"\
"tee_version=0x00000000\0"\
"tf_version=0x00000000\0"\
"sbmeta_version=0x00000000\0"\
"fdt_file=th1520-lpi4a-product-sec.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot_a,size=200MiB,type=boot;name=tee_a,size=36MiB,type=boot;name=stash,size=16MiB,type=boot;name=sbmeta_a,size=8MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=${nvpart_name},size=1MiB;name=boot_b,size=200M,type=boot;name=tee_b,size=36M,type=boot;name=sbmeta_b,size=8M,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio;ext4load mmc ${mmcdev}:${mmcteepart} $tf_addr trust_firmware.bin; ext4load mmc ${mmcdev}:${mmcteepart} $tee_addr tee.bin;ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=light_bootab;run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; run finduuid; run set_bootargs; sbmetaboot; run load_str;booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_A) || defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_B) || \
defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_LPI4A) || defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_VAL_BEAGLE) || \
defined(CONFIG_LIGHT_ANDROID_BOOT_IMAGE_ANT_REF)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
ENV_STR_SERIAL \
ENV_STR_BOARD \
"tf_addr=0x0\0" \
"tee_addr=0x1c000000\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"ramdisk_addr=0x02000000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"fwaddr=0x10000000\0"\
"boot_ab=_a\0"\
"sb_emulater=1\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"kernel_addr_r=0x00200000\0" \
"kdump_buf=180M\0" \
"boottype=mmc\0" \
"mmcbootpart=2\0" \
"mmcteepart=8\0" \
ENV_KERNEL_LOGLEVEL \
ENV_KERNEL_KDUMP \
ENV_STR_BOOT_DELAY \
"fdt_file=light-val.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=sparse,size=2031kb;name=bootpart_a,size=16MiB;name=bootpart_b,size=16MiB;name=boot_a,size=32MiB;name=boot_b,size=32MiB;name=vendor_boot_a,size=32MiB;name=vendor_boot_b,size=32MiB;name=tee_a,size=32MiB;name=tee_b,size=32MiB;name=dtbo_a,size=8MiB;name=dtbo_b,size=8MiB;name=super,size=4096MiB;name=vbmeta_a,size=1MiB;name=vbmeta_b,size=1MiB;name=vbmeta_system_a,size=1MiB;name=vbmeta_system_b,size=1MiB;name=misc,size=2MiB;name=metadata,size=16MiB;name=userdata,size=-\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
"set_bootargs=setenv bootargs console=ttyS0,115200 earlycon clk_ignore_unused loop.max_part=7 loglevel=${kernel_loglevel} crashkernel=${kdump_buf} init=/init bootconfig video=HDMI-A-1:800x600-32@60 firmware_class.path=/vendor/firmware androidboot.serialno=${serial#}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"sec_m_load=ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin\0"\
"bootcmd_load=bootandroid;secimg_load;run sec_m_load;run load_aon;run load_c906_audio;fdt addr ${dtb_addr};fdt resize 100;fdt chosen;\0" \
"bootcmd=run bootcmd_load; fixup_memory_region; bootslave; run finduuid; run set_bootargs; bootm $kernel_addr $ramdisk_addr:$ramdisk_size $dtb_addr;\0" \
"\0"
"default_mmcdev=1\0" \
"emmc_dev=0\0" \
"sdcard_dev=1\0" \
"mmc_select=if test -e ${boottype} ${default_mmcdev}:${mmcbootpart} ${boot_conf_file}; then mmcdev=1; else mmcdev=0; fi;\0" \
"boot_conf_file=/extlinux/extlinux.conf\0" \
"uuid_rootfsA=80a5a8e9-c744-491a-93c1-4f4194fd690a\0" \
"uuid_swap=5ebcaaf0-e098-43b9-beef-1f8deedd135e\0" \
"partitions=name=table,size=2031KB;name=boot,size=500MiB,type=boot;name=swap,size=4096MiB,type=swap,uuid=${uuid_swap};name=root,size=-,type=linux,uuid=${uuid_rootfsA}\0" \
"gpt_partition=gpt write mmc ${emmc_dev} $partitions\0" \
"sdcard_gpt_partition=gpt write mmc ${sdcard_dev} $partitions\0" \
"load_aon=load ${boottype} ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0" \
"load_c906_audio=load ${boottype} ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0" \
"load_str=load ${boottype} ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0" \
"load_opensbi=load ${boottype} ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin\0" \
"load_usb=usb start; load usb ${mmcdev}:${mmcbootpart} ${boot_conf_addr_r} ${boot_conf_file}; if test -e usb ${mmcdev}:${mmcbootpart} ${boot_conf_file}; then setenv boottype usb; fi;\0" \
"bootcmd_load=run load_usb; run mmc_select; run load_aon; run load_c906_audio; run load_str; run load_opensbi\0" \
"bootcmd=run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; sysboot ${boottype} ${mmcdev}:${mmcbootpart} any $boot_conf_addr_r $boot_conf_file;\0" \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
"\0"
#else
#if defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_A)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
ENV_STR_BOARD \
"mmcdev=0\0" \
"mmcpart=5\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-a-product.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc 0:2 $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc 0:2 $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc 0:2 $opensbi_addr fw_dynamic.bin; ext4load mmc 0:2 $dtb_addr ${fdt_file}; ext4load mmc 0:2 $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_B)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-b-product.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file};ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image;\0" \
"bootcmd=run bootcmd_load; fixup_memory_region; bootslave ; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_B_REF)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-b-ref.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file};ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image;\0" \
"bootcmd=run bootcmd_load; bootslave ; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-b-power.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-ant-ref.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; fixup_memory_region; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-ant-discrete.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-beagle.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; fixup_memory_region; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_RVBOOK)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=5\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-rvbook-product.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=5\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-lpi4a-product.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_A_REF)
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=3\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-a-ref.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#else
#define CONFIG_EXTRA_ENV_SETTINGS \
"splashimage=0x30000000\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffffffffffff\0" \
"opensbi_addr=0x0\0" \
"dtb_addr=0x03800000\0" \
"kernel_addr=0x00200000\0" \
"aon_ram_addr=0xffffef8000\0" \
"audio_ram_addr=0x32000000\0" \
"str_ram_addr=0xffe0000000\0" \
"fwaddr=0x10000000\0"\
"mmcdev=0\0" \
"mmcpart=5\0" \
"mmcbootpart=2\0" \
ENV_KERNEL_LOGLEVEL \
"kdump_buf=180M\0" \
ENV_STR_BOOT_DELAY \
"fdt_file=th1520-a-val.dtb\0" \
"uuid_rootfs=80a5a8e9-c744-491a-93c1-4f4194fd690b\0" \
"partitions=name=table,size=2031KB;name=boot,size=200MiB,type=boot;name=swap,size=1536MiB,type=boot;name=fastresume,size=512MiB,type=boot;name=root,size=-,type=linux,uuid=${uuid_rootfs}\0" \
"finduuid=part uuid mmc ${mmcdev}:${mmcpart} uuid\0" \
"gpt_partition=gpt write mmc ${mmcdev} $partitions\0" \
ENV_PUBLIC_BOOTARGS \
"set_bootargs=setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} ${pub_bootargs} loglevel=${kernel_loglevel} eth=$ethaddr crashkernel=${kdump_buf} ${resume_bootargs}\0" \
"load_aon=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_aon_fpga.bin;cp.b $fwaddr $aon_ram_addr $filesize;bootaon\0"\
"load_c906_audio=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr light_c906_audio.bin;cp.b $fwaddr $audio_ram_addr $filesize\0"\
"load_str=ext4load mmc ${mmcdev}:${mmcbootpart} $fwaddr str.bin;cp.b $fwaddr $str_ram_addr $filesize\0"\
"bootcmd_load=run load_aon;run load_c906_audio; run load_str; ext4load mmc ${mmcdev}:${mmcbootpart} $opensbi_addr fw_dynamic.bin; ext4load mmc ${mmcdev}:${mmcbootpart} $dtb_addr ${fdt_file}; ext4load mmc ${mmcdev}:${mmcbootpart} $kernel_addr Image\0" \
"bootcmd=run bootcmd_load; chk_hibernate; fixup_memory_region; bootslave; run finduuid; run set_bootargs; booti $kernel_addr - $dtb_addr;\0" \
"\0"
#endif
#endif
#endif /* __CONFIG_H */

31
include/extension_board.h Normal file
View File

@@ -0,0 +1,31 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* (C) Copyright 2021
* Köry Maincent, Bootlin, <kory.maincent@bootlin.com>
*/
#ifndef __EXTENSION_SUPPORT_H
#define __EXTENSION_SUPPORT_H
struct extension {
struct list_head list;
char name[32];
char owner[32];
char version[32];
char overlay[32];
char other[32];
};
/**
* extension_board_scan - Add system-specific function to scan extension board.
* @param extension_list List of extension board information to update.
* @return the number of extension.
*
* This function is called if CONFIG_CMD_EXTENSION is defined.
* Needs to fill the list extension_list with elements.
* Each element need to be allocated to an extension structure.
*
*/
int extension_board_scan(struct list_head *extension_list);
#endif /* __EXTENSION_SUPPORT_H */

View File

@@ -326,6 +326,8 @@ int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
int fdt_overlay_apply_verbose(void *fdt, void *fdto);
int fdt_valid(struct fdt_header **blobp);
/**
* fdt_get_cells_len() - Get the length of a type of cell in top-level nodes
*

View File

@@ -0,0 +1,53 @@
# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2020
# Author: Kory Maincent <kory.maincent@bootlin.com>
# Test U-Boot's "extension" commands.
import os
import pytest
import u_boot_utils
overlay_addr = 0x1000
SANDBOX_DTB='arch/sandbox/dts/sandbox.dtb'
OVERLAY_DIR='arch/sandbox/dts/'
def load_dtb(u_boot_console):
u_boot_console.log.action('Loading devicetree to RAM...')
u_boot_console.run_command('host load hostfs - $fdt_addr_r %s' % (os.path.join(u_boot_console.config.build_dir, SANDBOX_DTB)))
u_boot_console.run_command('fdt addr $fdt_addr_r')
@pytest.mark.buildconfigspec('cmd_fdt')
@pytest.mark.boardspec('sandbox')
def test_extension(u_boot_console):
"""Test the 'extension' command."""
load_dtb(u_boot_console)
output = u_boot_console.run_command('extension list')
assert('No extension' in output)
output = u_boot_console.run_command('extension scan')
assert output == 'Found 2 extension board(s).'
output = u_boot_console.run_command('extension list')
assert('overlay0.dtbo' in output)
assert('overlay1.dtbo' in output)
u_boot_console.run_command_list([
'setenv extension_overlay_addr %s' % (overlay_addr),
'setenv extension_overlay_cmd \'host load hostfs - ${extension_overlay_addr} %s${extension_overlay_name}\'' % (os.path.join(u_boot_console.config.build_dir, OVERLAY_DIR))])
output = u_boot_console.run_command('extension apply 0')
assert('bytes read' in output)
output = u_boot_console.run_command('fdt print')
assert('button3' in output)
output = u_boot_console.run_command('extension apply all')
assert('bytes read' in output)
output = u_boot_console.run_command('fdt print')
assert('button4' in output)