Compare commits

...

165 Commits

Author SHA1 Message Date
Neucrack
891bfba94f fix pmu bug for MaixCAM-Pro 2025-08-04 20:36:48 +08:00
Neucrack
6aedfa43db fix init dev failed error 2025-07-30 13:34:59 +08:00
Neucrack
21ffdadc78 fix gitignore file error 2025-07-29 15:27:01 +08:00
Neucrack
64510bd44d optimize startup logo load and add PyQT5 package 2025-07-28 18:55:41 +08:00
Neucrack
4c9e842ee1 Merge pull request #90 from mcpanl/patch-1
Add USB audio support
2025-05-11 13:24:06 +08:00
洒脱
017c2724d2 Add USB audio support 2025-05-10 21:24:46 +08:00
lxowalle
639ae39291 * add isp config for os04a10 90fps 2025-04-21 15:31:01 +08:00
Neucrack
a3ccb527b2 add usb adbd support, enable with create /boot/usb.adbd file 2025-04-17 19:58:46 +08:00
lxowalle
e4e133f3df * fix audio bug 2025-03-11 18:02:41 +08:00
Neucrack
74169741e0 add compatibility with old mac addr config 2025-01-14 11:03:07 +08:00
Neucrack
48724b1a0d optimize uuid usage in init script 2025-01-11 15:35:19 +08:00
lxowalle
c4bd8d00cc * fix cvi_base deadlock2 2025-01-04 14:12:46 +08:00
lxowalle
d3b91ff1fd * fix cvi_base deadlock 2025-01-04 13:57:18 +08:00
lxowalle
80cd8fe0cf * optimize make_logo.sh 2024-12-25 13:46:24 +08:00
Neucrack
b8e61612e5 Merge pull request #71 from MK16kawai/main
[i2c@gpio5] Support for changing sda and scl at insmod time.
2024-12-20 19:04:06 +08:00
Mk16kawai
370d332f61 [i2c@gpio5] Support for changing sda and scl at insmod time. 2024-12-20 18:11:31 +08:00
taorye
1fcc2fd409 Merge branch 'feat_uvc_server_standalone_mode'
1. feat: UvcServer run in standalone mode without uvc-gadget-server.elf.
2. opt: provide 2560x1440.
2024-12-18 20:53:18 +08:00
taorye
b2af9afb7b fix: implement stop_server and restrict the server to run only in standalone mode. 2024-12-18 16:00:48 +08:00
taorye
6773bbd49c feat: up to 2560x1440 and all resulotions will be enabled default 2024-12-18 15:43:36 +08:00
taorye
3ce208ed4a Merge branch 'fix-uvc-gadget-cant-parse-config-file-with-first-empty-line'
1. provide source file of uvc-gadget-server
2. fix uvc_tool.sh to parse config file right
2024-12-16 19:22:39 +08:00
taorye
32fedadb95 fix: uvc_tool.sh cant provide empty line at first 2024-12-16 19:16:22 +08:00
taorye
71366bba6d chore: backup source code for the future 2024-12-16 18:58:08 +08:00
taorye
5394d82d36 Merge branch 'feat_uvc_gadget'
1. fix: ensure mjpg and yuyv formats both exist.
2. feat: add support for mjpeg streaming with mask 0x80.
3. feat: add support for auto config formats and set resolution limit.
2024-12-16 18:34:09 +08:00
taorye
3e15254fda feat: add support for auto config formats and set resolution limit 2024-12-16 18:33:50 +08:00
taorye
d687d7c89f feat: add support for streaming mjpg with 0x80 masked 2024-12-16 11:32:08 +08:00
taorye
e0857d878c fix: ensure mjpg and yuyv both exist 2024-12-16 11:31:08 +08:00
taorye
2506969b13 Merge branch 'feat_uvc_gadget'
1. feat: add uvc_tool.sh for uvc_gadget configfs mount and unmount.
2. feat: use uvc-gadget-server.elf to handle with uvc_gadget and provide shm to update framebuffer.
3. fix: expand img size to 1.5GB for additional files to be able to embedded in.
4. fix: high CPU usage for select unneeded dfds while !udev->is_streaming
2024-12-13 12:01:19 +08:00
taorye
71bcc30754 fix: high CPU usage for select unneeded dfds while !udev->is_streaming 2024-12-13 11:56:19 +08:00
taorye
c3b98df9aa fix: increase rootfs.sd's size from 1100M to 1536M 2024-12-12 18:16:53 +08:00
taorye
05cc1b41a9 feat: add support for uvc-gadget and provide a server default 2024-12-12 16:08:02 +08:00
Neucrack
c9179876b7 Merge pull request #68 from MK16kawai/main
[panel] support st7701_d310t9362v1
2024-12-10 16:53:22 +08:00
Mk16kawai
5613f01f4c [panel] support st7701_d310t9362v1 2024-12-10 16:36:33 +08:00
Neucrack
ae8d34b5c9 Merge pull request #67 from MK16kawai/main
[i2c5@gpio] supports dynamic rate modification
2024-12-10 15:07:06 +08:00
Mk16kawai
b9189b85b1 [i2c5@gpio] supports dynamic rate modification 2024-12-09 18:12:24 +08:00
Neucrack
fae0437895 fix customize build RNDIS and no /device_key file bug 2024-12-09 17:50:23 +08:00
Neucrack
540e9435a1 read pannel from /boot/board 2024-11-29 11:41:01 +08:00
lxowalle
fe0d6c8413 * fix uvc bug 2024-11-28 14:38:53 +08:00
Neucrack
441888b5bf fix make_logo script error 2024-11-26 10:28:05 +08:00
Neucrack
3042208f78 read panel from /boot/board instead of uEnv.txt 2024-11-25 16:35:52 +08:00
Neucrack
c99d1839c6 Merge pull request #63 from MK16kawai/main
update panels for sample_dsi
2024-11-21 15:23:50 +08:00
Mk16kawai
26beec94d8 update panels for sample_dsi 2024-11-21 11:18:17 +08:00
Neucrack
1d5c76c297 Merge pull request #61 from 916BGAI/main
enable uinput driver and update AXP2101 firmware.
2024-11-08 15:22:45 +08:00
916BGAI
a652cdf214 enable uinput driver to simulate input events in user space 2024-11-08 15:10:53 +08:00
916BGAI
8ad8100af7 update AXP2101 firmware, enable POWERON IRQ 2024-11-08 15:10:40 +08:00
BuGu
2588dd8dec Merge pull request #58 from 916BGAI/main
add spi lcd support
2024-10-22 16:36:28 +08:00
916BGAI
0fd87890d8 add spi lcd support 2024-10-22 16:29:46 +08:00
Neucrack
1dd70fb86b Merge pull request #57 from 916BGAI/main
fix lct024bsi20 mipi porch
2024-10-18 14:26:13 +08:00
916BGAI
fab2c7e9ec fix lct024bsi20 mipi porch 2024-10-18 11:30:23 +08:00
916BGAI
45fffd0c2d add -latomic to linker flags for scene_auto sample 2024-10-17 13:37:32 +08:00
BuGu
e0118303d0 Merge pull request #56 from 916BGAI/main
boost sc035gs fps to 180
2024-10-16 16:17:08 +08:00
916BGAI
835cae07f3 boost sc035gs fps to 180 2024-10-16 16:09:13 +08:00
BuGu
75fc0b5f72 Merge pull request #53 from 916BGAI/main
Add AIC8800DC support and add axp2101 0x47 version support
2024-10-15 19:08:42 +08:00
lxowalle
d6ba0b0a9e * disable vi_dbg_handler 2 2024-10-14 17:35:14 +08:00
lxowalle
b639458b1c * disable vi_dbg_handler 2024-10-14 15:21:27 +08:00
916BGAI
c5e7bd8e8a add axp2101 0x47 version support 2024-10-12 16:47:41 +08:00
916BGAI
6aa6f6005a Merge branch 'sipeed:main' into main 2024-10-12 16:10:14 +08:00
Neucrack
a0dd574a11 add change rootfs missing file 2024-09-26 19:11:22 +08:00
Neucrack
632a76b919 fix tp for maixcampro 2024-09-26 18:46:49 +08:00
Neucrack
245a5827da change 2.4 inch pannel name 2024-09-26 18:12:06 +08:00
Neucrack
aa8b82b114 add quarks for hikcamera 2024-09-26 11:05:10 +08:00
916BGAI
60994cf636 Add AIC8800DC support 2024-09-23 14:21:25 +08:00
lxowalle
9c961a8be6 * fix can't snap 12bpp raw 2024-09-20 14:00:01 +08:00
BuGu
6f4aafa54e Merge pull request #49 from 916BGAI/main
Optimize S05tp and hyn touch driver
2024-09-19 14:15:36 +08:00
lxowalle
2e8ca21757 * update ov2685 isp config 2024-09-19 09:42:59 +08:00
916BGAI
0a7a27260d Optimize S05tp and hyn touch driver 2024-09-14 09:46:34 +08:00
BuGu
40170c1672 Merge pull request #46 from 916BGAI/main
Optimize AXP2101 PMU
2024-09-06 10:24:13 +08:00
BuGu
752683e13b Merge branch 'main' of https://github.com/sipeed/LicheeRV-Nano-Build 2024-09-05 10:28:06 +08:00
BuGu
67c7a6c36f Update support for HID
Keyboard, mouse, touchpad
2024-09-05 10:27:47 +08:00
916BGAI
d116757f47 Optimize AXP2101 PMU 2024-09-04 11:38:11 +08:00
lxowalle
cde77bdacb * add os04a10 and ov2685 config of isp 2024-08-30 16:14:14 +08:00
lxowalle
93c2fb99d4 * optimize ov2685 2024-08-26 13:56:14 +08:00
BuGu
db210284e6 Update rootfs resize
rootfs can be scaled only in the boot script
2024-08-22 15:52:24 +08:00
BuGu
cb7a562241 Merge pull request #42 from TheRainstorm/main
fix ipv4 policy routing kernel config and enable other useful kernel options
2024-08-22 15:34:08 +08:00
BuGu
cbdd1ceee5 Merge pull request #41 from 916BGAI/main
Add axp2101 pmu support and reverse cst7xx touchscreen pos
2024-08-20 17:19:41 +08:00
916BGAI
e26614ad36 Optimize cst7xx touch accuracy 2024-08-20 17:17:25 +08:00
BuGu
82012f20c2 Fixed the eth cable detection issue 2024-08-19 09:43:31 +08:00
Fuyan Yuan
d80ada2d6f buildroot: enable netcat, mtr utils 2024-08-18 21:35:18 +08:00
Fuyan Yuan
38156d546e kernel config: enable net namespace, TCP BBR, GRE and VXLAN tunnel protocol 2024-08-18 21:35:18 +08:00
Fuyan Yuan
4836f6e127 kernel config: fix ipv4 policy routing 2024-08-18 21:35:17 +08:00
Neucrack
713161599e add rndis for basesystem and change ion size to 105MB 2024-08-16 10:27:36 +08:00
916BGAI
ebfa11ffba Add AXP2101 PMU support 2024-08-15 16:32:37 +08:00
916BGAI
a2d9fd0f6a Reverse cst7xx touchscreen posx and posy 2024-08-15 15:59:27 +08:00
Neucrack
0de38f39d1 support gadget ncm and rndis at the same time 2024-08-12 19:28:54 +08:00
BuGu
ab3c5d9329 Merge pull request #39 from TheRainstorm/main
add support for policy routing and others
2024-08-12 15:50:14 +08:00
Fuyan Yuan
bb26cf2bc6 buildroot config: add package bash 2024-08-09 20:41:27 +08:00
Fuyan Yuan
fc359c8a6d kernel config: add support for policy routing, veth 2024-08-09 20:41:02 +08:00
lxowalle
dfe981e5e1 * delete unused picture 2024-08-09 09:54:48 +08:00
lxowalle
9f330c8b83 * support ov2685 2024-08-08 18:53:18 +08:00
BuGu
d6a1a42ae4 Merge pull request #37 from 916BGAI/main
Fix the D240SI31 Panel and add support for cst7xx touchscreen
2024-08-08 14:36:11 +08:00
Neucrack
b0a69a2853 set default to ncm 2024-08-07 15:57:37 +08:00
Neucrack
33e46c1109 add USB gadget NCM driver 2024-08-07 14:44:46 +08:00
916BGAI
bd92529ed8 Fix the D240SI31 Panel and add support for cst7xx touchscreen 2024-08-06 15:37:24 +08:00
Neucrack
378a06730f optimize USB RNDIS driver, now windows can recognize it 2024-08-06 15:09:58 +08:00
某杰同学
bef2ca41ab Revision LicheeRV Nano USB PID 2024-08-05 21:07:49 -07:00
某杰同学
c048db4984 Merge branch 'main' of https://github.com/sipeed/LicheeRV-Nano-Build 2024-08-05 20:58:00 -07:00
某杰同学
6be3e66437 Improve the identification rate of ETH cables 2024-08-05 20:47:02 -07:00
某杰同学
4bb531573b Boost the SC035 FPS
30 - 60fps
2024-08-05 20:45:14 -07:00
Neucrack
abccc497e3 optimize usb script 2024-08-05 17:32:30 +08:00
Neucrack
e5bd5a8b7f wifi script support ap mode 2024-08-05 16:04:06 +08:00
某杰同学
fc2bb198df Fix the time zone setting 2024-07-24 19:19:26 -07:00
某杰同学
587710af28 Add support for WIREGUARD, RNDIS HOST, USB ACM HOST 2024-07-19 20:08:18 -07:00
某杰同学
65b0a63ff1 Merge branch 'main' of https://github.com/sipeed/LicheeRV-Nano-Build 2024-07-16 18:47:14 -07:00
某杰同学
3541f19a68 Add support for D240SI31 Panel 2024-07-16 18:41:43 -07:00
Neucrack
2459349f47 remove soph_mipi_tx.ko load 2024-07-09 18:09:44 +08:00
Neucrack
165c13fc1e Merge pull request #24 from 981213/main
delete libraries copied/built from middleware/v2/modules
2024-07-09 10:28:02 +08:00
Neucrack
6f65fa1025 Merge branch 'main' into main 2024-07-09 10:27:52 +08:00
Neucrack
e4064b1b99 add python pkgs 2024-07-09 10:25:52 +08:00
某杰同学
cbe64d6240 Added support for IPMITOOL 2024-06-24 18:50:41 -07:00
某杰同学
2d2bfb11f9 Added support for USB remote wakeup 2024-06-19 03:04:18 -07:00
某杰同学
a4c7ee1b6c Added support for LCD(MTD70092b) 2024-06-19 03:02:45 -07:00
某杰同学
f85d122178 Added support for firewall 2024-06-19 03:01:12 -07:00
某杰同学
077f1019a6 Added support for ExFAT 2024-06-12 20:35:54 -07:00
某杰同学
56ffe4346a Update sg2002_licheervnano_sd.dts 2024-06-12 02:06:46 -07:00
Lu
538654eec2 fix pwm backlight pinmux 2024-06-03 10:33:32 +08:00
Lu
608df819e8 add rtl8733 support, add logo support 2024-05-31 17:39:15 +08:00
Lu
82a0b70d86 some update 2024-05-28 17:26:25 +08:00
Chuanhong Guo
53e80a481f delete libraries copied/built from middleware/v2/modules
These are either built from source or prebuilt files copied from elsewhere.
Delete them from git repo, and add middleware/v2/lib to .gitignore.
2024-05-28 12:45:45 +08:00
某杰同学
58f1952f91 Fix the problem of GC4653 color anomaly 2024-05-27 19:38:37 -07:00
某杰同学
e4c87a6db0 Update KVM Demo
Update KVM Demo
2024-05-22 01:38:53 -07:00
某杰同学
f88933c279 Update sample_vio_main.c 2024-05-22 01:07:59 -07:00
BuGu
17ac2f04de Upadate KVM sample 2024-05-22 14:37:19 +08:00
BuGu
35bcba4669 Upadate KVM sample 2024-05-22 14:37:05 +08:00
某杰同学
892cddc08e Update kvm sample 2024-05-21 23:27:13 -07:00
某杰同学
05f0c9ec27 Added i2c-3 PinMux
Added i2c-3 PinMux
2024-05-16 02:17:45 -07:00
某杰同学
3c0a81cf90 Merge branch 'main' of https://github.com/sipeed/LicheeRV-Nano-Build 2024-05-16 02:01:57 -07:00
某杰同学
758bfac682 Added support for OLED display of RTSP addresses
Added support for OLED display of RTSP addresses
2024-05-16 01:58:01 -07:00
Lu
9af3db7d4d add bitbang i2c5 & bitbang spi4 2024-05-15 16:38:27 +08:00
某杰同学
20a606bbdb Added support for OA04A10, SC035GS, LT6911, and the new 5-inch LCD
Added support for OA04A10, SC035GS, LT6911, and the new 5-inch display
2024-05-15 00:00:53 -07:00
Lu
646bd60447 initramfs: fix when /dev/console is missing 2024-05-14 09:54:23 +08:00
Lu
f3ea496a1a fix pwm driver, thank sophgo 2024-05-13 18:03:29 +08:00
Lu
83ed7eae08 resize part & file system in initramfs 2024-05-13 17:13:24 +08:00
Lu
e73f5de35d allow user custom dns server 2024-05-13 15:30:26 +08:00
Lu
b9dd20e9e2 buildroot: tpudemo upgrade 2024-05-10 10:11:18 +08:00
Lu
3ee0bd6338 licheervnano: some fix 2024-05-10 10:10:42 +08:00
Lu
90f973b98b ramdisk: add fsck in initramfs 2024-05-10 10:10:05 +08:00
Lu Hui
66fedc1a27 add some userful demo 2024-04-26 09:33:17 +08:00
Lu Hui
6cbfa16a22 genimage: default enable fb & gt9xx 2024-04-25 15:31:16 +08:00
Lu Hui
f9348c4b1c S04fb: show fbpattern on bootup 2024-04-25 15:19:28 +08:00
Lu Hui
eb7c808497 buildroot: lcdtest: upgrade 2024-04-25 15:18:57 +08:00
Lu Hui
81dc709f99 cvitek_SG200X_musl_riscv64_defconfig: remove unused pygame 2024-04-25 15:18:40 +08:00
Lu Hui
5c35c86ea5 S04backlight: hd2280 20% duty 2024-04-25 15:18:10 +08:00
Lu Hui
2f25198422 S02config: fix typo 2024-04-23 10:22:21 +08:00
Lu Hui
c65a118dfd bootargs: default disable console log level, because it too slow 2024-04-23 10:02:28 +08:00
Lu Hui
1eee814e78 README.md: add fat 2024-04-22 18:25:55 +08:00
Lu Hui
03abdfe495 buildroot: opencv4 upgrade 2024-04-22 15:53:52 +08:00
Lu Hui
f9fe939c24 S02config: if sensor config file is empty, rebuild it from default 2024-04-22 15:53:31 +08:00
Lu Hui
d18e19c362 buildroot: cvitek_SG200X_musl_riscv64_defconfig: disable qt 2024-04-22 11:20:20 +08:00
Lu Hui
89c2b52bbd add utils for image modify 2024-04-22 11:19:46 +08:00
Lu Hui
cb03057336 S30wifi: we need compat with old program 2024-04-19 14:17:06 +08:00
Lu Hui
1daa602f32 S30wifi: we need compat with old program 2024-04-19 14:16:07 +08:00
Lu Hui
8d286613a2 fix doc, fix typo 2024-04-18 18:32:21 +08:00
Lu Hui
16d76badff licheervnano: fix S02config, enable spi master 2024-04-10 14:11:38 +08:00
Lu Hui
ecbcc0e374 licheervnano: default enable uart2 controller 2024-04-09 14:08:45 +08:00
Lu Hui
61ecf59b8b 2024 04 08 2024-04-08 13:53:11 +08:00
Lu Hui
232f2234ff update 2024-04-07 09:41:20 +08:00
Lu Hui
ddd40cd715 doc: update 2024-04-07 09:37:53 +08:00
Lu Hui
77980ffd0c merge upstream 2024-04-02 09:14:01 +08:00
Lu Hui
55a54911f7 20240401 2024-04-01 15:38:13 +08:00
Lu Hui
7497e5bc7e gc4653 isp config update 2024-03-27 09:35:26 +08:00
Lu
686c7cb01f licheea53nano: sync 2024-03-26 10:18:15 +08:00
Lu
5e4c168c05 doc update 2024-03-26 09:42:41 +08:00
Lu
262ebabb01 update, for beta board 2024-03-26 09:39:28 +08:00
Lu
a04c837678 20240322 2024-03-22 15:42:49 +08:00
Lu Hui
a5cee7efae 20240319 2024-03-19 16:54:57 +08:00
Lu Hui
feda65ed94 initial arm support 2024-03-19 10:31:35 +08:00
3423 changed files with 462036 additions and 246594 deletions

243
.gitignore vendored
View File

@@ -1,6 +1,12 @@
*~
*.swp
*.o
*.ko
*.d
!init.d
host-tools/
host-tools
*.sqfs
build/tools/common/sd_tools/genimage.cfg.tmp
fsbl/build/*
install/*
@@ -179,3 +185,240 @@ buildroot/board/cvitek/SG200X/overlay/mnt/system/sdk-release
buildroot/board/cvitek/SG200X/overlay/mnt/system/auto.sh
middleware/v2/mod_tmp/*
cscope.out
middleware/v2/3rdparty/inih/ini.d
middleware/v2/3rdparty/inih/ini.o
middleware/v2/component/isp/sensor/cv182x/gcore_gc4653/gc4653_cmos.d
middleware/v2/component/isp/sensor/cv182x/gcore_gc4653/gc4653_cmos.o
middleware/v2/component/isp/sensor/cv182x/gcore_gc4653/gc4653_sensor_ctl.d
middleware/v2/component/isp/sensor/cv182x/gcore_gc4653/gc4653_sensor_ctl.o
middleware/v2/component/isp/sensor/cv182x/ov_os04a10/os04a10_cmos.d
middleware/v2/component/isp/sensor/cv182x/ov_os04a10/os04a10_cmos.o
middleware/v2/component/isp/sensor/cv182x/ov_os04a10/os04a10_sensor_ctl.d
middleware/v2/component/isp/sensor/cv182x/ov_os04a10/os04a10_sensor_ctl.o
middleware/v2/lib/libsns_os04a10.a
middleware/v2/lib/libsns_os04a10.so
middleware/v2/modules/bin/src/cvi_bin.d
middleware/v2/modules/bin/src/cvi_bin.o
middleware/v2/modules/bin/src/md5.d
middleware/v2/modules/bin/src/md5.o
middleware/v2/modules/bin/src/rw_json.d
middleware/v2/modules/bin/src/rw_json.o
middleware/v2/modules/bin/src/vo_bin.d
middleware/v2/modules/bin/src/vo_bin.o
middleware/v2/modules/bin/src/vo_json_struct.d
middleware/v2/modules/bin/src/vo_json_struct.o
middleware/v2/modules/bin/src/vpss_bin.d
middleware/v2/modules/bin/src/vpss_bin.o
middleware/v2/modules/bin/src/vpss_json_struct.d
middleware/v2/modules/bin/src/vpss_json_struct.o
middleware/v2/modules/ive/src/cvi_ive.d
middleware/v2/modules/ive/src/cvi_ive.o
middleware/v2/modules/mipi_tx/src/mipi_tx.d
middleware/v2/modules/mipi_tx/src/mipi_tx.o
middleware/v2/modules/misc/src/cvi_misc.d
middleware/v2/modules/misc/src/cvi_misc.o
middleware/v2/modules/osdc/src/cmpr_canvas.d
middleware/v2/modules/osdc/src/cmpr_canvas.o
middleware/v2/modules/osdc/src/cvi_osdc.d
middleware/v2/modules/osdc/src/cvi_osdc.o
middleware/v2/modules/osdc/src/osd_cmpr.d
middleware/v2/modules/osdc/src/osd_cmpr.o
middleware/v2/modules/sys/src/cvi_base.d
middleware/v2/modules/sys/src/cvi_base.o
middleware/v2/modules/sys/src/cvi_sys.d
middleware/v2/modules/sys/src/cvi_sys.o
middleware/v2/modules/sys/src/cvi_thermal.d
middleware/v2/modules/sys/src/cvi_thermal.o
middleware/v2/modules/sys/src/cvi_tracer.d
middleware/v2/modules/sys/src/cvi_tracer.o
middleware/v2/modules/sys/src/cvi_vb.d
middleware/v2/modules/sys/src/cvi_vb.o
middleware/v2/modules/sys/src/devmem.d
middleware/v2/modules/sys/src/devmem.o
middleware/v2/modules/sys/src/hashmap.d
middleware/v2/modules/sys/src/hashmap.o
middleware/v2/modules/sys/src/peri.d
middleware/v2/modules/sys/src/peri.o
middleware/v2/modules/sys/src/sys_ioctl.d
middleware/v2/modules/sys/src/sys_ioctl.o
middleware/v2/modules/sys/src/vb_ioctl.d
middleware/v2/modules/sys/src/vb_ioctl.o
middleware/v2/modules/vdec/src/cvi_vdec.d
middleware/v2/modules/vdec/src/cvi_vdec.o
middleware/v2/modules/venc/src/cvi_venc.d
middleware/v2/modules/venc/src/cvi_venc.o
middleware/v2/modules/vpu/src/cvi_gdc_1822.d
middleware/v2/modules/vpu/src/cvi_gdc_1822.o
middleware/v2/modules/vpu/src/cvi_region.d
middleware/v2/modules/vpu/src/cvi_region.o
middleware/v2/modules/vpu/src/cvi_vi.d
middleware/v2/modules/vpu/src/cvi_vi.o
middleware/v2/modules/vpu/src/cvi_vo.d
middleware/v2/modules/vpu/src/cvi_vo.o
middleware/v2/modules/vpu/src/cvi_vpss.d
middleware/v2/modules/vpu/src/cvi_vpss.o
middleware/v2/modules/vpu/src/dump_register.d
middleware/v2/modules/vpu/src/dump_register.o
middleware/v2/modules/vpu/src/dwa_ioctl.d
middleware/v2/modules/vpu/src/dwa_ioctl.o
middleware/v2/modules/vpu/src/gdc_mesh_1822.d
middleware/v2/modules/vpu/src/gdc_mesh_1822.o
middleware/v2/modules/vpu/src/rgn_ioctl.d
middleware/v2/modules/vpu/src/rgn_ioctl.o
middleware/v2/modules/vpu/src/vi_ioctl.d
middleware/v2/modules/vpu/src/vi_ioctl.o
middleware/v2/modules/vpu/src/vo_ioctl.d
middleware/v2/modules/vpu/src/vo_ioctl.o
middleware/v2/modules/vpu/src/vpss_ioctl.d
middleware/v2/modules/vpu/src/vpss_ioctl.o
middleware/v2/sample/audio/aac_sample/cvi_audio_aac_adp.d
middleware/v2/sample/audio/aac_sample/cvi_audio_aac_adp.o
middleware/v2/sample/audio/cvi_audio_dl_adp.d
middleware/v2/sample/audio/cvi_audio_dl_adp.o
middleware/v2/sample/audio/cvi_audio_parse_param.d
middleware/v2/sample/audio/cvi_audio_parse_param.o
middleware/v2/sample/audio/cvi_sample_audio.d
middleware/v2/sample/audio/cvi_sample_audio.o
middleware/v2/sample/audio/sample_audio
middleware/v2/sample/common/loadbmp.d
middleware/v2/sample/common/loadbmp.o
middleware/v2/sample/common/md5sum.d
middleware/v2/sample/common/md5sum.o
middleware/v2/sample/common/sample_common_bin.d
middleware/v2/sample/common/sample_common_bin.o
middleware/v2/sample/common/sample_common_isp.d
middleware/v2/sample/common/sample_common_isp.o
middleware/v2/sample/common/sample_common_peripheral.d
middleware/v2/sample/common/sample_common_peripheral.o
middleware/v2/sample/common/sample_common_platform.d
middleware/v2/sample/common/sample_common_platform.o
middleware/v2/sample/common/sample_common_region.d
middleware/v2/sample/common/sample_common_region.o
middleware/v2/sample/common/sample_common_sensor.d
middleware/v2/sample/common/sample_common_sensor.o
middleware/v2/sample/common/sample_common_sys.d
middleware/v2/sample/common/sample_common_sys.o
middleware/v2/sample/common/sample_common_vdec.d
middleware/v2/sample/common/sample_common_vdec.o
middleware/v2/sample/common/sample_common_venc.d
middleware/v2/sample/common/sample_common_venc.o
middleware/v2/sample/common/sample_common_vi.d
middleware/v2/sample/common/sample_common_vi.o
middleware/v2/sample/common/sample_common_vo.d
middleware/v2/sample/common/sample_common_vo.o
middleware/v2/sample/common/sample_common_vpss.d
middleware/v2/sample/common/sample_common_vpss.o
middleware/v2/sample/fisheye/sample_fisheye
middleware/v2/sample/fisheye/sample_fisheye.d
middleware/v2/sample/fisheye/sample_fisheye.o
middleware/v2/sample/ir_auto/ir_auto
middleware/v2/sample/ir_auto/ir_auto.d
middleware/v2/sample/ir_auto/ir_auto.o
middleware/v2/sample/ive/sample_16bitto8bit
middleware/v2/sample/ive/sample_add
middleware/v2/sample/ive/sample_and
middleware/v2/sample/ive/sample_bernsen
middleware/v2/sample/ive/sample_bgmodel
middleware/v2/sample/ive/sample_cannyedge
middleware/v2/sample/ive/sample_cannyhysedge
middleware/v2/sample/ive/sample_csc
middleware/v2/sample/ive/sample_dilate
middleware/v2/sample/ive/sample_dma
middleware/v2/sample/ive/sample_erode
middleware/v2/sample/ive/sample_filter
middleware/v2/sample/ive/sample_filterandcsc
middleware/v2/sample/ive/sample_framediffmotion
middleware/v2/sample/ive/sample_gmm
middleware/v2/sample/ive/sample_gmm2
middleware/v2/sample/ive/sample_gradfg
middleware/v2/sample/ive/sample_hist
middleware/v2/sample/ive/sample_integ
middleware/v2/sample/ive/sample_lbp
middleware/v2/sample/ive/sample_magandang
middleware/v2/sample/ive/sample_map
middleware/v2/sample/ive/sample_ncc
middleware/v2/sample/ive/sample_normgrad
middleware/v2/sample/ive/sample_or
middleware/v2/sample/ive/sample_ordstatfilter
middleware/v2/sample/ive/sample_query
middleware/v2/sample/ive/sample_resize
middleware/v2/sample/ive/sample_sad
middleware/v2/sample/ive/sample_sobel
middleware/v2/sample/ive/sample_stcandicorner
middleware/v2/sample/ive/sample_sub
middleware/v2/sample/ive/sample_thresh
middleware/v2/sample/ive/sample_thresh_S16
middleware/v2/sample/ive/sample_thresh_U16
middleware/v2/sample/ive/sample_xor
middleware/v2/sample/mipi_tx/lt9611/lt9611
middleware/v2/sample/mipi_tx/lt9611/lt9611.d
middleware/v2/sample/mipi_tx/lt9611/lt9611.o
middleware/v2/sample/mipi_tx/sample_dsi
middleware/v2/sample/mipi_tx/sample_dsi.d
middleware/v2/sample/mipi_tx/sample_dsi.o
middleware/v2/sample/osdc/sample_osdc
middleware/v2/sample/osdc/sample_osdc.d
middleware/v2/sample/osdc/sample_osdc.o
middleware/v2/sample/overlay/sample_overlay
middleware/v2/sample/overlay/sample_overlay.d
middleware/v2/sample/overlay/sample_overlay.o
middleware/v2/sample/region/sample_region
middleware/v2/sample/region/sample_region.d
middleware/v2/sample/region/sample_region.o
middleware/v2/sample/sample_panel/sample_panel.d
middleware/v2/sample/sample_panel/sample_panel.o
middleware/v2/sample/scene_auto/sample_scene_auto
middleware/v2/sample/scene_auto/src/core/cvi_scene.d
middleware/v2/sample/scene_auto/src/core/cvi_scene.o
middleware/v2/sample/scene_auto/src/core/cvi_scene_setparam.d
middleware/v2/sample/scene_auto/src/core/cvi_scene_setparam.o
middleware/v2/sample/scene_auto/src/sample/cvi_scene_decode.d
middleware/v2/sample/scene_auto/src/sample/cvi_scene_decode.o
middleware/v2/sample/scene_auto/src/sample/cvi_scene_loadparam.d
middleware/v2/sample/scene_auto/src/sample/cvi_scene_loadparam.o
middleware/v2/sample/scene_auto/src/sample/sample_scene.d
middleware/v2/sample/scene_auto/src/sample/sample_scene.o
middleware/v2/sample/scene_auto/src/sample/sample_scene_main.d
middleware/v2/sample/scene_auto/src/sample/sample_scene_main.o
middleware/v2/sample/scene_auto/tools/iniparser/src/dictionary.d
middleware/v2/sample/scene_auto/tools/iniparser/src/dictionary.o
middleware/v2/sample/scene_auto/tools/iniparser/src/iniparser.d
middleware/v2/sample/scene_auto/tools/iniparser/src/iniparser.o
middleware/v2/sample/sensor_test/sensor_test
middleware/v2/sample/sensor_test/sensor_test.d
middleware/v2/sample/sensor_test/sensor_test.o
middleware/v2/sample/sensor_test/src/ae_test.d
middleware/v2/sample/sensor_test/src/ae_test.o
middleware/v2/sample/vdec/sample_vdec
middleware/v2/sample/vdec/sample_vdec.d
middleware/v2/sample/vdec/sample_vdec.o
middleware/v2/sample/vdec/sample_vdec_asan
middleware/v2/sample/vdec/src/sample_vdec_lib.d
middleware/v2/sample/vdec/src/sample_vdec_lib.o
middleware/v2/sample/vdec/src/sample_vdec_testcase.d
middleware/v2/sample/vdec/src/sample_vdec_testcase.o
middleware/v2/sample/vdecvo/sample_vdecvo
middleware/v2/sample/vdecvo/sample_vdecvo.d
middleware/v2/sample/vdecvo/sample_vdecvo.o
middleware/v2/sample/venc/sample_vcodec
middleware/v2/sample/venc/sample_vcodec.d
middleware/v2/sample/venc/sample_vcodec.o
middleware/v2/sample/venc/sample_vcodec_asan
middleware/v2/sample/venc/sample_venc
middleware/v2/sample/venc/sample_venc.d
middleware/v2/sample/venc/sample_venc.o
middleware/v2/sample/venc/sample_venc_asan
middleware/v2/sample/venc/src/sample_venc_lib.d
middleware/v2/sample/venc/src/sample_venc_lib.o
middleware/v2/sample/venc/src/sample_venc_testcase.d
middleware/v2/sample/venc/src/sample_venc_testcase.o
middleware/v2/sample/vio/sample_vio
middleware/v2/sample/vio/sample_vio.d
middleware/v2/sample/vio/sample_vio.o
middleware/v2/sample/vio/sample_vio_main.d
middleware/v2/sample/vio/sample_vio_main.o
osdrv/extdrv/wireless/.tmp_4261/
middleware/v2/lib
host-tools/
kvm/
.vscode*

View File

@@ -1,13 +1,60 @@
# LicheeRV-Nano-Build
# how to build
# download source
```
git clone https://github.com/LicheeRV-Nano-Build --depth=1
git clone https://github.com/sipeed/LicheeRV-Nano-Build --depth=1
cd LicheeRV-Nano-Build
wget https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz
tar xf host-tools.tar.gz
git clone https://github.com/sophgo/host-tools --depth=1
```
## host environment
you can use container:
```
cd host/ubuntu
docker build -t licheervnano-build-ubuntu .
docker run --name licheervnano-build-ubuntu licheervnano-build-ubuntu
docker export licheervnano-build-ubuntu | sqfstar licheervnano-build-ubuntu.sqfs
singularity shell -e licheervnano-build-ubuntu.sqfs
```
# build it
```
source build/cvisetup.sh
# C906:
defconfig sg2002_licheervnano_sd
# A53:
# defconfig sg2002_licheea53nano_sd
build_all
```
# build fail
on some system, qt5svg or qt5base will build failed on first build, please retry command:
```
build_all
```
# how to modify image after build:
```
# first partition
touch wifi.sta
mcopy -i install/xxx/xxx.img@@1s wifi.sta ::/
# second partition
./host/mount_ext4.sh install/xxx/xxx.img mountpoint
cd mountpoint
touch xxx
```
# logo
```
./host/make_logo.sh input.jpeg logo.jpeg
mcopy -i install/xxx/xxx.img@@1s logo.jpeg ::/
```

View File

@@ -559,6 +559,7 @@ br-rootfs-pack:
# ${Q}rm -rf $(BR_ROOTFS_DIR)/*
# copy rootfs to rawimg dir
${Q}cp $(BR_DIR)/output/images/rootfs.ext4 $(OUTPUT_DIR)/rawimages/rootfs.$(STORAGE_TYPE)
${Q}tar zcvf $(OUTPUT_DIR)/licheervnano-drivers.tar.gz $(BR_DIR)/output/target/mnt
$(call raw2cimg ,rootfs.$(STORAGE_TYPE))
ifeq ($(CONFIG_BUILDROOT_FS),y)

View File

@@ -4,7 +4,7 @@
},
"cv181x": {
"cv181x": ["cv1811ha", "cv1812cp", "cv1812h", "cv1813h"]
"cv181x": ["cv1812cp", "cv1812h", "cv1813h"]
},
"cv180x": {

View File

@@ -1,30 +0,0 @@
CONFIG_CHIP_cv1811ha=y
CONFIG_BOARD_wevb_0007a_spinor=y
CONFIG_DDR_CFG_ddr3_1866_x16=y
CONFIG_ARCH="arm"
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_KERNEL_ENTRY_HACK=y
CONFIG_KERNEL_ENTRY_HACK_ADDR="0x80108000"
CONFIG_TOOLCHAIN_GLIBC_ARM=y
CONFIG_FLASH_SIZE_SHRINK=y
CONFIG_BOOT_IMAGE_SINGLE_DTB=y
CONFIG_STORAGE_TYPE_spinor=y
CONFIG_SENSOR_GCORE_GC2053=y
CONFIG_SENSOR_GCORE_GC2053_1L=y
CONFIG_SENSOR_GCORE_GC2093=y
CONFIG_SENSOR_GCORE_GC4653=y
CONFIG_SENSOR_PIXELPLUS_PR2020=y
CONFIG_SENSOR_SONY_IMX307=y
CONFIG_SENSOR_SONY_IMX327=y
CONFIG_UBOOT_2021_10=y
CONFIG_KERNEL_SRC_5.10=y
CONFIG_KERNEL_SRC="linux_5.10"
CONFIG_KERNEL_LZMA=y
CONFIG_SKIP_RAMDISK=y
CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2=y
CONFIG_SENSOR_TUNING_PARAM_cv181x_src_gcore_gc4653=y
# CONFIG_ROOTFS_OVERLAYFS is not set
CONFIG_TARGET_PACKAGE_DROPBEAR=y
CONFIG_TARGET_PACKAGE_MTD-UTILS=y
# CONFIG_TARGET_PACKAGE_RSYSLOG is not set
# CONFIG_TARGET_PACKAGE_GATORD is not set

View File

@@ -1,10 +0,0 @@
/dts-v1/;
#include "cv181x_base_arm.dtsi"
#include "cv181x_asic_bga.dtsi"
#include "cv181x_asic_spinor.dtsi"
#include "cv181x_default_memmap.dtsi"
/ {
};

View File

@@ -1,282 +0,0 @@
CONFIG_KERNEL_XZ=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_UID16 is not set
# CONFIG_SYSFS_SYSCALL is not set
# CONFIG_FHANDLE is not set
# CONFIG_BASE_FULL is not set
# CONFIG_AIO is not set
CONFIG_EMBEDDED=y
# CONFIG_SLUB_DEBUG is not set
CONFIG_ARM_LPAE=y
CONFIG_SWP_EMULATE=y
# CONFIG_VDSO is not set
CONFIG_HAVE_ARM_ARCH_TIMER=y
CONFIG_ARM_PSCI=y
CONFIG_THUMB2_KERNEL=y
CONFIG_FORCE_MAX_ZONEORDER=10
# CONFIG_ATAGS is not set
CONFIG_VFP=y
CONFIG_NEON=y
# CONFIG_SUSPEND is not set
CONFIG_ARCH_CVITEK=y
CONFIG_ARCH_CV181X=y
CONFIG_ARCH_CVITEK_CHIP="mars"
CONFIG_ARCH_CV181X_ASIC=y
CONFIG_POWER_RESET=y
# CONFIG_STACKPROTECTOR is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_LBDAF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_MQ_IOSCHED_DEADLINE is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
# CONFIG_COREDUMP is not set
CONFIG_CMA=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
CONFIG_CFG80211=m
CONFIG_RFKILL=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_ALLOW_DEV_COREDUMP is not set
CONFIG_DMA_CMA=n
CONFIG_CMA_SIZE_MBYTES=0
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_OF_PARTS is not set
CONFIG_MTD_BLOCK=y
CONFIG_MTD_NAND=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_NAND_PLATFORM=y
CONFIG_MTD_NAND_CVSNFC=y
CONFIG_MTD_SPI_NOR=y
CONFIG_SPI_CVI_SPIF=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BLOCK=y
CONFIG_NETDEVICES=y
# CONFIG_NET_CORE is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AQUANTIA is not set
# CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_VENDOR_AURORA is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_CADENCE is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CIRRUS is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_FARADAY is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MICROCHIP is not set
# CONFIG_NET_VENDOR_MICROSEMI is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
# CONFIG_NET_VENDOR_NI is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_RENESAS is not set
# CONFIG_NET_VENDOR_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
CONFIG_STMMAC_ETH=y
# CONFIG_DWMAC_GENERIC is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
CONFIG_CVITEK_PHY=y
# CONFIG_USB_NET_DRIVERS is not set
# CONFIG_WLAN_VENDOR_ADMTEK is not set
# CONFIG_WLAN_VENDOR_ATH is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
CONFIG_RTL8188FU=m
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
CONFIG_INPUT=y
# CONFIG_SERIO is not set
# CONFIG_VT is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=5
CONFIG_SERIAL_8250_RUNTIME_UARTS=5
CONFIG_SERIAL_8250_DW=y
CONFIG_HW_RANDOM=y
CONFIG_I2C=y
CONFIG_I2C_SMBUS=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_SPI=y
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_CVITEK_PINCTRL_CV1835=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_DWAPB=y
CONFIG_THERMAL=y
CONFIG_THERMAL_NETLINK=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_EMULATION=y
CONFIG_WATCHDOG=y
CONFIG_MEDIA_SUPPORT=n
CONFIG_VIDEO_CVITEK=m
CONFIG_VIDEO_CVITEK_CIF=m
CONFIG_VIDEO_CVITEK_SNS_I2C=m
CONFIG_VIDEO_CVITEK_MIPI_TX=m
CONFIG_FB=y
CONFIG_FB_CVITEK=m
CONFIG_SOUND=y
CONFIG_SND=y
# CONFIG_SND_SUPPORT_OLD_API is not set
# CONFIG_SND_PROC_FS is not set
# CONFIG_SND_DRIVERS is not set
CONFIG_SND_HDA_PREALLOC_SIZE=n
# CONFIG_SND_ARM is not set
# CONFIG_SND_SPI is not set
# CONFIG_SND_USB is not set
CONFIG_SND_SOC=y
CONFIG_SND_SOC_CV182XA_CV182XAADC=y
CONFIG_SND_SOC_CV182XA_CV182XADAC=y
CONFIG_SND_CV1835_I2S=y
CONFIG_SND_SOC_CV182XAADC=y
CONFIG_SND_SOC_CV182XADAC=y
# CONFIG_SND_SOC_CV182X_CV182XPDM is not set
# CONFIG_SND_SOC_CV1835PDM is not set
# CONFIG_SND_SOC_CV1835_CONCURRENT_I2S is not set
CONFIG_SND_SOC_CV1835_USE_AUDIO_PLL=y
CONFIG_CV1835_I2S_SUBSYS=y
CONFIG_WATCHDOG_CORE=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_CVI=y
CONFIG_DMADEVICES=n
CONFIG_DW_DMAC_CVITEK=n
# CONFIG_VIRTIO_MENU is not set
CONFIG_STAGING=y
CONFIG_ION=y
CONFIG_ION_SYSTEM_HEAP=y
CONFIG_ION_CARVEOUT_HEAP=y
CONFIG_ION_CMA_HEAP=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_CV1835_SYSDMA_REMAP=n
CONFIG_PWM=y
CONFIG_ANDROID=y
# CONFIG_TEE=y
# CONFIG_OPTEE=y
# CONFIG_MANDATORY_FILE_LOCKING is not set
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_PROC_PAGE_MONITOR is not set
CONFIG_TMPFS=y
CONFIG_CONFIGFS_FS=m
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_WBUF_VERIFY=y
CONFIG_UBIFS_FS=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_DIRECT=y
# CONFIG_SQUASHFS_ZLIB is not set
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_EMBEDDED=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=1
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y
CONFIG_ROOT_NFS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
CONFIG_NLS_ISO8859_3=y
# CONFIG_CRYPTO_ECHAINIV is not set
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_HW is not set
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_DEBUG_FS=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_FTRACE is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
CONFIG_RTC_CLASS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_USB=y
CONFIG_USB_OTG=y
CONFIG_USB_OTG_FSM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_ACM=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_U_AUDIO=y
CONFIG_USB_F_SERIAL=y
CONFIG_USB_F_ECM=y
CONFIG_USB_F_EEM=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_UAC1=y
CONFIG_USB_F_UVC=y
CONFIG_USB_UAS=y
CONFIG_USB_DWC2=m
CONFIG_USB_DWC2_DUAL_ROLE=y
CONFIG_USB_GADGET=y
CONFIG_U_SERIAL_CONSOLE=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_CONFIGFS_ECM=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_F_UAC1=y
CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_UEVENT=y
CONFIG_USB_PHY=y
CONFIG_USB_GPIO_VBUS=y

View File

@@ -1,85 +0,0 @@
SIZE_1M = 0x100000
SIZE_1K = 1024
# Only attributes in class MemoryMap are generated to .h
class MemoryMap:
# No prefix "CVIMMAP_" for the items in _no_prefix[]
_no_prefix = [
"CONFIG_SYS_TEXT_BASE" # u-boot's CONFIG_SYS_TEXT_BASE is used without CPP.
]
DRAM_BASE = 0x80000000
DRAM_SIZE = 128 * SIZE_1M
# ==============
# C906L FreeRTOS
# ==============
FREERTOS_SIZE = 768 * SIZE_1K
# FreeRTOS is at the end of DRAM
FREERTOS_ADDR = DRAM_BASE + DRAM_SIZE - FREERTOS_SIZE
FSBL_C906L_START_ADDR = FREERTOS_ADDR
# ==============================
# OpenSBI | arm-trusted-firmware
# ==============================
# Monitor is at the begining of DRAM
MONITOR_ADDR = DRAM_BASE
ATF_SIZE = 512 * SIZE_1K
OPENSBI_SIZE = 512 * SIZE_1K
OPENSBI_FDT_ADDR = MONITOR_ADDR + OPENSBI_SIZE
# =========================
# memory@DRAM_BASE in .dts.
# =========================
# Ignore the area of FreeRTOS in u-boot and kernel
KERNEL_MEMORY_ADDR = DRAM_BASE
KERNEL_MEMORY_SIZE = DRAM_SIZE - FREERTOS_SIZE
# =================
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
# =================
ION_SIZE = 70 * SIZE_1M
H26X_BITSTREAM_SIZE = 2 * SIZE_1M
H26X_ENC_BUFF_SIZE = 0
ISP_MEM_BASE_SIZE = 20 * SIZE_1M
FREERTOS_RESERVED_ION_SIZE = H26X_BITSTREAM_SIZE + H26X_ENC_BUFF_SIZE + ISP_MEM_BASE_SIZE
# ION after FreeRTOS
ION_ADDR = FREERTOS_ADDR - ION_SIZE
# Buffers of the fast image are inside the ION buffer
H26X_BITSTREAM_ADDR = ION_ADDR
H26X_ENC_BUFF_ADDR = H26X_BITSTREAM_ADDR + H26X_BITSTREAM_SIZE
ISP_MEM_BASE_ADDR = H26X_ENC_BUFF_ADDR + H26X_ENC_BUFF_SIZE
assert ISP_MEM_BASE_ADDR + ISP_MEM_BASE_SIZE <= ION_ADDR + ION_SIZE
# Boot logo is after the ION buffer
# Framebuffer uses boot logo's reserved memory
BOOTLOGO_SIZE = 1800 * SIZE_1K
BOOTLOGO_ADDR = ION_ADDR - BOOTLOGO_SIZE
FRAMEBUFFER_SIZE = BOOTLOGO_SIZE
FRAMEBUFFER_ADDR = BOOTLOGO_ADDR
# ===================
# FSBL and u-boot-2021
# ===================
CVI_UPDATE_HEADER_SIZE = SIZE_1K
UIMAG_SIZE = 16 * SIZE_1M
# kernel image loading buffer
UIMAG_ADDR = DRAM_BASE + 24 * SIZE_1M
CVI_UPDATE_HEADER_ADDR = UIMAG_ADDR - CVI_UPDATE_HEADER_SIZE
# FSBL decompress buffer
FSBL_UNZIP_ADDR = UIMAG_ADDR
FSBL_UNZIP_SIZE = UIMAG_SIZE
assert UIMAG_ADDR + UIMAG_SIZE <= BOOTLOGO_ADDR
# u-boot's run address and entry point
CONFIG_SYS_TEXT_BASE = DRAM_BASE + 2 * SIZE_1M
# u-boot's init stack point is only used before board_init_f()
CONFIG_SYS_INIT_SP_ADDR = UIMAG_ADDR + UIMAG_SIZE

View File

@@ -1,9 +0,0 @@
<physical_partition type="spinor">
<partition label="fip" size_in_kb="1024" readonly="false" file="fip.bin"/>
<partition label="BOOT" size_in_kb="3072" readonly="false" file="boot.spinor"/>
<partition label="ENV" size_in_kb="64" file="" />
<partition label="ENV_BAK" size_in_kb="64" file="" />
<partition label="ROOTFS" size_in_kb="11264" readonly="false" file="rootfs.spinor" />
<partition label="DATA" readonly="false" file="" mountpoint="/mnt/data" type="jffs2" />
</physical_partition>

View File

@@ -1,45 +0,0 @@
CONFIG_ARM=y
CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_NR_DRAM_BANKS=1
CONFIG_DEFAULT_DEVICE_TREE="cv181x_asic"
CONFIG_IDENT_STRING=" cvitek_cv181x"
CONFIG_ARMV8_SET_SMPEN=y
CONFIG_TARGET_CVITEK_CV181X=y
CONFIG_CVITEK_SPI_FLASH=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOOTDELAY=1
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_SYS_PROMPT="cv181x# "
# CONFIG_CMD_CONSOLE is not set
# CONFIG_CMD_XIMG is not set
# CONFIG_CMD_EDITENV is not set
# CONFIG_CMD_CRC32 is not set
# CONFIG_CMD_LZMADEC is not set
# CONFIG_CMD_UNLZ4 is not set
# CONFIG_CMD_UNZIP is not set
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
# CONFIG_CMD_ITEST is not set
CONFIG_CMD_CACHE=y
CONFIG_CMD_CVI_SD_UPDATE=y
# CONFIG_ISO_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_CVITEK=y
CONFIG_MTD=y
# CONFIG_PHY_SMSC is not set
CONFIG_DM_ETH=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_CVITEK=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_LZ4=y
CONFIG_LZMA=y
# CONFIG_TOOLS_LIBCRYPTO is not set
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set

View File

@@ -1,320 +0,0 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/reset/cv181x-resets.h>
#include <dt-bindings/clock/cv181x-clock.h>
#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/dma/cv181x-dmamap.h>
#include "cvi_board_memmap.h"
/memreserve/ CVIMMAP_MONITOR_ADDR CVIMMAP_ATF_SIZE; // ATF (BL31 + BL32) 512KB
#include "cv181x_base.dtsi"
/ {
model = "SOPHGO ASIC. ARM.";
interrupt-parent = <&gic>;
#size-cells = <0x2>;
#address-cells = <0x2>;
gic: interrupt-controller {
compatible = "arm,cortex-a15-gic";
ranges;
#size-cells = <0x2>;
#address-cells = <0x2>;
interrupt-controller;
#interrupt-cells = <0x3>;
reg = <0x0 0x01F01000 0x0 0x1000>,
<0x0 0x01F02000 0x0 0x2000>;
};
pmu_a53 {
compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
interrupt-affinity = <&A53_0>;
};
psci {
migrate = <0xc4000005>;
cpu_on = <0xc4000003>;
cpu_off = <0x84000002>;
cpu_suspend = <0xc4000001>;
sys_poweroff = <0x84000008>;
sys_reset = <0x84000009>;
method = "smc";
compatible = "arm,psci-0.2", "arm,psci";
};
cpus {
#size-cells = <0x0>;
#address-cells = <0x1>;
A53_0: cpu@0 {
reg = <0x0>;
enable-method = "psci";
compatible = "arm,cortex-a53";
device_type = "cpu";
next-level-cache = <&CA53_L2>;
};
CA53_L2: l2-cache0 {
compatible = "cache";
};
};
timer {
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
always-on;
clock-frequency = <25000000>;
compatible = "arm,armv8-timer";
};
firmware {
optee {
compatible = "linaro,optee-tz";
method = "smc";
};
};
cooling:cooling {
clocks = <&clk CV181X_CLK_A53>, <&clk CV181X_CLK_TPU>;
clock-names = "clk_cpu", "clk_tpu_axi";
dev-freqs = <800000000 500000000>,
<400000000 375000000>,
<400000000 300000000>;
compatible = "sophgo,cooling";
#cooling-cells = <2>;
};
tpu {
interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 60 IRQ_TYPE_EDGE_RISING>;
};
mon {
interrupts = <GIC_SPI 77 IRQ_TYPE_EDGE_RISING>;
};
wiegand0 {
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
};
wiegand1 {
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
};
wiegand2 {
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
};
saradc {
interrupts = <GIC_SPI 84 IRQ_TYPE_EDGE_RISING>;
};
rtc {
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
};
sysdma_remap {
int_mux = <0x1FF>; /* enable bit [0..8] for CPU0(CA53) */
};
dmac: dma@0x4330000 {
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
};
#if 0
watchdog0: cv-wd@0x3010000 {
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
};
#endif
spinand:cv-spinf@4060000 {
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
};
spif:cvi-spif@10000000 {
interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
};
spi0:spi0@04180000 {
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
};
spi1:spi1@04190000 {
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
};
spi2:spi2@041A0000 {
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
};
spi3:spi3@041B0000 {
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
};
uart0: serial@04140000 {
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
};
uart1: serial@04150000 {
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
};
uart2: serial@04160000 {
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
};
uart3: serial@04170000 {
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
};
uart4: serial@041C0000 {
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
};
gpio0: gpio@03020000 {
porta: gpio-controller@0 {
interrupt-controller;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
};
};
gpio1: gpio@03021000 {
portb: gpio-controller@1 {
interrupt-controller;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
};
};
gpio2: gpio@03022000 {
portc: gpio-controller@2 {
interrupt-controller;
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
};
};
gpio3: gpio@03023000 {
portd: gpio-controller@3 {
interrupt-controller;
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
};
};
gpio4: gpio@05021000 {
porte: gpio-controller@4 {
interrupt-controller;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
};
};
i2c0: i2c@04000000 {
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
};
i2c1: i2c@04010000 {
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
};
i2c2: i2c@04020000 {
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
};
i2c3: i2c@04030000 {
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
};
i2c4: i2c@04040000 {
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
};
ethernet0: ethernet@4070000 {
interrupt-names = "macirq";
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
};
emmc:cv-emmc@4300000 {
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
};
sd:cv-sd@4310000 {
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
};
i2s0: i2s@04100000 {
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
};
i2s1: i2s@04110000 {
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
};
i2s2: i2s@04120000 {
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
};
i2s3: i2s@04130000 {
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
};
wifisd:wifi-sd@4320000 {
interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
};
mipi_rx: cif {
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "csi0", "csi1";
};
vi {
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "isp";
};
ive {
interrupt-names = "ive_irq";
interrupts = <GIC_SPI 81 IRQ_TYPE_EDGE_RISING>;
};
vpss {
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "sc";
};
dwa {
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dwa";
};
vcodec {
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "h265","h264","sbm";
};
jpu {
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "jpeg";
};
rtos_cmdqu {
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "mailbox";
};
usb: usb@04340000 {
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
};
thermal:thermal@030E0000 {
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "tempsen";
};
};

View File

@@ -1,12 +0,0 @@
#!/bin/bash
files=`find . -name "cv181x_*.dtsi"`
for i in $files
do
echo $i
filename=${i#*cv181x_}
echo $filename
mv $i soph_$filename
done

View File

@@ -156,21 +156,21 @@
compatible = "cvitek,cvi-pwm";
reg = <0x0 0x3060000 0x0 0x1000>;
clocks = <&clk CV181X_CLK_PWM>;
#pwm-cells = <1>;
#pwm-cells = <4>;
};
pwm1: pwm@3061000 {
compatible = "cvitek,cvi-pwm";
reg = <0x0 0x3061000 0x0 0x1000>;
clocks = <&clk CV181X_CLK_PWM>;
#pwm-cells = <2>;
#pwm-cells = <4>;
};
pwm2: pwm@3062000 {
compatible = "cvitek,cvi-pwm";
reg = <0x0 0x3062000 0x0 0x1000>;
clocks = <&clk CV181X_CLK_PWM>;
#pwm-cells = <3>;
#pwm-cells = <4>;
};
pwm3: pwm@3063000 {
@@ -233,6 +233,7 @@
clocks = <&clk CV181X_CLK_SPI>;
#address-cells = <1>;
#size-cells = <0>;
bias-pull-up;
};
spi3:spi3@041B0000 {
@@ -865,13 +866,13 @@
trips {
soc_thermal_trip_0: soc_thermal_trip_0 {
temperature = <100000>; /* millicelsius */
temperature = <110000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "passive";
};
soc_thermal_trip_1: soc_thermal_trip_1 {
temperature = <110000>; /* millicelsius */
temperature = <120000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "passive";
};

View File

@@ -1,7 +1,7 @@
/dts-v1/;
#include "soph_base_riscv.dtsi"
#include "soph_asic_bga.dtsi"
#include "soph_asic_emmc.dtsi"
#include "soph_asic_sd.dtsi"
#include "soph_default_memmap.dtsi"
/ {

View File

@@ -1,11 +0,0 @@
<physical_partition type="emmc">
<partition label="BOOT" size_in_kb="8192" file="boot.emmc" />
<partition label="MISC" size_in_kb="512" file="logo.jpg" />
<!-- Beware that in emmc u-boot environment should be 0x40000 alignment -->
<partition label="ENV" size_in_kb="128" file="" />
<partition label="ROOTFS" size_in_kb="70656" file="rootfs.emmc" />
<partition label="SYSTEM" size_in_kb="40960" file="system.emmc" type="ext4" />
<partition label="CFG" size_in_kb="15240" file="cfg.emmc" mountpoint="/mnt/cfg" type="ext4" />
<partition label="DATA" size_in_kb="3145728" file="" mountpoint="/mnt/data" type="ext4"/>
</physical_partition>

View File

@@ -0,0 +1,5 @@
<physical_partition type="sd">
<partition label="BOOT" size_in_kb="80960" readonly="false" file="boot.sd"/>
<partition label="ROOTFS" size_in_kb="204800" readonly="false" file="rootfs.sd" />
<partition label="DATA" size_in_kb="512000" readonly="false" file="data.sd" mountpoint="/mnt/data" type="ext4" />
</physical_partition>

View File

@@ -1,5 +1,5 @@
CONFIG_CHIP_sg2000=y
CONFIG_BOARD_wevb_emmc=y
CONFIG_BOARD_duo_sd=y
CONFIG_DDR_CFG_ddr3_1866_x16=y
CONFIG_ARCH="riscv"
CONFIG_CROSS_COMPILE="riscv64-unknown-linux-gnu-"
@@ -9,7 +9,7 @@ CONFIG_KERNEL_ENTRY_HACK_ADDR="0x80200000"
CONFIG_TOOLCHAIN_MUSL_RISCV64=y
CONFIG_FLASH_SIZE_SHRINK=y
CONFIG_BOOT_IMAGE_SINGLE_DTB=y
CONFIG_STORAGE_TYPE_emmc=y
CONFIG_STORAGE_TYPE_sd=y
CONFIG_SENSOR_GCORE_GC4653=y
CONFIG_SENSOR_SMS_SC3335=y
CONFIG_SENSOR_SMS_SC500AI=y

View File

@@ -40,4 +40,4 @@ CONFIG_SPI=y
CONFIG_LZ4=y
CONFIG_LZMA=y
# CONFIG_TOOLS_LIBCRYPTO is not set
CONFIG_ENV_IS_IN_MMC=y
CONFIG_ENV_IS_NOWHERE=y

View File

@@ -0,0 +1,13 @@
/dts-v1/;
#include "soph_base_arm.dtsi"
#include "soph_asic_bga.dtsi"
#include "soph_asic_sd.dtsi"
#include "soph_default_memmap.dtsi"
/ {
sd:cv-sd@4310000 {
max-frequency = <10000000>;
};
};

View File

@@ -0,0 +1,284 @@
CONFIG_KERNEL_XZ=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_UID16 is not set
# CONFIG_SYSFS_SYSCALL is not set
# CONFIG_FHANDLE is not set
# CONFIG_BASE_FULL is not set
# CONFIG_AIO is not set
CONFIG_EMBEDDED=y
# CONFIG_SLUB_DEBUG is not set
CONFIG_ARM_LPAE=y
CONFIG_SWP_EMULATE=y
# CONFIG_VDSO is not set
CONFIG_HAVE_ARM_ARCH_TIMER=y
CONFIG_ARM_PSCI=y
CONFIG_THUMB2_KERNEL=y
CONFIG_FORCE_MAX_ZONEORDER=10
# CONFIG_ATAGS is not set
CONFIG_VFP=y
CONFIG_NEON=y
# CONFIG_SUSPEND is not set
CONFIG_ARCH_CVITEK=y
CONFIG_ARCH_CV181X=y
CONFIG_ARCH_CVITEK_CHIP="mars"
CONFIG_ARCH_CV181X_ASIC=y
CONFIG_POWER_RESET=y
# CONFIG_STACKPROTECTOR is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_LBDAF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_MQ_IOSCHED_DEADLINE is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
# CONFIG_COREDUMP is not set
CONFIG_CMA=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
CONFIG_CFG80211=m
CONFIG_RFKILL=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_ALLOW_DEV_COREDUMP is not set
CONFIG_DMA_CMA=n
CONFIG_CMA_SIZE_MBYTES=0
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_OF_PARTS is not set
CONFIG_MTD_BLOCK=y
CONFIG_MTD_NAND=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_NAND_PLATFORM=y
CONFIG_MTD_NAND_CVSNFC=y
CONFIG_MTD_SPI_NOR=y
CONFIG_SPI_CVI_SPIF=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BLOCK=y
CONFIG_NETDEVICES=y
# CONFIG_NET_CORE is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AQUANTIA is not set
# CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_VENDOR_AURORA is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_CADENCE is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CIRRUS is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_FARADAY is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MICROCHIP is not set
# CONFIG_NET_VENDOR_MICROSEMI is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
# CONFIG_NET_VENDOR_NI is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_RENESAS is not set
# CONFIG_NET_VENDOR_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
CONFIG_STMMAC_ETH=y
# CONFIG_DWMAC_GENERIC is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
CONFIG_CVITEK_PHY=y
# CONFIG_USB_NET_DRIVERS is not set
# CONFIG_WLAN_VENDOR_ADMTEK is not set
# CONFIG_WLAN_VENDOR_ATH is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
CONFIG_RTL8188FU=m
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
CONFIG_INPUT=y
# CONFIG_SERIO is not set
# CONFIG_VT is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=5
CONFIG_SERIAL_8250_RUNTIME_UARTS=5
CONFIG_SERIAL_8250_DW=y
CONFIG_HW_RANDOM=y
CONFIG_I2C=y
CONFIG_I2C_SMBUS=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_SPI=y
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_CVITEK_PINCTRL_CV1835=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_DWAPB=y
CONFIG_THERMAL=y
CONFIG_THERMAL_NETLINK=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_EMULATION=y
CONFIG_WATCHDOG=y
CONFIG_MEDIA_SUPPORT=n
CONFIG_VIDEO_CVITEK=m
CONFIG_VIDEO_CVITEK_CIF=m
CONFIG_VIDEO_CVITEK_SNS_I2C=m
CONFIG_VIDEO_CVITEK_MIPI_TX=m
CONFIG_FB=y
CONFIG_FB_CVITEK=m
CONFIG_SOUND=y
CONFIG_SND=y
# CONFIG_SND_SUPPORT_OLD_API is not set
# CONFIG_SND_PROC_FS is not set
# CONFIG_SND_DRIVERS is not set
CONFIG_SND_HDA_PREALLOC_SIZE=n
# CONFIG_SND_ARM is not set
# CONFIG_SND_SPI is not set
# CONFIG_SND_USB is not set
CONFIG_SND_SOC=y
CONFIG_SND_SOC_CV182XA_CV182XAADC=y
CONFIG_SND_SOC_CV182XA_CV182XADAC=y
CONFIG_SND_CV1835_I2S=y
CONFIG_SND_SOC_CV182XAADC=y
CONFIG_SND_SOC_CV182XADAC=y
# CONFIG_SND_SOC_CV182X_CV182XPDM is not set
# CONFIG_SND_SOC_CV1835PDM is not set
# CONFIG_SND_SOC_CV1835_CONCURRENT_I2S is not set
CONFIG_SND_SOC_CV1835_USE_AUDIO_PLL=y
CONFIG_CV1835_I2S_SUBSYS=y
CONFIG_WATCHDOG_CORE=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_CVI=y
CONFIG_DMADEVICES=n
CONFIG_DW_DMAC_CVITEK=n
# CONFIG_VIRTIO_MENU is not set
CONFIG_STAGING=y
CONFIG_ION=y
CONFIG_ION_SYSTEM_HEAP=y
CONFIG_ION_CARVEOUT_HEAP=y
CONFIG_ION_CMA_HEAP=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_CV1835_SYSDMA_REMAP=n
CONFIG_PWM=y
CONFIG_ANDROID=y
# CONFIG_TEE=y
# CONFIG_OPTEE=y
# CONFIG_MANDATORY_FILE_LOCKING is not set
CONFIG_EXT3_FS=y
CONFIG_EXT4_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_PROC_PAGE_MONITOR is not set
CONFIG_TMPFS=y
CONFIG_CONFIGFS_FS=m
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_WBUF_VERIFY=y
CONFIG_UBIFS_FS=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_DIRECT=y
# CONFIG_SQUASHFS_ZLIB is not set
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_EMBEDDED=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=1
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y
CONFIG_ROOT_NFS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
CONFIG_NLS_ISO8859_3=y
# CONFIG_CRYPTO_ECHAINIV is not set
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_HW is not set
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_DEBUG_FS=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_FTRACE is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
CONFIG_RTC_CLASS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_USB=y
CONFIG_USB_OTG=y
CONFIG_USB_OTG_FSM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_ACM=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_U_AUDIO=y
CONFIG_USB_F_SERIAL=y
CONFIG_USB_F_ECM=y
CONFIG_USB_F_EEM=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_UAC1=y
CONFIG_USB_F_UVC=y
CONFIG_USB_UAS=y
CONFIG_USB_DWC2=m
CONFIG_USB_DWC2_DUAL_ROLE=y
CONFIG_USB_GADGET=y
CONFIG_U_SERIAL_CONSOLE=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_CONFIGFS_ECM=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_F_UAC1=y
CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_UEVENT=y
CONFIG_USB_PHY=y
CONFIG_USB_GPIO_VBUS=y

View File

@@ -0,0 +1,85 @@
SIZE_1M = 0x100000
SIZE_1K = 1024
# Only attributes in class MemoryMap are generated to .h
class MemoryMap:
# No prefix "CVIMMAP_" for the items in _no_prefix[]
_no_prefix = [
"CONFIG_SYS_TEXT_BASE" # u-boot's CONFIG_SYS_TEXT_BASE is used without CPP.
]
DRAM_BASE = 0x80000000
DRAM_SIZE = 512 * SIZE_1M
# ==============
# C906L FreeRTOS
# ==============
FREERTOS_SIZE = 768 * SIZE_1K
# FreeRTOS is at the end of DRAM
FREERTOS_ADDR = DRAM_BASE + DRAM_SIZE - FREERTOS_SIZE
FSBL_C906L_START_ADDR = FREERTOS_ADDR
# ==============================
# OpenSBI | arm-trusted-firmware
# ==============================
# Monitor is at the begining of DRAM
MONITOR_ADDR = DRAM_BASE
ATF_SIZE = 512 * SIZE_1K
OPENSBI_SIZE = 512 * SIZE_1K
OPENSBI_FDT_ADDR = MONITOR_ADDR + OPENSBI_SIZE
# =========================
# memory@DRAM_BASE in .dts.
# =========================
# Ignore the area of FreeRTOS in u-boot and kernel
KERNEL_MEMORY_ADDR = DRAM_BASE
KERNEL_MEMORY_SIZE = DRAM_SIZE - FREERTOS_SIZE
# =================
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
# =================
ION_SIZE = 70 * SIZE_1M
H26X_BITSTREAM_SIZE = 2 * SIZE_1M
H26X_ENC_BUFF_SIZE = 0
ISP_MEM_BASE_SIZE = 20 * SIZE_1M
FREERTOS_RESERVED_ION_SIZE = H26X_BITSTREAM_SIZE + H26X_ENC_BUFF_SIZE + ISP_MEM_BASE_SIZE
# ION after FreeRTOS
ION_ADDR = FREERTOS_ADDR - ION_SIZE
# Buffers of the fast image are inside the ION buffer
H26X_BITSTREAM_ADDR = ION_ADDR
H26X_ENC_BUFF_ADDR = H26X_BITSTREAM_ADDR + H26X_BITSTREAM_SIZE
ISP_MEM_BASE_ADDR = H26X_ENC_BUFF_ADDR + H26X_ENC_BUFF_SIZE
assert ISP_MEM_BASE_ADDR + ISP_MEM_BASE_SIZE <= ION_ADDR + ION_SIZE
# Boot logo is after the ION buffer
# Framebuffer uses boot logo's reserved memory
BOOTLOGO_SIZE = 1800 * SIZE_1K
BOOTLOGO_ADDR = ION_ADDR - BOOTLOGO_SIZE
FRAMEBUFFER_SIZE = BOOTLOGO_SIZE
FRAMEBUFFER_ADDR = BOOTLOGO_ADDR
# ===================
# FSBL and u-boot-2021
# ===================
CVI_UPDATE_HEADER_SIZE = SIZE_1K
UIMAG_SIZE = 16 * SIZE_1M
# kernel image loading buffer
UIMAG_ADDR = DRAM_BASE + 24 * SIZE_1M
CVI_UPDATE_HEADER_ADDR = UIMAG_ADDR - CVI_UPDATE_HEADER_SIZE
# FSBL decompress buffer
FSBL_UNZIP_ADDR = UIMAG_ADDR
FSBL_UNZIP_SIZE = UIMAG_SIZE
assert UIMAG_ADDR + UIMAG_SIZE <= BOOTLOGO_ADDR
# u-boot's run address and entry point
CONFIG_SYS_TEXT_BASE = DRAM_BASE + 2 * SIZE_1M
# u-boot's init stack point is only used before board_init_f()
CONFIG_SYS_INIT_SP_ADDR = UIMAG_ADDR + UIMAG_SIZE

View File

@@ -0,0 +1,5 @@
<physical_partition type="sd">
<partition label="BOOT" size_in_kb="80960" readonly="false" file="boot.sd"/>
<partition label="ROOTFS" size_in_kb="204800" readonly="false" file="rootfs.sd" />
<partition label="DATA" size_in_kb="512000" readonly="false" file="data.sd" mountpoint="/mnt/data" type="ext4" />
</physical_partition>

View File

@@ -0,0 +1,30 @@
CONFIG_CHIP_sg2000=y
CONFIG_BOARD_wevb_sd=y
CONFIG_DDR_CFG_ddr3_1866_x16=y
CONFIG_ARCH="arm"
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_KERNEL_ENTRY_HACK=y
CONFIG_KERNEL_ENTRY_HACK_ADDR="0x80108000"
CONFIG_TOOLCHAIN_GLIBC_ARM=y
CONFIG_FLASH_SIZE_SHRINK=y
CONFIG_BOOT_IMAGE_SINGLE_DTB=y
CONFIG_STORAGE_TYPE_sd=y
CONFIG_SENSOR_GCORE_GC2053=y
CONFIG_SENSOR_GCORE_GC2053_1L=y
CONFIG_SENSOR_GCORE_GC2093=y
CONFIG_SENSOR_GCORE_GC4653=y
CONFIG_SENSOR_PIXELPLUS_PR2020=y
CONFIG_SENSOR_SONY_IMX307=y
CONFIG_SENSOR_SONY_IMX327=y
CONFIG_UBOOT_2021_10=y
CONFIG_KERNEL_SRC_5.10=y
CONFIG_KERNEL_SRC="linux_5.10"
CONFIG_KERNEL_LZMA=y
CONFIG_SKIP_RAMDISK=y
CONFIG_USE_4K_ERASE_SIZE_FOR_JFFS2=y
CONFIG_SENSOR_TUNING_PARAM_cv181x_src_gcore_gc4653=y
# CONFIG_ROOTFS_OVERLAYFS is not set
CONFIG_TARGET_PACKAGE_DROPBEAR=y
CONFIG_TARGET_PACKAGE_MTD-UTILS=y
# CONFIG_TARGET_PACKAGE_RSYSLOG is not set
# CONFIG_TARGET_PACKAGE_GATORD is not set

View File

@@ -0,0 +1,49 @@
CONFIG_ARM=y
CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_NR_DRAM_BANKS=1
CONFIG_DEFAULT_DEVICE_TREE="cv181x_asic"
CONFIG_IDENT_STRING=" cvitek_cv181x"
CONFIG_ARMV8_SET_SMPEN=y
CONFIG_TARGET_CVITEK_CV181X=y
#CONFIG_CVITEK_SPI_FLASH=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOOTDELAY=1
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_SYS_PROMPT="soph# "
# CONFIG_CMD_CONSOLE is not set
# CONFIG_CMD_XIMG is not set
# CONFIG_CMD_EDITENV is not set
# CONFIG_CMD_CRC32 is not set
# CONFIG_CMD_LZMADEC is not set
# CONFIG_CMD_UNLZ4 is not set
# CONFIG_CMD_UNZIP is not set
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
# CONFIG_CMD_ITEST is not set
CONFIG_CMD_CACHE=y
CONFIG_CMD_CVI_SD_UPDATE=y
# CONFIG_ISO_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_DM=y
CONFIG_DM_MMC=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_CVITEK=y
CONFIG_MTD=y
# CONFIG_PHY_SMSC is not set
CONFIG_DM_ETH=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_CVITEK=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_LZ4=y
CONFIG_LZMA=y
# CONFIG_TOOLS_LIBCRYPTO is not set
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
CONFIG_ENV_IS_NOWHERE=y

View File

@@ -0,0 +1,8 @@
{
"ddr_cfg_list": [
"ddr3_1866_x16",
"ddr3_2133_x16",
"ddr_auto_x16"
],
"board_information": "CA53"
}

View File

@@ -0,0 +1,185 @@
/dts-v1/;
#include "soph_base_arm.dtsi"
#include "soph_asic_qfn.dtsi"
#include "soph_asic_sd.dtsi"
#include "soph_default_memmap.dtsi"
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/gpio/gpio.h>
&i2c0 {
status = "disabled";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
/delete-property/ sda-gpios;
};
&i2c1 {
status = "disabled";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
/delete-property/ sda-gpios;
};
&sd {
min-frequency = <400000>; // 400Khz
//max-frequency = <50000000>; // 50Mhz
max-frequency = <25000000>; // 25Mhz
//max-frequency = <10000000>; // 10Mhz
//max-frequency = <5000000>; // 5Mhz
};
&cvi_vo {
#ifndef __UBOOT__
/delete-property/ reset-gpio;
/delete-property/ pwm-gpio;
#else
// for uboot
reset-gpio = <&porte 0 1>;
pwm-gpio = <&porte 2 1>;
#endif
/delete-property/ power-ct-gpio;
};
&mipi_tx {
#ifndef __UBOOT__
// for linux kernel
reset-gpio = <&porte 0 1>;
pwm-gpio = <&porte 2 1>;
#else
/delete-property/ reset-gpio;
/delete-property/ pwm-gpio;
#endif
/delete-property/ power-ct-gpio;
status = "okay";
};
&uart1 {
status = "okay";
};
&pwm0 {
status = "okay";
};
&pwm1 {
status = "okay";
};
&pwm2 {
status = "okay";
};
&i2c2 {
status = "disabled";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
/delete-property/ sda-gpios;
};
&i2c3 {
status = "disabled";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
/delete-property/ sda-gpios;
};
&i2c4 {
statuc = "okay";
gt9xx: gt9xx@14 {
compatible = "goodix,gt9xx";
reg = <0x14>;
goodix,irq-gpio = <&porte 3 0>;
goodix,rst-gpio = <&porte 4 0>;
status = "okay";
};
hytr: hynitron@5a {
compatible = "hynitron,hyn_ts";
reg = <0x5a>;
hynitron,irq-gpio = <&porte 3 0>;
hynitron,reset-gpio = <&porte 4 0>;
hynitron,max-touch-number = <5>;
hynitron,display-coords = <368 552>;
status = "okay";
};
};
&dac {
status = "okay";
/delete-property/ mute-gpio-r;
};
&fb_reserved {
status = "okay";
};
&cvi_fb {
status = "okay";
};
&mipi_rx {
snsr-reset = <&porte 1 GPIO_ACTIVE_LOW>;
};
/ {
model = "LicheeRv Nano";
gpio-keys {
compatible = "gpio-keys";
key-user {
label = "User Key";
linux,code = <KEY_DISPLAYTOGGLE>;
debounce-interval = <1>;
gpios = <&porta 30 1>;
};
};
leds {
compatible = "gpio-leds";
led-user {
gpios = <&porta 14 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "activity";
};
};
lcd0_backlight: pwm-backlight@0 {
compatible = "pwm-backlight";
pwms = <&pwm2 2 50000000>; // 20Khz
brightness-levels = <0 2 4 8 16 32 64 128 255>;
default-brightness-level = <4>;
};
wifisd:wifi-sd@4320000 {
compatible = "cvitek,cv181x-sdio";
bus-width = <4>;
reg = <0x0 0x4320000 0x0 0x1000>;
reg_names = "core_mem";
src-frequency = <375000000>;
min-frequency = <400000>; // 400Khz
//max-frequency = <50000000>; // 50Mhz
//max-frequency = <45000000>; // 45Mhz
//max-frequency = <40000000>; // 40Mhz
//max-frequency = <35000000>; // 35Mhz
//max-frequency = <30000000>; // 30Mhz
max-frequency = <25000000>; // 25Mhz
//max-frequency = <20000000>; // 20Mhz
//max-frequency = <15000000>; // 15Mhz
//max-frequency = <10000000>; // 10Mhz
//max-frequency = <5000000>; // 5Mhz
64_addressing;
reset_tx_rx_phy;
non-removable;
pll_index = <0x7>;
pll_reg = <0x300207C>;
no-mmc;
no-sd;
status = "okay";
interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
};
};

View File

@@ -0,0 +1,370 @@
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_BLK_DEV_INITRD=n
# CONFIG_UID16 is not set
# CONFIG_SYSFS_SYSCALL is not set
# CONFIG_FHANDLE is not set
# CONFIG_BASE_FULL is not set
# CONFIG_AIO is not set
CONFIG_EMBEDDED=y
# CONFIG_SLUB_DEBUG is not set
CONFIG_ARM_LPAE=y
CONFIG_SWP_EMULATE=y
# CONFIG_VDSO is not set
CONFIG_HAVE_ARM_ARCH_TIMER=y
CONFIG_ARM_PSCI=y
CONFIG_THUMB2_KERNEL=y
CONFIG_FORCE_MAX_ZONEORDER=10
# CONFIG_ATAGS is not set
CONFIG_VFP=y
CONFIG_NEON=y
# CONFIG_SUSPEND is not set
CONFIG_ARCH_CVITEK=y
CONFIG_ARCH_CV181X=y
CONFIG_ARCH_CVITEK_CHIP="mars"
CONFIG_ARCH_CV181X_ASIC=y
CONFIG_POWER_RESET=y
# CONFIG_STACKPROTECTOR is not set
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_LBDAF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_MQ_IOSCHED_DEADLINE is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
# CONFIG_COREDUMP is not set
CONFIG_CMA=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
CONFIG_CFG80211=m
CONFIG_RFKILL=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_ALLOW_DEV_COREDUMP is not set
CONFIG_DMA_CMA=n
CONFIG_CMA_SIZE_MBYTES=0
CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_OF_PARTS is not set
CONFIG_MTD_BLOCK=y
CONFIG_MTD_NAND=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_NAND_PLATFORM=y
CONFIG_MTD_NAND_CVSNFC=y
CONFIG_MTD_SPI_NOR=y
CONFIG_SPI_CVI_SPIF=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BLOCK=y
CONFIG_NETDEVICES=y
# CONFIG_NET_CORE is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AQUANTIA is not set
# CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_VENDOR_AURORA is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_CADENCE is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CIRRUS is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_FARADAY is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MICROCHIP is not set
# CONFIG_NET_VENDOR_MICROSEMI is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
# CONFIG_NET_VENDOR_NI is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_RENESAS is not set
# CONFIG_NET_VENDOR_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
CONFIG_STMMAC_ETH=y
# CONFIG_DWMAC_GENERIC is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
CONFIG_CVITEK_PHY=y
# CONFIG_USB_NET_DRIVERS is not set
# CONFIG_WLAN_VENDOR_ADMTEK is not set
# CONFIG_WLAN_VENDOR_ATH is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
# CONFIG_RTL8188FU is not set
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
CONFIG_INPUT=y
CONFIG_INPUT_EVDEV=y
# CONFIG_SERIO is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=5
CONFIG_SERIAL_8250_RUNTIME_UARTS=5
CONFIG_SERIAL_8250_DW=y
CONFIG_HW_RANDOM=y
CONFIG_I2C=y
CONFIG_I2C_SMBUS=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_SPI=y
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_CVITEK_PINCTRL_CV1835=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_DWAPB=y
CONFIG_THERMAL=y
CONFIG_THERMAL_NETLINK=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_EMULATION=y
CONFIG_WATCHDOG=y
CONFIG_MEDIA_SUPPORT=n
CONFIG_VIDEO_CVITEK=m
CONFIG_VIDEO_CVITEK_CIF=m
CONFIG_VIDEO_CVITEK_SNS_I2C=m
CONFIG_VIDEO_CVITEK_MIPI_TX=m
CONFIG_FB=y
CONFIG_FB_CVITEK=m
CONFIG_SOUND=y
CONFIG_SND=y
# CONFIG_SND_SUPPORT_OLD_API is not set
# CONFIG_SND_PROC_FS is not set
# CONFIG_SND_DRIVERS is not set
CONFIG_SND_HDA_PREALLOC_SIZE=n
# CONFIG_SND_ARM is not set
# CONFIG_SND_SPI is not set
# CONFIG_SND_USB is not set
CONFIG_SND_SOC=y
CONFIG_SND_SOC_CV182XA_CV182XAADC=y
CONFIG_SND_SOC_CV182XA_CV182XADAC=y
CONFIG_SND_CV1835_I2S=y
CONFIG_SND_SOC_CV182XAADC=y
CONFIG_SND_SOC_CV182XADAC=y
# CONFIG_SND_SOC_CV182X_CV182XPDM is not set
# CONFIG_SND_SOC_CV1835PDM is not set
# CONFIG_SND_SOC_CV1835_CONCURRENT_I2S is not set
CONFIG_SND_SOC_CV1835_USE_AUDIO_PLL=y
CONFIG_CV1835_I2S_SUBSYS=y
CONFIG_WATCHDOG_CORE=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_CVI=y
CONFIG_DMADEVICES=n
CONFIG_DW_DMAC_CVITEK=n
# CONFIG_VIRTIO_MENU is not set
CONFIG_STAGING=y
CONFIG_ION=y
CONFIG_ION_SYSTEM_HEAP=y
CONFIG_ION_CARVEOUT_HEAP=y
CONFIG_ION_CMA_HEAP=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_CV1835_SYSDMA_REMAP=n
CONFIG_PWM=y
CONFIG_ANDROID=y
# CONFIG_TEE=y
# CONFIG_OPTEE=y
# CONFIG_MANDATORY_FILE_LOCKING is not set
CONFIG_EXT3_FS=y
CONFIG_EXT4_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_PROC_PAGE_MONITOR is not set
CONFIG_TMPFS=y
CONFIG_CONFIGFS_FS=m
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_WBUF_VERIFY=y
CONFIG_UBIFS_FS=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_DIRECT=y
# CONFIG_SQUASHFS_ZLIB is not set
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_EMBEDDED=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=1
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y
CONFIG_ROOT_NFS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
CONFIG_NLS_ISO8859_3=y
# CONFIG_CRYPTO_ECHAINIV is not set
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_HW is not set
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_DEBUG_FS=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_FTRACE is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
CONFIG_RTC_CLASS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_USB=y
CONFIG_USB_OTG=y
CONFIG_USB_OTG_FSM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_ACM=y
CONFIG_USB_U_SERIAL=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_U_AUDIO=y
CONFIG_USB_F_SERIAL=y
CONFIG_USB_F_ECM=y
CONFIG_USB_F_EEM=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_UAC1=y
CONFIG_USB_F_UVC=y
CONFIG_USB_UAS=y
CONFIG_USB_DWC2=y
CONFIG_USB_DWC2_DUAL_ROLE=y
CONFIG_USB_GADGET=y
CONFIG_U_SERIAL_CONSOLE=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_CONFIGFS_ECM=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_F_UAC1=y
CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_USB_CONFIGFS_F_FS=y
CONFIG_USB_CONFIGFS_UEVENT=y
CONFIG_USB_PHY=y
CONFIG_USB_GPIO_VBUS=y
# for licheervnano
CONFIG_FB_SIMPLE=y
CONFIG_IP_MULTICAST=y
CONFIG_SND_PROC_FS=y
CONFIG_BT=y
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BREDR=y
CONFIG_BT_BNEP=y
CONFIG_BT_HIDP=y
CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_SERIAL_DEV_BUS=y
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
CONFIG_SWAP=y
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_ACM=y
CONFIG_USB_F_ACM=y
CONFIG_USB_F_EEM=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_IPV6=y
# CONFIG_IPV6_SIT is not set
CONFIG_PACKET_DIAG=y
CONFIG_UNIX_DIAG=y
CONFIG_NETLINK_DIAG=y
CONFIG_AIC_WLAN_SUPPORT=y
CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_HYNITRON_TS=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_MAGIC_SYSRQ_SERIAL is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_LEDS_USER=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_CAMERA=y
CONFIG_LEDS_TRIGGER_ACTIVITY=y
CONFIG_LEDS_TRIGGER_NETDEV=y
CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_V4L2_FLASH_LED_CLASS=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_AIC_WLAN_SUPPORT=y
CONFIG_INPUT_EVDEV=y
CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_HYNITRON_TS=y
CONFIG_USB_DWC2=y
CONFIG_VT=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_PWM=m
# these driver may broken codec driver
# CONFIG_FUSE_FS is not set
# CONFIG_CUSE is not set
# CONFIG_OVERLAY_FS is not set
# CONFIG_NAMESPACES is not set
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
# CONFIG_CGROUPS is not set
# CONFIG_MEMCG is not set
# CONFIG_BLK_CGROUP is not set
# CONFIG_CGROUP_SCHED is not set
# CONFIG_FAIR_GROUP_SCHED is not set
# CONFIG_CFS_BANDWIDTH is not set
# CONFIG_RT_GROUP_SCHED is not set
# CONFIG_CGROUP_PIDS is not set
# CONFIG_CGROUP_DEVICE is not set
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_EPOLL=y
CONFIG_IO_URING=y
CONFIG_SIGNALFD=y

View File

@@ -0,0 +1,85 @@
SIZE_1M = 0x100000
SIZE_1K = 1024
# Only attributes in class MemoryMap are generated to .h
class MemoryMap:
# No prefix "CVIMMAP_" for the items in _no_prefix[]
_no_prefix = [
"CONFIG_SYS_TEXT_BASE" # u-boot's CONFIG_SYS_TEXT_BASE is used without CPP.
]
DRAM_BASE = 0x80000000
DRAM_SIZE = 256 * SIZE_1M
# ==============
# C906L FreeRTOS
# ==============
FREERTOS_SIZE = 768 * SIZE_1K
# FreeRTOS is at the end of DRAM
FREERTOS_ADDR = DRAM_BASE + DRAM_SIZE - FREERTOS_SIZE
FSBL_C906L_START_ADDR = FREERTOS_ADDR
# ==============================
# OpenSBI | arm-trusted-firmware
# ==============================
# Monitor is at the begining of DRAM
MONITOR_ADDR = DRAM_BASE
ATF_SIZE = 512 * SIZE_1K
OPENSBI_SIZE = 512 * SIZE_1K
OPENSBI_FDT_ADDR = MONITOR_ADDR + OPENSBI_SIZE
# =========================
# memory@DRAM_BASE in .dts.
# =========================
# Ignore the area of FreeRTOS in u-boot and kernel
KERNEL_MEMORY_ADDR = DRAM_BASE
KERNEL_MEMORY_SIZE = DRAM_SIZE - FREERTOS_SIZE
# =================
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
# =================
ION_SIZE = 70 * SIZE_1M
H26X_BITSTREAM_SIZE = 2 * SIZE_1M
H26X_ENC_BUFF_SIZE = 0
ISP_MEM_BASE_SIZE = 20 * SIZE_1M
FREERTOS_RESERVED_ION_SIZE = H26X_BITSTREAM_SIZE + H26X_ENC_BUFF_SIZE + ISP_MEM_BASE_SIZE
# ION after FreeRTOS
ION_ADDR = FREERTOS_ADDR - ION_SIZE
# Buffers of the fast image are inside the ION buffer
H26X_BITSTREAM_ADDR = ION_ADDR
H26X_ENC_BUFF_ADDR = H26X_BITSTREAM_ADDR + H26X_BITSTREAM_SIZE
ISP_MEM_BASE_ADDR = H26X_ENC_BUFF_ADDR + H26X_ENC_BUFF_SIZE
assert ISP_MEM_BASE_ADDR + ISP_MEM_BASE_SIZE <= ION_ADDR + ION_SIZE
# Boot logo is after the ION buffer
# Framebuffer uses boot logo's reserved memory
BOOTLOGO_SIZE = 8000 * SIZE_1K
BOOTLOGO_ADDR = ION_ADDR - BOOTLOGO_SIZE
FRAMEBUFFER_SIZE = BOOTLOGO_SIZE
FRAMEBUFFER_ADDR = BOOTLOGO_ADDR
# ===================
# FSBL and u-boot-2021
# ===================
CVI_UPDATE_HEADER_SIZE = SIZE_1K
UIMAG_SIZE = 16 * SIZE_1M
# kernel image loading buffer
UIMAG_ADDR = DRAM_BASE + 24 * SIZE_1M
CVI_UPDATE_HEADER_ADDR = UIMAG_ADDR - CVI_UPDATE_HEADER_SIZE
# FSBL decompress buffer
FSBL_UNZIP_ADDR = UIMAG_ADDR
FSBL_UNZIP_SIZE = UIMAG_SIZE
assert UIMAG_ADDR + UIMAG_SIZE <= BOOTLOGO_ADDR
# u-boot's run address and entry point
CONFIG_SYS_TEXT_BASE = DRAM_BASE + 2 * SIZE_1M
# u-boot's init stack point is only used before board_init_f()
CONFIG_SYS_INIT_SP_ADDR = UIMAG_ADDR + UIMAG_SIZE

View File

@@ -0,0 +1,4 @@
<physical_partition type="sd">
<partition label="BOOT" size_in_kb="80960" readonly="false" file="boot.sd"/>
<partition label="ROOTFS" size_in_kb="1048576" readonly="false" file="rootfs.sd" />
</physical_partition>

View File

@@ -0,0 +1,23 @@
CONFIG_CHIP_sg2002=y
CONFIG_BOARD_licheea53nano_sd=y
CONFIG_DDR_CFG_ddr3_1866_x16=y
CONFIG_ARCH="arm"
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_KERNEL_ENTRY_HACK=y
CONFIG_KERNEL_ENTRY_HACK_ADDR="0x80108000"
CONFIG_TOOLCHAIN_GLIBC_ARM=y
# CONFIG_FLASH_SIZE_SHRINK is not set
CONFIG_CP_EXT_WIRELESS=y
CONFIG_BOOT_IMAGE_SINGLE_DTB=y
CONFIG_STORAGE_TYPE_sd=y
CONFIG_SENSOR_GCORE_GC4653=y
CONFIG_UBOOT_2021_10=y
CONFIG_KERNEL_SRC_5.10=y
CONFIG_KERNEL_SRC="linux_5.10"
CONFIG_KERNEL_LZMA=y
CONFIG_SKIP_RAMDISK=y
CONFIG_SENSOR_TUNING_PARAM_cv181x_src_gcore_gc4653=y
# CONFIG_ROOTFS_OVERLAYFS is not set
# CONFIG_TARGET_PACKAGE_RSYSLOG is not set
# CONFIG_TARGET_PACKAGE_GATORD is not set
CONFIG_ENABLE_FREERTOS=y

View File

@@ -0,0 +1,137 @@
__attribute__((optimize("O0")))
// 1.26ms
void suck_loop(uint64_t loop) {
loop = loop * 50 * 100;
uint64_t a;
while (loop > 0) {
a = loop / (uint64_t)99;
a = loop / (uint64_t)77;
a = loop / (uint64_t)55;
a = loop / (uint64_t)33;
a = loop / (uint64_t)11;
a = loop / (uint64_t)999;
a = loop / (uint64_t)777;
a = loop / (uint64_t)555;
a = loop / (uint64_t)333;
a = loop / (uint64_t)111;
a = loop / (uint64_t)9999;
a = loop / (uint64_t)7777;
a = loop / (uint64_t)5555;
a = loop / (uint64_t)3333;
a = loop / (uint64_t)1111;
a = loop / (uint64_t)99999;
a = loop / (uint64_t)77777;
a = loop / (uint64_t)55555;
a = loop / (uint64_t)33333;
a = loop / (uint64_t)11111;
loop--;
}
}
static inline void user_led_on(void) {
uint32_t val;
val = mmio_read_32(0x03020000);
val |= (1 << 14);
mmio_write_32(0x03020000, val);
}
static inline void user_led_off(void) {
uint32_t val;
val = mmio_read_32(0x03020000);
val &= ~(1 << 14);
mmio_write_32(0x03020000, val);
}
static inline void user_led_toggle(void) {
uint32_t val;
val = mmio_read_32(0x03020000);
val ^= (1 << 14);
mmio_write_32(0x03020000, val);
}
int cvi_board_init(void)
{
uint32_t val;
// user led
mmio_write_32(0x03001038, 0x3); // GPIOA 14 GPIO_MODE
val = mmio_read_32(0x03020004); // GPIOA DIR
val |= (1 << 14); // output
mmio_write_32(0x03020004, val);
user_led_toggle();
// wifi power reset
mmio_write_32(0x0300104C, 0x3); // GPIOA 26
val = mmio_read_32(0x03020004); // GPIOA DIR
val |= (1 << 26); // output
mmio_write_32(0x03020004, val);
val = mmio_read_32(0x03020000); // signal level
val &= ~(1 << 26); // set level to low
mmio_write_32(0x03020000, val);
suck_loop(50);
user_led_toggle();
val = mmio_read_32(0x03020000); // signal level
val |= (1 << 26); // set level to high
mmio_write_32(0x03020000, val);
// wifi sdio pinmux
mmio_write_32(0x030010D0, 0x0); // D3
mmio_write_32(0x030010D4, 0x0); // D2
mmio_write_32(0x030010D8, 0x0); // D1
mmio_write_32(0x030010DC, 0x0); // D0
mmio_write_32(0x030010E0, 0x0); // CMD
mmio_write_32(0x030010E4, 0x0); // CLK
// uart bluetooth
mmio_write_32(0x03001070, 0x1); // GPIOA 28 UART1 TX
mmio_write_32(0x03001074, 0x1); // GPIOA 29 UART1 RX
mmio_write_32(0x03001068, 0x4); // GPIOA 18 UART1 CTS
mmio_write_32(0x03001064, 0x4); // GPIOA 19 UART1 RTS
// PWM
//mmio_write_32(0x03001068, 0x2); // GPIOA 18 PWM 6
// lcd reset
mmio_write_32(0x030010A4, 0x0); // PWRGPIO 0 GPIO_MODE
user_led_toggle();
// lcd backlight
//mmio_write_32(0x030010EC, 0x0); // GPIOB 0 PWM0_BUCK
// for licheervnano alpha
val = mmio_read_32(0x03021000); // signal level
val |= (1 << 0); // set level to high
mmio_write_32(0x03021000, val);
val = mmio_read_32(0x03021004); // GPIOB DIR
val |= (1 << 0); // output
mmio_write_32(0x03021004, val);
mmio_write_32(0x030010EC, 0x3); // GPIOB 0 GPIO_MODE
// for licheervnano beta
//mmio_write_32(0x030010ac, 0x4); // PWRGPIO 2 PWM 10
mmio_write_32(0x030010ac, 0x0); // PWRGPIO 2 GPIO_MODE
// camera function
//mmio_write_32(0x0300116C, 0x5); // RX4N CAM_MCLK0 for alpha
mmio_write_32(0x0300118C, 0x5); // RX0N CAM_MCLK1 for beta
// camera/tp i2c
mmio_write_32(0x03001090, 0x5); // PWR_GPIO6 IIC4_SCL
mmio_write_32(0x03001098, 0x5); // PWR_GPIO8 IIC4_SDA
// tp function
mmio_write_32(0x03001084, 0x3); // PWR_SEQ1 PWR_GPIO[3]
mmio_write_32(0x03001088, 0x3); // PWR_SEQ2 PWR_GPIO[4]
mmio_write_32(0x05027078, 0x11);// Unlock PWR_GPIO[3]
mmio_write_32(0x0502707c, 0x11);// Unlock PWR_GPIO[4]
// wait hardware bootup
suck_loop(50);
user_led_off();
return 0;
}

View File

@@ -0,0 +1,13 @@
/*
*VO control GPIOs
*/
#define VO_GPIO_RESET_PORT portb
#define VO_GPIO_RESET_INDEX 5
#define VO_GPIO_RESET_ACTIVE GPIO_ACTIVE_LOW
#define VO_GPIO_PWM_PORT portb
#define VO_GPIO_PWM_INDEX 4
#define VO_GPIO_PWM_ACTIVE GPIO_ACTIVE_HIGH
#define VO_GPIO_POWER_CT_PORT portb
#define VO_GPIO_POWER_CT_INDEX 3
#define VO_GPIO_POWER_CT_ACTIVE GPIO_ACTIVE_HIGH

View File

@@ -0,0 +1,71 @@
CONFIG_ARM=y
CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_NR_DRAM_BANKS=1
CONFIG_DEFAULT_DEVICE_TREE="soph_asic"
CONFIG_IDENT_STRING=" soph"
CONFIG_ARMV8_SET_SMPEN=y
CONFIG_TARGET_CVITEK_CV181X=y
#CONFIG_CVITEK_SPI_FLASH=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOOTDELAY=0
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_SYS_PROMPT="soph# "
# CONFIG_CMD_CONSOLE is not set
# CONFIG_CMD_XIMG is not set
# CONFIG_CMD_EDITENV is not set
# CONFIG_CMD_CRC32 is not set
# CONFIG_CMD_LZMADEC is not set
# CONFIG_CMD_UNLZ4 is not set
# CONFIG_CMD_UNZIP is not set
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
# CONFIG_CMD_ITEST is not set
CONFIG_CMD_CACHE=y
CONFIG_CMD_CVI_SD_UPDATE=y
# CONFIG_ISO_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_DM=y
CONFIG_DM_MMC=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_CVITEK=y
CONFIG_MTD=y
# CONFIG_PHY_SMSC is not set
CONFIG_DM_ETH=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_PHY_CVITEK=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_LZ4=y
CONFIG_LZMA=y
# CONFIG_TOOLS_LIBCRYPTO is not set
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
CONFIG_ENV_IS_NOWHERE=y
# for licheervnano
CONFIG_UDP_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_BUF_ADDR=0x81800000
CONFIG_FASTBOOT_BUF_SIZE=0x1000000
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_DISPLAY=y
CONFIG_DM_VIDEO=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_CMD_VIDCONSOLE=y
CONFIG_VIDEO_BPP16=y
CONFIG_VIDEO_BPP32=y
CONFIG_VIDEO_CVITEK=y
CONFIG_DISPLAY_CVITEK_MIPI=y
CONFIG_BMP_16BPP=y
CONFIG_BMP_24BPP=y
CONFIG_BMP_32BPP=y
CONFIG_BOOTLOGO=y
CONFIG_CMD_CVI_VO=y
CONFIG_CMD_GPIO=y

View File

@@ -8,7 +8,7 @@
#include <dt-bindings/gpio/gpio.h>
&i2c0 {
status = "disabled";
status = "okay";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
@@ -16,7 +16,7 @@
};
&i2c1 {
status = "disabled";
status = "okay";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
@@ -34,31 +34,52 @@
&cvi_vo {
#ifndef __UBOOT__
/delete-property/ reset-gpio;
/delete-property/ pwm-gpio;
#else
// for uboot
reset-gpio = <&porte 0 1>;
pwm-gpio = <&porte 2 1>;
#endif
/delete-property/ pwm-gpio;
/delete-property/ power-ct-gpio;
};
&mipi_tx {
/delete-property/ pwm-gpio;
#ifndef __UBOOT__
// for linux kernel
reset-gpio = <&porte 0 1>;
pwm-gpio = <&porte 2 1>;
#else
/delete-property/ reset-gpio;
/delete-property/ pwm-gpio;
#endif
/delete-property/ power-ct-gpio;
status = "okay";
};
&uart0 {
clocks = <&clk CV181X_CLK_UART0>;
/delete-property/ clock-frequency;
};
&uart1 {
clocks = <&clk CV181X_CLK_UART1>;
/delete-property/ clock-frequency;
status = "okay";
};
&uart2 {
clocks = <&clk CV181X_CLK_UART2>;
/delete-property/ clock-frequency;
status = "okay";
};
&uart3 {
clocks = <&clk CV181X_CLK_UART3>;
/delete-property/ clock-frequency;
status = "okay";
};
&pwm0 {
status = "okay";
};
@@ -80,7 +101,7 @@
};
&i2c3 {
status = "disabled";
status = "okay";
/delete-property/ scl-pinmux;
/delete-property/ sda-pinmux;
/delete-property/ scl-gpios;
@@ -88,7 +109,7 @@
};
&i2c4 {
statuc = "okay";
status = "okay";
gt9xx: gt9xx@14 {
compatible = "goodix,gt9xx";
reg = <0x14>;
@@ -96,17 +117,57 @@
goodix,rst-gpio = <&porte 4 0>;
status = "okay";
};
hytr: hynitron@5a {
compatible = "hynitron,hyn_ts";
reg = <0x5a>;
hynitron,irq-gpio = <&porte 3 0>;
hynitron,reset-gpio = <&porte 4 0>;
hynitron,max-touch-number = <5>;
hynitron,display-coords = <368 552>;
hynitron: hynitron@5a {
compatible = "hynitron,hyn_ts", "hyn,7xx";
reg = <0x5a>;
irq-gpio = <&porte 3 0>;
hynitron,irq-gpio = <&porte 3 0>;
reset-gpio = <&porte 4 0>;
hynitron,reset-gpio = <&porte 4 0>;
max-touch-number = <5>;
hynitron,max-touch-number = <5>;
display-coords = <0 0 480 640>;
hynitron,display-coords = <368 552>;
pos-swap = <0>;
posx-reverse = <1>;
posy-reverse = <1>;
status = "okay";
};
};
&spi0 {
status = "okay";
};
&spi1 {
status = "okay";
};
&spi2 {
status = "okay";
// /delete-node/ spidev@0;
st7789: st7789@0{
compatible = "sitronix,st7789";
reg = <0>;
status = "disabled";
spi-max-frequency = <80000000>;
spi-cpol;
spi-cpha;
rotate = <0>;
fps = <60>;
rgb;
buswidth = <8>;
dc = <&porte 20 GPIO_ACTIVE_HIGH>;
reset = <&porta 14 GPIO_ACTIVE_LOW>;
debug = <0>;
};
};
&spi3 {
status = "okay";
};
&dac {
status = "okay";
/delete-property/ mute-gpio-r;
@@ -127,6 +188,29 @@
/ {
model = "LicheeRv Nano";
spi4: spi4@gpio {
compatible = "spi-gpio";
sck-gpio = <&porta 22 0>;
miso-gpio = <&porta 23 0>;
mosi-gpio = <&porta 25 0>;
cs-gpio = <&porta 24 GPIO_ACTIVE_LOW>;
num-chipselects = <1>;
status = "okay";
spidev@0 {
compatible = "spidev";
reg = <0>;
};
};
i2c5: i2c5@gpio {
compatible = "i2c-gpio";
scl-gpios = <&porta 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
sda-gpios = <&porta 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
i2c-gpio,delay-us = <5>;
status = "okay";
};
gpio-keys {
compatible = "gpio-keys";
key-user {
@@ -146,6 +230,17 @@
};
};
// buggy pwm driver, not working, please use userspace pwm api
/*
lcd0_backlight: pwm-backlight@0 {
compatible = "pwm-backlight";
pwm-names = "backlight";
pwms = <&pwm2 2 50000000>; // 20Khz
brightness-levels = <0 2 4 8 16 32 64 128 255>;
default-brightness-level = <4>;
};
*/
wifisd:wifi-sd@4320000 {
compatible = "cvitek,cv181x-sdio";
bus-width = <4>;

View File

@@ -8,7 +8,7 @@ CONFIG_PREEMPT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_BLK_DEV_INITRD=n
CONFIG_BLK_DEV_INITRD=y
# CONFIG_SYSFS_SYSCALL is not set
# CONFIG_FHANDLE is not set
# CONFIG_BASE_FULL is not set
@@ -107,14 +107,8 @@ CONFIG_CVITEK_PHY=y
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
CONFIG_INPUT=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_EVDEV=y
# CONFIG_SERIO is not set
# CONFIG_VT is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=5
@@ -123,9 +117,13 @@ CONFIG_SERIAL_8250_DW=y
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
CONFIG_HW_RANDOM=y
CONFIG_I2C=y
CONFIG_I2C_SLAVE=y
CONFIG_I2C_SLAVE_EEPROM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MUX=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_GPIO=m
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_PINCTRL=y
CONFIG_CVITEK_PINCTRL_CV1835=y
@@ -359,6 +357,8 @@ CONFIG_VIDEO_CVITEK_MIPI_TX=m
# end of Digital TV options
CONFIG_FB=y
# CONFIG_FB_TFT is not set
# CONFIG_FB_TFT_ST7789 is not set
CONFIG_FB_CVITEK=m
CONFIG_SOUND=y
CONFIG_SND=y
@@ -367,7 +367,9 @@ CONFIG_SND=y
# CONFIG_SND_DRIVERS is not set
CONFIG_SND_HDA_PREALLOC_SIZE=1
# CONFIG_SND_SPI is not set
# CONFIG_SND_USB is not set
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=y
CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y
CONFIG_SND_SOC=y
CONFIG_SND_SOC_CV182XA_CV182XAADC=y
CONFIG_SND_SOC_CV182XA_CV182XADAC=y
@@ -450,7 +452,17 @@ CONFIG_RCU_TRACE=n
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_FTRACE is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
CONFIG_USB_ROLE_SWITCH=y
CONFIG_RTC_CLASS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_USB=y
CONFIG_USB_OTG=y
CONFIG_USB_OTG_FSM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_ACM=y
CONFIG_USB_U_SERIAL=y
@@ -463,13 +475,14 @@ CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_FS=y
CONFIG_USB_F_UAC1=y
CONFIG_USB_ROLE_SWITCH=y
# buggy driver, need fix
# CONFIG_USB_F_UVC is not set
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y
# CONFIG_USB_CONFIGFS_OBEX is not set
# CONFIG_USB_CONFIGFS_NCM is not set
CONFIG_USB_CONFIGFS_NCM=y
CONFIG_USB_CONFIGFS_ECM=y
# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set
CONFIG_USB_CONFIGFS_RNDIS=y
@@ -482,11 +495,11 @@ CONFIG_USB_CONFIGFS_F_UAC1=y
# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set
# CONFIG_USB_CONFIGFS_F_UAC2 is not set
# CONFIG_USB_CONFIGFS_F_MIDI is not set
# CONFIG_USB_CONFIGFS_F_HID is not set
CONFIG_USB_CONFIGFS_F_HID=y
CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_BUG=n
CONFIG_ADVISE_SYSCALLS=n
CONFIG_TIMERFD=n
CONFIG_TIMERFD=y
# for licheervnano
CONFIG_FB_SIMPLE=y
@@ -502,6 +515,9 @@ CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_3WIRE=y
CONFIG_BT_HCIUART_RTL=y
CONFIG_SERIAL_DEV_BUS=y
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
CONFIG_SWAP=y
@@ -522,6 +538,8 @@ CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_HYNITRON_TS=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=y
# CONFIG_MAGIC_SYSRQ_SERIAL is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
@@ -539,17 +557,27 @@ CONFIG_V4L2_FLASH_LED_CLASS=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_VT=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_PWM=m
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_DESIGNWARE=y
CONFIG_SPI_DW_MMIO=y
CONFIG_SPI_GPIO=m
CONFIG_SPI_SPIDEV=y
# these driver may broken codec driver
# CONFIG_FUSE_FS is not set
# CONFIG_CUSE is not set
# CONFIG_OVERLAY_FS is not set
# CONFIG_NAMESPACES is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
CONFIG_USER_NS=y
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
CONFIG_NET_NS=y
# CONFIG_CGROUPS is not set
# CONFIG_MEMCG is not set
# CONFIG_BLK_CGROUP is not set
@@ -563,3 +591,422 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_EPOLL=y
CONFIG_IO_URING=y
CONFIG_SIGNALFD=y
CONFIG_EXFAT_FS=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_DIAG=y
CONFIG_UNIX=y
CONFIG_UNIX_SCM=y
CONFIG_UNIX_DIAG=y
# CONFIG_TLS is not set
# CONFIG_XFRM_USER is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_ROUTE_CLASSID=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
CONFIG_NET_IPGRE=y
# CONFIG_NET_IPGRE_DEMUX is not set
CONFIG_IP_MULTIPLE_TABLES=y
# CONFIG_IP_MROUTE is not set
CONFIG_SYN_COOKIES=y
# CONFIG_NET_IPVTI is not set
# CONFIG_NET_FOU is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_DIAG is not set
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_BBR=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
CONFIG_IPV6=y
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set
# CONFIG_IPV6_ILA is not set
# CONFIG_IPV6_VTI is not set
# CONFIG_IPV6_SIT is not set
CONFIG_IPV6_TUNNEL=y
CONFIG_IPV6_GRE=y
CONFIG_IPV6_MULTIPLE_TABLES=y
# CONFIG_IPV6_MROUTE is not set
# CONFIG_IPV6_SEG6_LWTUNNEL is not set
# CONFIG_IPV6_SEG6_HMAC is not set
# CONFIG_IPV6_RPL_LWTUNNEL is not set
# CONFIG_MPTCP is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_FAMILY_ARP=y
CONFIG_NETFILTER_NETLINK_ACCT=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NETFILTER_NETLINK_OSF=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_LOG_COMMON=y
CONFIG_NF_LOG_NETDEV=y
CONFIG_NETFILTER_CONNCOUNT=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_ZONES=y
CONFIG_NF_CONNTRACK_PROCFS=y
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CONNTRACK_TIMEOUT=y
CONFIG_NF_CONNTRACK_TIMESTAMP=y
CONFIG_NF_CONNTRACK_LABELS=y
CONFIG_NF_CT_PROTO_DCCP=y
CONFIG_NF_CT_PROTO_GRE=y
CONFIG_NF_CT_PROTO_SCTP=y
CONFIG_NF_CT_PROTO_UDPLITE=y
CONFIG_NF_CONNTRACK_AMANDA=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_H323=y
CONFIG_NF_CONNTRACK_IRC=y
CONFIG_NF_CONNTRACK_BROADCAST=y
CONFIG_NF_CONNTRACK_NETBIOS_NS=y
CONFIG_NF_CONNTRACK_SNMP=y
CONFIG_NF_CONNTRACK_PPTP=y
CONFIG_NF_CONNTRACK_SANE=y
CONFIG_NF_CONNTRACK_SIP=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NF_CT_NETLINK=y
CONFIG_NF_CT_NETLINK_TIMEOUT=y
CONFIG_NF_CT_NETLINK_HELPER=y
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=y
CONFIG_NF_NAT_AMANDA=y
CONFIG_NF_NAT_FTP=y
CONFIG_NF_NAT_IRC=y
CONFIG_NF_NAT_SIP=y
CONFIG_NF_NAT_TFTP=y
CONFIG_NF_NAT_REDIRECT=y
CONFIG_NF_NAT_MASQUERADE=y
CONFIG_NETFILTER_SYNPROXY=y
CONFIG_NF_TABLES=y
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=y
CONFIG_NFT_CT=y
# CONFIG_NFT_FLOW_OFFLOAD is not set
CONFIG_NFT_COUNTER=y
CONFIG_NFT_CONNLIMIT=y
CONFIG_NFT_LOG=y
CONFIG_NFT_LIMIT=y
CONFIG_NFT_MASQ=y
CONFIG_NFT_REDIR=y
CONFIG_NFT_NAT=y
CONFIG_NFT_TUNNEL=y
CONFIG_NFT_OBJREF=y
CONFIG_NFT_QUEUE=y
CONFIG_NFT_QUOTA=y
CONFIG_NFT_REJECT=y
CONFIG_NFT_REJECT_INET=y
CONFIG_NFT_COMPAT=y
CONFIG_NFT_HASH=y
CONFIG_NFT_FIB=y
# CONFIG_NFT_FIB_INET is not set
CONFIG_NFT_SOCKET=y
CONFIG_NFT_OSF=y
CONFIG_NFT_TPROXY=y
CONFIG_NFT_SYNPROXY=y
CONFIG_NF_DUP_NETDEV=y
CONFIG_NFT_DUP_NETDEV=y
CONFIG_NFT_FWD_NETDEV=y
# CONFIG_NFT_FIB_NETDEV is not set
CONFIG_NF_FLOW_TABLE_INET=y
CONFIG_NF_FLOW_TABLE=y
CONFIG_NETFILTER_XTABLES=y
#
# Xtables combined modules
#
CONFIG_NETFILTER_XT_MARK=y
CONFIG_NETFILTER_XT_CONNMARK=y
CONFIG_NETFILTER_XT_SET=y
#
# Xtables targets
#
# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
# CONFIG_NETFILTER_XT_TARGET_CT is not set
# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
CONFIG_NETFILTER_XT_TARGET_HL=y
CONFIG_NETFILTER_XT_TARGET_HMARK=y
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
CONFIG_NETFILTER_XT_TARGET_LED=y
CONFIG_NETFILTER_XT_TARGET_LOG=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_NAT=y
CONFIG_NETFILTER_XT_TARGET_NETMAP=y
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
CONFIG_NETFILTER_XT_TARGET_RATEEST=y
CONFIG_NETFILTER_XT_TARGET_REDIRECT=y
CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y
CONFIG_NETFILTER_XT_TARGET_TEE=y
# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
#
# Xtables matches
#
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_BPF=y
CONFIG_NETFILTER_XT_MATCH_CLUSTER=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
CONFIG_NETFILTER_XT_MATCH_CONNLABEL=y
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_CPU=y
CONFIG_NETFILTER_XT_MATCH_DCCP=y
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=y
CONFIG_NETFILTER_XT_MATCH_DSCP=y
CONFIG_NETFILTER_XT_MATCH_ECN=y
CONFIG_NETFILTER_XT_MATCH_ESP=y
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
CONFIG_NETFILTER_XT_MATCH_HELPER=y
CONFIG_NETFILTER_XT_MATCH_HL=y
CONFIG_NETFILTER_XT_MATCH_IPCOMP=y
CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
CONFIG_NETFILTER_XT_MATCH_IPVS=y
CONFIG_NETFILTER_XT_MATCH_L2TP=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=y
CONFIG_NETFILTER_XT_MATCH_MARK=y
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_NETFILTER_XT_MATCH_NFACCT=y
CONFIG_NETFILTER_XT_MATCH_OSF=y
CONFIG_NETFILTER_XT_MATCH_OWNER=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
CONFIG_NETFILTER_XT_MATCH_RATEEST=y
CONFIG_NETFILTER_XT_MATCH_REALM=y
CONFIG_NETFILTER_XT_MATCH_RECENT=y
CONFIG_NETFILTER_XT_MATCH_SCTP=y
CONFIG_NETFILTER_XT_MATCH_SOCKET=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
CONFIG_NETFILTER_XT_MATCH_TIME=y
CONFIG_NETFILTER_XT_MATCH_U32=y
# end of Core Netfilter Configuration
CONFIG_IP_SET=y
CONFIG_IP_SET_MAX=256
# CONFIG_IP_SET_BITMAP_IP is not set
# CONFIG_IP_SET_BITMAP_IPMAC is not set
# CONFIG_IP_SET_BITMAP_PORT is not set
# CONFIG_IP_SET_HASH_IP is not set
# CONFIG_IP_SET_HASH_IPMARK is not set
# CONFIG_IP_SET_HASH_IPPORT is not set
# CONFIG_IP_SET_HASH_IPPORTIP is not set
# CONFIG_IP_SET_HASH_IPPORTNET is not set
# CONFIG_IP_SET_HASH_IPMAC is not set
# CONFIG_IP_SET_HASH_MAC is not set
# CONFIG_IP_SET_HASH_NETPORTNET is not set
# CONFIG_IP_SET_HASH_NET is not set
# CONFIG_IP_SET_HASH_NETNET is not set
# CONFIG_IP_SET_HASH_NETPORT is not set
# CONFIG_IP_SET_HASH_NETIFACE is not set
# CONFIG_IP_SET_LIST_SET is not set
CONFIG_IP_VS=y
# CONFIG_IP_VS_IPV6 is not set
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#
# CONFIG_IP_VS_PROTO_TCP is not set
# CONFIG_IP_VS_PROTO_UDP is not set
# CONFIG_IP_VS_PROTO_ESP is not set
# CONFIG_IP_VS_PROTO_AH is not set
# CONFIG_IP_VS_PROTO_SCTP is not set
#
# IPVS scheduler
#
# CONFIG_IP_VS_RR is not set
# CONFIG_IP_VS_WRR is not set
# CONFIG_IP_VS_LC is not set
# CONFIG_IP_VS_WLC is not set
# CONFIG_IP_VS_FO is not set
# CONFIG_IP_VS_OVF is not set
# CONFIG_IP_VS_LBLC is not set
# CONFIG_IP_VS_LBLCR is not set
# CONFIG_IP_VS_DH is not set
# CONFIG_IP_VS_SH is not set
# CONFIG_IP_VS_MH is not set
# CONFIG_IP_VS_SED is not set
# CONFIG_IP_VS_NQ is not set
#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8
#
# IPVS MH scheduler
#
CONFIG_IP_VS_MH_TAB_INDEX=12
#
# IPVS application helper
#
# CONFIG_IP_VS_NFCT is not set
#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_SOCKET_IPV4=y
CONFIG_NF_TPROXY_IPV4=y
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_REJECT_IPV4=y
CONFIG_NFT_DUP_IPV4=y
CONFIG_NFT_FIB_IPV4=y
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=y
CONFIG_NF_DUP_IPV4=y
CONFIG_NF_LOG_ARP=y
CONFIG_NF_LOG_IPV4=y
CONFIG_NF_REJECT_IPV4=y
CONFIG_NF_NAT_SNMP_BASIC=y
CONFIG_NF_NAT_PPTP=y
CONFIG_NF_NAT_H323=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_AH=y
CONFIG_IP_NF_MATCH_ECN=y
# CONFIG_IP_NF_MATCH_RPFILTER is not set
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_SYNPROXY=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_CLUSTERIP=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_TTL=y
CONFIG_IP_NF_RAW=y
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
CONFIG_IP_NF_ARP_MANGLE=y
# end of IP: Netfilter Configuration
#
# IPv6: Netfilter Configuration
#
CONFIG_NF_SOCKET_IPV6=y
CONFIG_NF_TPROXY_IPV6=y
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_REJECT_IPV6=y
CONFIG_NFT_DUP_IPV6=y
CONFIG_NFT_FIB_IPV6=y
CONFIG_NF_FLOW_TABLE_IPV6=y
CONFIG_NF_DUP_IPV6=y
CONFIG_NF_REJECT_IPV6=y
CONFIG_NF_LOG_IPV6=y
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=y
CONFIG_IP6_NF_MATCH_EUI64=y
CONFIG_IP6_NF_MATCH_FRAG=y
CONFIG_IP6_NF_MATCH_OPTS=y
CONFIG_IP6_NF_MATCH_HL=y
CONFIG_IP6_NF_MATCH_IPV6HEADER=y
CONFIG_IP6_NF_MATCH_MH=y
# CONFIG_IP6_NF_MATCH_RPFILTER is not set
CONFIG_IP6_NF_MATCH_RT=y
CONFIG_IP6_NF_MATCH_SRH=y
# CONFIG_IP6_NF_TARGET_HL is not set
CONFIG_IP6_NF_FILTER=y
CONFIG_IP6_NF_TARGET_REJECT=y
CONFIG_IP6_NF_TARGET_SYNPROXY=y
CONFIG_IP6_NF_MANGLE=y
CONFIG_IP6_NF_RAW=y
CONFIG_IP6_NF_NAT=y
CONFIG_IP6_NF_TARGET_MASQUERADE=y
CONFIG_IP6_NF_TARGET_NPT=y
# end of IPv6: Netfilter Configuration
CONFIG_NF_DEFRAG_IPV6=y
CONFIG_NF_CONNTRACK_BRIDGE=y
# CONFIG_BPFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
# CONFIG_BRIDGE is not set
CONFIG_HAVE_NET_DSA=y
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
# CONFIG_6LOWPAN is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
# CONFIG_DNS_RESOLVER is not set
# CONFIG_BATMAN_ADV is not set
# CONFIG_OPENVSWITCH is not set
# CONFIG_VSOCKETS is not set
CONFIG_NETLINK_DIAG=y
# CONFIG_MPLS is not set
# CONFIG_NET_NSH is not set
# CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set
# CONFIG_NET_L3_MASTER_DEV is not set
# CONFIG_QRTR is not set
# CONFIG_NET_NCSI is not set
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
# CONFIG_BPF_JIT is not set
CONFIG_NETDEVICES=y
CONFIG_MII=y
CONFIG_NET_CORE=y
CONFIG_WIREGUARD=y
CONFIG_TUN=y
CONFIG_NET_IP_TUNNEL=y
CONFIG_NET_UDP_TUNNEL=y
CONFIG_VXLAN=y
CONFIG_USB_NET_RNDIS_WLAN=m
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_ACM=y
CONFIG_VETH=y

View File

@@ -40,7 +40,7 @@ class MemoryMap:
# =================
# Multimedia buffer. Used by u-boot/kernel/FreeRTOS
# =================
ION_SIZE = 75 * SIZE_1M
ION_SIZE = 105 * SIZE_1M
H26X_BITSTREAM_SIZE = 2 * SIZE_1M
H26X_ENC_BUFF_SIZE = 0
ISP_MEM_BASE_SIZE = 20 * SIZE_1M

View File

@@ -1,4 +1,4 @@
<physical_partition type="sd">
<partition label="BOOT" size_in_kb="80960" readonly="false" file="boot.sd"/>
<partition label="ROOTFS" size_in_kb="1048576" readonly="false" file="rootfs.sd" />
<partition label="ROOTFS" size_in_kb="1638400" readonly="false" file="rootfs.sd" />
</physical_partition>

View File

@@ -14,11 +14,16 @@ CONFIG_CP_EXT_WIRELESS=y
CONFIG_STORAGE_TYPE_sd=y
CONFIG_MIPI_PANEL_ZCT2133V1=y
CONFIG_SENSOR_GCORE_GC4653=y
CONFIG_SENSOR_OV_OV2685=y
CONFIG_SENSOR_OV_OS04A10=y
CONFIG_SENSOR_LONTIUM_LT6911=y
CONFIG_SENSOR_SMS_SC035GS=y
CONFIG_UBOOT_2021_10=y
CONFIG_KERNEL_SRC_5.10=y
CONFIG_KERNEL_LZMA=y
CONFIG_SKIP_RAMDISK=y
CONFIG_KERNEL_UNCOMPRESSED=y
# CONFIG_SKIP_RAMDISK is not set
CONFIG_SENSOR_TUNING_PARAM_cv181x_src_gcore_gc4653=y
# CONFIG_SENSOR_TUNING_PARAM_sg200x_src_ov_os04a10=y
# CONFIG_ROOTFS_OVERLAYFS is not set
# CONFIG_ENABLE_FREERTOS is not set
# CONFIG_ENABLE_FREERTOS=y
# CONFIG_TARGET_PACKAGE_GATORD is not set

View File

@@ -73,7 +73,7 @@ int cvi_board_init(void)
val &= ~(1 << 26); // set level to low
mmio_write_32(0x03020000, val);
suck_loop(200);
suck_loop(50);
user_led_toggle();
val = mmio_read_32(0x03020000); // signal level
@@ -88,6 +88,14 @@ int cvi_board_init(void)
mmio_write_32(0x030010E0, 0x0); // CMD
mmio_write_32(0x030010E4, 0x0); // CLK
// spi2 pinmux
// mmio_write_32(0x030010D0, 0x1); // CS
// mmio_write_32(0x030010DC, 0x1); // MISO
// mmio_write_32(0x030010E0, 0x1); // MOSI
// mmio_write_32(0x030010E4, 0x1); // SCK
// mmio_write_32(0x030010D8, 0x3); // DC
// mmio_write_32(0x03001038, 0x3); // RESET
// uart bluetooth
mmio_write_32(0x03001070, 0x1); // GPIOA 28 UART1 TX
mmio_write_32(0x03001074, 0x1); // GPIOA 29 UART1 RX
@@ -113,10 +121,21 @@ int cvi_board_init(void)
mmio_write_32(0x030010EC, 0x3); // GPIOB 0 GPIO_MODE
// for licheervnano beta
mmio_write_32(0x030010ac, 0x4); // PWRGPIO 2 PWM 10
//mmio_write_32(0x030010ac, 0x4); // PWRGPIO 2 PWM 10
mmio_write_32(0x030010ac, 0x0); // PWRGPIO 2 GPIO_MODE
// camera function
mmio_write_32(0x0300116C, 0x5); // RX4N CAM_MCLK0
//mmio_write_32(0x0300116C, 0x5); // RX4N CAM_MCLK0 for alpha
mmio_write_32(0x0300118C, 0x5); // RX0N CAM_MCLK1 for beta
// spi1 on mipi csi
/*
mmio_write_32(0x0300116C, 0x7); // spi1 clk GPIOC2 MIPI_RX4N
mmio_write_32(0x03001170, 0x7); // spi1 cs GPIOC3 MIPI_RX4P
mmio_write_32(0x03001174, 0x7); // spi1 miso GPIOC4 MIPI_RX3N
mmio_write_32(0x03001178, 0x7); // spi1 mosi GPIOC5 MIPI_RX3P
*/
// camera/tp i2c
mmio_write_32(0x03001090, 0x5); // PWR_GPIO6 IIC4_SCL
@@ -128,8 +147,18 @@ int cvi_board_init(void)
mmio_write_32(0x05027078, 0x11);// Unlock PWR_GPIO[3]
mmio_write_32(0x0502707c, 0x11);// Unlock PWR_GPIO[4]
// bitbang i2c
mmio_write_32(0x0300103C, 0x03); // GPIOA 15 GPIO_MODE
mmio_write_32(0x03001058, 0x03); // GPIOA 27 GPIO_MODE
// bitbang spi
mmio_write_32(0x03001060, 0x03); // GPIOA 24 GPIO_MODE
mmio_write_32(0x0300105C, 0x03); // GPIOA 23 GPIO_MODE
mmio_write_32(0x03001054, 0x03); // GPIOA 25 GPIO_MODE
mmio_write_32(0x03001050, 0x03); // GPIOA 22 GPIO_MODE
// wait hardware bootup
suck_loop(100);
suck_loop(50);
user_led_off();
return 0;
}

View File

@@ -9,7 +9,7 @@ CONFIG_TARGET_CVITEK_CV181X=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOOTDELAY=1
CONFIG_BOOTDELAY=0
CONFIG_SYS_PROMPT="soph# "
# CONFIG_CMD_CONSOLE is not set
# CONFIG_CMD_XIMG is not set
@@ -63,3 +63,4 @@ CONFIG_BMP_32BPP=y
CONFIG_BOOTLOGO=y
CONFIG_CMD_CVI_VO=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_MBR=y

View File

@@ -242,6 +242,28 @@ function pack_burn_image
popd
)}
function pack_usbdl_image
{(
pushd "$OUTPUT_DIR"
[ -d tmp ] && rm -rf tmp
set -eux
cp -rf $TOOLS_PATH/cv181x/usb_dl $OUTPUT_DIR
cd usb_dl
unzip -o $OUTPUT_DIR/upgrade.zip
cp $OUTPUT_DIR/fip.bin ./
set +eux
echo "========================================="
echo ""
echo "usb flash command:"
echo ""
echo "cd $OUTPUT_DIR/usb_dl && python3 cv181x_dl.py"
echo ""
echo ""
echo "========================================="
popd
)}
function pack_prog_img
{(
local tmp_dir

View File

@@ -621,6 +621,7 @@ function build_all()
pack_data || return $?
pack_system || return $?
pack_upgrade || return $?
pack_usbdl_image || return $?
pack_burn_image || return $?
)}

View File

@@ -25,6 +25,7 @@ fsbl%: export FSBL_SECURE_BOOT_SUPPORT=${CONFIG_FSBL_SECURE_BOOT_SUPPORT}
fsbl%: export ARCH=$(call qstrip,${CONFIG_ARCH})
fsbl%: export OD_CLK_SEL=${CONFIG_OD_CLK_SEL}
fsbl%: export VC_CLK_OVERDRIVE=${CONFIG_VC_CLK_OVERDRIVE}
fsbl%: export TPU_PERF_MODE=$(shell if [ "${CONFIG_CHIP_cv1812cp}" = "y" ] || [ "${CONFIG_CHIP_sg2002}" = "y" ]; then echo "y";else echo "n";fi)
fsbl-build: u-boot-build memory-map
$(call print_target)
${Q}mkdir -p ${FSBL_PATH}/build

View File

@@ -31,6 +31,7 @@
"OV_OS04C10_SLAVE",
"OV_OS08A20",
"OV_OS08A20_SLAVE",
"OV_OV2685",
"OV_OV4689",
"OV_OV5647",
"OV_OV6211",

View File

@@ -5,9 +5,12 @@ image boot.vfat {
"fip.bin",
"rawimages/boot.sd",
"usb.dev",
"usb.rndis0",
"fb",
"usb.ncm",
"usb.rndis",
"wifi.sta",
"gt9xx",
"logo.jpeg",
"ver",
}
}
size = 16M

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -16,7 +16,8 @@ fi
output_dir=$1
echo ${output_dir}
set -eu
image=`LC_ALL=C date | tr -d '( ):'`.img
git_id=$(git rev-parse HEAD | head -c 6)
image=$(LC_ALL=C date +%F-%R | sed -e 's/:/-/g' | tr -d '( ):')-${git_id}.img
THISDIR=$(dirname $(realpath $0))
mkdir -pv ${output_dir}/tmp/
mkdir -pv ${output_dir}/root/
@@ -26,11 +27,14 @@ cp -fv ${output_dir}/fip.bin ${output_dir}/input/
cp -fv ${output_dir}/rawimages/boot.sd ${output_dir}/input/rawimages/
cp -fv ${output_dir}/rawimages/rootfs.sd ${output_dir}/input/
touch ${output_dir}/input/usb.dev
touch ${output_dir}/input/usb.rndis0
touch ${output_dir}/input/fb
touch ${output_dir}/input/usb.ncm
touch ${output_dir}/input/usb.rndis
touch ${output_dir}/input/wifi.sta
touch ${output_dir}/input/gt9xx
touch ${output_dir}/input/fb
echo ${image} > ${output_dir}/input/ver
cp -fv ${THISDIR}/genimage_rootless.cfg ${output_dir}/genimage.cfg
cp -fv ${THISDIR}/logo.jpeg ${output_dir}/input/logo.jpeg
sed -i -e "s/duo.img/${image}/g" ${output_dir}/genimage.cfg
cd ${output_dir}/
${THISDIR}/genimage

View File

@@ -83,6 +83,8 @@ class XmlParser:
if self.storage == "emmc":
self.__calEmmcOffset(parts)
if self.storage == "sd":
self.__calEmmcOffset(parts)
elif self.storage == "spinor":
self.__calNorOffset(parts)
elif self.storage == "spinand":

View File

@@ -41,8 +41,8 @@ def parse_Args():
type=str)
parser.add_argument(
'--pid',
metavar='1001',
default='1001',
metavar='1000',
default='1000',
type=str)
parser.add_argument(
"-v",

View File

@@ -30,7 +30,7 @@ use-ipv6=yes
#use-iff-running=no
#enable-dbus=yes
#disallow-other-stacks=no
allow-point-to-point=yes
#allow-point-to-point=no
#cache-entries-max=4096
#clients-max=4096
#objects-per-client-max=1024
@@ -45,7 +45,7 @@ enable-wide-area=yes
#disable-publishing=no
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
publish-addresses=yes
publish-hinfo=yes
publish-workstation=yes
#publish-domain=yes

View File

@@ -7,31 +7,24 @@ then
cd /mnt/system/ko/
insmod soph_sys.ko
insmod soph_base.ko
insmod soph_rtos_cmdqu.ko
insmod soph_fast_image.ko
insmod soph_rtos_cmdqu.ko # optional for RTOS core
insmod soph_fast_image.ko # optional for RTOS core
insmod soph_mipi_rx.ko
insmod soph_snsr_i2c.ko
insmod soph_vi.ko
insmod soph_vpss.ko
insmod soph_dwa.ko
insmod soph_vo.ko
insmod soph_mipi_tx.ko
# insmod soph_mipi_tx.ko
insmod soph_rgn.ko
insmod soph_wdt.ko
insmod soph_clock_cooling.ko
insmod soph_tpu.ko
insmod soph_vcodec.ko
insmod soph_jpeg.ko
insmod soph_vc_driver.ko MaxVencChnNum=9 MaxVdecChnNum=9
insmod soph_rtc.ko
insmod soph_ive.ko
insmod soph_mon.ko
insmod soph_pwm.ko
insmod soph_saradc.ko
insmod soph_wiegand.ko
insmod cfg80211.ko
insmod 3rd/aic8800_bsp.ko
insmod 3rd/aic8800_fdrv.ko
# insmod soph_wiegand.ko # uncomment it if want use wiegand
echo "OK"
exit 0
fi

View File

@@ -0,0 +1,62 @@
#!/bin/sh
PMU_BUS=4
PMU_ADDR=0x34
PMU_REG_VER=0x03
pmu_detected() {
pmu_version=$(i2cget -y "$PMU_BUS" "$PMU_ADDR" "$PMU_REG_VER" 2>/dev/null)
if [ $? -ne 0 ]; then
return 1
fi
pmu_version=$((pmu_version & 0xCF))
chip_id_1=$((0x47))
chip_id_2=$((0x4a))
if [ "$pmu_version" -eq "$chip_id_1" ] || [ "$pmu_version" -eq "$chip_id_2" ]; then
return 0
else
return 1
fi
}
start() {
# if ! command -v i2cget &> /dev/null; then
# echo "i2cget not found, please install i2c-tools"
# exit 1
# fi
if pmu_detected; then
exec /usr/bin/axp2101
else
echo "No PMU, skip"
fi
}
stop() {
if pmu_detected; then
runlevel=$(cat /run/runlevel | awk '{ print $1 }')
if [ "$runlevel" = "0" ]; then
echo "Stopping PMU"
value=$(i2cget -y "$PMU_BUS" "$PMU_ADDR" 0x10)
value=$((value | 0x01))
i2cset -y "$PMU_BUS" "$PMU_ADDR" 0x10 $value
fi
else
echo "No PMU, skip"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

View File

@@ -6,7 +6,5 @@ then
printf "mounting filesystem : "
mkdir -p /boot
mount -t vfat /dev/mmcblk0p1 /boot
mount -t configfs configfs /sys/kernel/config
mount -t debugfs debugfs /sys/kernel/debug
echo "OK"
fi

View File

@@ -8,11 +8,23 @@ then
then
cp -vf /boot/sshd_config /etc/ssh/sshd_config
fi
if [ -e /boot/resolv.conf ]
then
rm -rf /etc/resolv.conf
cp -vf /boot/resolv.conf /etc/resolv.conf
fi
if [ -e /boot/input-event-daemon ]
then
chmod 0644 /etc/input-event-daemon.conf
if [ ! -e /etc/input-event-daemon.conf ]
then
cp /etc/input-event-daemon.conf.bak /etc/input-event-daemon.conf
fi
else
chmod 0000 /etc/input-event-daemon.conf
if [ -e /etc/input-event-daemon.conf ]
then
cp /etc/input-event-daemon.conf /etc/input-event-daemon.conf.bak
rm /etc/input-event-daemon.conf
fi
fi
if [ -e /boot/rc.local ]
then
@@ -24,7 +36,41 @@ then
fi
if [ -e /boot/console_handler.sh ]
then
cp /boot/ttyGS0_handler.sh /etc/ttyGS0_handler.sh
cp /boot/console_handler.sh /etc/console_handler.sh
fi
if [ -e /boot/alpha ]
then
if [ ! -e /mnt/data/sensor_cfg.ini ]
then
cp /mnt/data/sensor_cfg.ini.alpha /mnt/data/sensor_cfg.ini
fi
if [ $(cat /mnt/data/sensor_cfg.ini | wc -l) -eq 0 ]
then
cp /mnt/data/sensor_cfg.ini.beta /mnt/data/sensor_cfg.ini
fi
# MIPI RX 4N PINMUX MCLK0
devmem 0x0300116C 32 0x5
# MIPI RX 0N PINMUX MIPIP RX 0N
devmem 0x0300118C 32 0x3
echo " alpha "
else
if [ ! -e /mnt/data/sensor_cfg.ini ]
then
cp /mnt/data/sensor_cfg.ini.beta /mnt/data/sensor_cfg.ini
fi
if [ $(cat /mnt/data/sensor_cfg.ini | wc -l) -eq 0 ]
then
cp /mnt/data/sensor_cfg.ini.beta /mnt/data/sensor_cfg.ini
fi
# MIPI RX 4N PINMUX MIPI RX 4N
devmem 0x0300116C 32 0x3
# MIPI RX 0N PINMUX MCLK1
devmem 0x0300118C 32 0x5
echo -n " beta "
fi
if [ -e /boot/kvmtest ]
then
cp /mnt/data/sensor_cfg.ini.LT /mnt/data/sensor_cfg.ini
fi
echo "OK"
fi

View File

@@ -0,0 +1,13 @@
#!/bin/sh
if [ "$1" = "start" ]
then
str_value=$(cat /sys/class/cvi-base/base_uid | awk '{print $2}')
first_uint=$(echo $str_value | cut -d'_' -f1)
second_uint=$(echo $str_value | cut -d'_' -f2)
result="$first_uint$second_uint"
echo $result > /device_key
# for compatibility with previous network mac addr
cat /sys/class/cvi-base/base_uid > /device_key_legacy
fi

View File

@@ -1,90 +0,0 @@
#!/bin/sh
if [ "$1" = "start" ]
then
. /etc/profile
if [ -e /boot/usb.host ]
then
echo "usb mode: host"
echo host > /proc/cviusb/otg_role
elif [ -e /boot/usb.dev ]
then
echo "usb mode: device"
cd /sys/kernel/config/usb_gadget
mkdir g0
cd g0
if [ -e /boot/usb.idVendor ]
then
cat /boot/usb.idVendor > idVendor
else
echo 0x3346 > idVendor
fi
if [ -e /boot/usb.idProduct ]
then
cat /boot/usb.idProduct > idProduct
else
echo 0x1009 > idProduct
fi
mkdir strings/0x409
if [ -e /boot/usb.serialnumber ]
then
cat /boot/usb.serialnumber > strings/0x409/serialnumber
else
echo '0123456789ABCDEF' > strings/0x409/serialnumber
fi
if [ -e /boot/usb.manufacturer ]
then
cat /boot/usb.manufacturer > strings/0x409/manufacturer
else
echo 'sipeed' > strings/0x409/manufacturer
fi
if [ -e /boot/usb.product ]
then
cat /boot/usb.product > strings/0x409/product
else
echo 'licheervnano' > strings/0x409/product
fi
mkdir configs/c.1
if [ -e /boot/usb.GS0 ]
then
mkdir functions/acm.GS0
ln -s functions/acm.GS0 configs/c.1/
fi
if [ -e /boot/usb.rndis0 ]
then
mkdir functions/rndis.usb0
ln -s functions/rndis.usb0 configs/c.1/
fi
if [ -e /boot/usb.disk0 ]
then
mkdir functions/mass_storage.disk0
ln -s functions/mass_storage.disk0 configs/c.1/
echo 1 > functions/mass_storage.disk0/lun.0/removable
if [ -e /boot/usb.disk0.ro ]
then
echo 1 > functions/mass_storage.disk0/lun.0/ro
echo 1 > functions/mass_storage.disk0/lun.0/cdrom
fi
disk=$(cat /boot/usb.disk0)
if [ -z "${disk}" ]
then
if [ ! -e /mnt/usbdisk.img ]
then
dd if=/dev/zero of=/mnt/usbdisk.img bs=1M count=16
mkfs.vfat /mnt/usbdisk.img
fi
echo /mnt/usbdisk.img > functions/mass_storage.disk0/lun.0/file
else
cat /boot/usb.disk0 > functions/mass_storage.disk0/lun.0/file
fi
fi
ls /sys/class/udc/ | cat > UDC
echo device > /proc/cviusb/otg_role
fi
fi
if [ "$1" = "stop" ]
then
echo '' > /sys/kernel/config/usb_gadget/g0/UDC
echo host > /proc/cviusb/otg_role
fi

View File

@@ -0,0 +1,33 @@
#!/bin/sh
if [ "$1" = "start" ]
then
# . /etc/profile
if [ ! -e /boot/alpha ]
then
devmem 0x030010AC 32 0x04 # PINMUX PWM10
blpwm="/sys/class/pwm/pwmchip8/pwm2/"
if [ ! -e "${blpwm}" ]
then
echo 2 > /sys/class/pwm/pwmchip8/export
fi
echo 0 > $blpwm/enable
echo "10000" > ${blpwm}/period # 100KHZ
panel_value=""
if [ -e /boot/board ]
then
panel_value=$(grep '^panel=' /boot/board | cut -d '=' -f 2)
elif [ -e /boot/uEnv.txt ]
then
panel_value=$(grep '^panel=' /boot/uEnv.txt | cut -d '=' -f 2)
fi
if [ "$panel_value" = "st7701_hd228001c31" ] || [ "$panel_value" = "st7701_lct024bsi20" ]
then
echo "2000" > ${blpwm}/duty_cycle # 20%
else
echo "5000" > ${blpwm}/duty_cycle
fi
echo 1 > $blpwm/enable
fi
exit 0
fi

View File

@@ -3,7 +3,24 @@
if [ "$1" = "start" ]
then
. /etc/profile
if [ -e /boot/gt9xx ]
panel_value=""
if [ -e /boot/board ]
then
panel_value=$(grep '^panel=' /boot/board | cut -d '=' -f 2)
elif [ -e /boot/uEnv.txt ]
then
panel_value=$(grep '^panel=' /boot/uEnv.txt | cut -d '=' -f 2)
fi
if [ "$panel_value" = "st7701_lct024bsi20" ] # MaixCAM-Pro
then
echo "load cst7xx touchscreen driver"
insmod /mnt/system/ko/hynitron_touch_new.ko
elif [ "$panel_value" = "st7701_hd228001c31" ] # MaixCAM
then
echo "load cst3xx touchscreen driver"
insmod /mnt/system/ko/hynitron_touch.ko
fi
elif [ "$panel_value" = "mtd700920b" ] # 7-inch touchscreen
then
echo "load gt9xx touchscreen driver"
insmod /mnt/system/ko/3rd/gt9xx.ko

View File

@@ -0,0 +1,10 @@
#!/bin/sh
if [ "$1" = "start" ]
then
. /etc/profile
printf "mounting filesystem : "
mount -t configfs configfs /sys/kernel/config
mount -t debugfs debugfs /sys/kernel/debug
echo "OK"
fi

View File

@@ -0,0 +1,14 @@
#!/bin/sh
if [ "$1" = "start" ]
then
. /etc/profile
printf "load kernel module: "
cd /mnt/system/ko/
insmod soph_wdt.ko
insmod soph_clock_cooling.ko
insmod soph_rtc.ko
insmod soph_mon.ko
echo "OK"
exit 0
fi

View File

@@ -0,0 +1,226 @@
#!/bin/sh
if [ "$1" = "start" ]
then
. /etc/profile
if [ -e /boot/usb.host ]
then
echo "usb mode: host"
echo host > /proc/cviusb/otg_role
elif [ -e /boot/usb.dev ]
then
echo "usb mode: device"
cd /sys/kernel/config/usb_gadget
mkdir -p g0
cd g0
if [ -e /boot/usb.idVendor ]
then
cat /boot/usb.idVendor > idVendor
else
echo 0x359F > idVendor
fi
if [ -e /boot/usb.idProduct ]
then
cat /boot/usb.idProduct > idProduct
else
echo 0x2120 > idProduct
fi
if [ -e /boot/usb.bcdDevice ]
then
cat /boot/usb.bcdDevice > bcdDevice
else
echo 0x0300 > bcdDevice
fi
if [ -e /boot/usb.bcdUSB ]
then
cat /boot/usb.bcdUSB > bcdUSB
else
echo 0x0200 > bcdUSB
fi
if [ -e /boot/usb.bDeviceClass ]
then
cat /boot/usb.bDeviceClass > bDeviceClass
else
echo 0xef > bDeviceClass
fi
if [ -e /boot/usb.bDeviceSubClass ]
then
cat /boot/usb.bDeviceSubClass > bDeviceSubClass
else
echo 0x02 > bDeviceSubClass
fi
if [ -e /boot/usb.bDeviceProtocol ]
then
cat /boot/usb.bDeviceProtocol > bDeviceProtocol
else
echo 0x01 > bDeviceProtocol
fi
mkdir -p strings/0x409
if [ -e /boot/usb.serialnumber ]
then
cat /boot/usb.serialnumber > strings/0x409/serialnumber
else
cat /device_key > strings/0x409/serialnumber
fi
if [ -e /boot/usb.manufacturer ]
then
cat /boot/usb.manufacturer > strings/0x409/manufacturer
else
echo 'sipeed' > strings/0x409/manufacturer
fi
if [ -e /boot/usb.product ]
then
cat /boot/usb.product > strings/0x409/product
else
echo 'licheervnano' > strings/0x409/product
fi
mkdir -p configs/c.1
# uvc
if [ -e /boot/usb.uvc ]
then
/etc/init.d/uvc_tool.sh mount /boot/usb.uvc
/etc/init.d/uvc_tool.sh server
fi
if [ -e /boot/usb.GS0 ]
then
mkdir -p functions/acm.GS0
rm -rf configs/c.1/acm.GS0
ln -s functions/acm.GS0 configs/c.1/
fi
if [ -e /boot/usb.disk0 ]
then
mkdir -p functions/mass_storage.disk0
rm -rf configs/c.1/mass_storage.disk0
ln -s functions/mass_storage.disk0 configs/c.1/
echo 1 > functions/mass_storage.disk0/lun.0/removable
if [ -e /boot/usb.disk0.ro ]
then
echo 1 > functions/mass_storage.disk0/lun.0/ro
echo 1 > functions/mass_storage.disk0/lun.0/cdrom
fi
disk=$(cat /boot/usb.disk0)
if [ -z "${disk}" ]
then
if [ ! -e /mnt/usbdisk.img ]
then
dd if=/dev/zero of=/mnt/usbdisk.img bs=1M count=16
mkfs.vfat /mnt/usbdisk.img
fi
echo /mnt/usbdisk.img > functions/mass_storage.disk0/lun.0/file
else
cat /boot/usb.disk0 > functions/mass_storage.disk0/lun.0/file
fi
fi
# rndis
if [ -e /boot/usb.rndis ]
then
mkdir -p functions/rndis.usb0
ln -s functions/rndis.usb0 configs/c.1/
echo e0 > functions/rndis.usb0/class
echo 01 > functions/rndis.usb0/subclass
echo 03 > functions/rndis.usb0/protocol
fi
# ncm
if [ -e /boot/usb.ncm ]
then
mkdir -p functions/ncm.usb0
ln -s functions/ncm.usb0 configs/c.1/
fi
# keyboard
if [ -e /boot/usb.keyboard ]
then
mkdir functions/hid.GS0
# echo 1 > functions/hid.GS0/subclass
echo 1 > functions/hid.GS0/wakeup_on_write
echo 1 > functions/hid.GS0/protocol
echo 6 > functions/hid.GS0/report_length
echo -ne \\x05\\x01\\x09\\x06\\xa1\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x06\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0 > functions/hid.GS0/report_desc
ln -s functions/hid.GS0 configs/c.1
fi
# mouse
if [ -e /boot/usb.mouse ]
then
mkdir functions/hid.GS1
# echo 1 > functions/hid.GS1/subclass
echo 1 > functions/hid.GS1/wakeup_on_write
echo 2 > functions/hid.GS1/protocol
echo -ne \\x34 > functions/hid.GS1/report_length
echo -ne \\x5\\x1\\x9\\x2\\xa1\\x1\\x9\\x1\\xa1\\x0\\x5\\x9\\x19\\x1\\x29\\x3\\x15\\x0\\x25\\x1\\x95\\x3\\x75\\x1\\x81\\x2\\x95\\x1\\x75\\x5\\x81\\x3\\x5\\x1\\x9\\x30\\x9\\x31\\x9\\x38\\x15\\x81\\x25\\x7f\\x75\\x8\\x95\\x3\\x81\\x6\\xc0\\xc0 > functions/hid.GS1/report_desc
ln -s functions/hid.GS1 configs/c.1
fi
# touchpad
if [ -e /boot/usb.touchpad ]
then
mkdir functions/hid.GS2
# echo 1 > functions/hid.GS2/subclass
echo 1 > functions/hid.GS2/wakeup_on_write
echo 2 > functions/hid.GS2/protocol
echo 6 > functions/hid.GS2/report_length
echo -ne \\x05\\x01\\x09\\x02\\xa1\\x01\\x09\\x01\\xa1\\x00\\x05\\x09\\x19\\x01\\x29\\x03\\x15\\x00\\x25\\x01\\x95\\x03\\x75\\x01\\x81\\x02\\x95\\x01\\x75\\x05\\x81\\x01\\x05\\x01\\x09\\x30\\x09\\x31\\x15\\x00\\x26\\xff\\x7f\\x35\\x00\\x46\\xff\\x7f\\x75\\x10\\x95\\x02\\x81\\x02\\x05\\x01\\x09\\x38\\x15\\x81\\x25\\x7f\\x35\\x00\\x45\\x00\\x75\\x08\\x95\\x01\\x81\\x06\\xc0\\xc0 > functions/hid.GS2/report_desc
ln -s functions/hid.GS2 configs/c.1
fi
# adbd
if [ -e /boot/usb.adbd ]
then
echo 0x18d1 > idVendor # google
mkdir -p configs/c.1/strings/0x409
echo "" > configs/c.1/strings/0x409/configuration
echo 0x80 > configs/c.1/bmAttributes
mkdir functions/ffs.adb
ln -s functions/ffs.adb configs/c.1/
mkdir -p /dev/usb-ffs/adb
mount -t functionfs adb /dev/usb-ffs/adb/
/usr/bin/adbd &
for i in $(seq 1 40); do
if [ -e /dev/usb-ffs/adb/ep2 ]; then
break
fi
sleep 0.1
done
fi
while true; do
ls /sys/class/udc/ | cat > UDC || true
res=$(cat UDC)
if [[ "x$res" != "x" ]]; then
break
fi
sleep 0.4
done
echo device > /proc/cviusb/otg_role
fi
fi
if [ "$1" = "stop" ]
then
echo '' > /sys/kernel/config/usb_gadget/g0/UDC
echo host > /proc/cviusb/otg_role
# uvc
if [ -e /sys/kernel/config/usb_gadget/g0/configs/c.1/uvc.usb0 ]
then
/etc/init.d/uvc_tool.sh unmount
fi
# rndis
if [ -e /sys/kernel/config/usb_gadget/g0/configs/c.1/rndis.usb0 ]
then
unlink /sys/kernel/config/usb_gadget/g0/configs/c.1/rndis.usb0
rmdir /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0
fi
# ncm
if [ -e /sys/kernel/config/usb_gadget/g0/configs/c.1/ncm.usb0 ]
then
unlink /sys/kernel/config/usb_gadget/g0/configs/c.1/ncm.usb0
rmdir /sys/kernel/config/usb_gadget/g0/functions/ncm.usb0
fi
fi

View File

@@ -19,7 +19,7 @@ then
prefix=$(cat /boot/hostname.prefix)
fi
old_hostname=$(cat /etc/hostname)
new_hostname=${prefix}-$(sha512sum /sys/class/cvi-base/base_uid | head -c 4)
new_hostname=${prefix}-$(sha512sum /device_key_legacy | head -c 4)
if [ -e /boot/hostname ]
then
@@ -38,25 +38,11 @@ then
then
new_ethmac=$(cat /boot/ethmac)
else
new_ethmac=$(hex2mac 48da356f$(sha512sum /sys/class/cvi-base/base_uid | head -c 4))
new_ethmac=$(hex2mac 48da356f$(sha512sum /device_key_legacy | head -c 4))
fi
ifconfig eth0 down
ip link set eth0 address ${new_ethmac}
ifconfig eth0 up
echo "ethernet mac address: ${new_ethmac}"
if [ -e /boot/usb.rndis0 ]
then
if [ -e /boot/usb.rndis0.mac ]
then
new_rndismac=$(cat /boot/usb.rndis0.mac)
else
new_rndismac=$(hex2mac 48da356e$(sha512sum /sys/class/cvi-base/base_uid | head -c 4))
fi
ifconfig usb0 down
ip link set usb0 address ${new_rndismac}
ifconfig usb0 up
echo "rndis mac address: ${new_rndismac}"
fi
fi

View File

@@ -0,0 +1,14 @@
#!/bin/sh
if [ "$1" = "start" ]
then
. /etc/profile
printf "load wifi kernel module: "
cd /mnt/system/ko/
insmod cfg80211.ko
insmod 3rd/aic8800_bsp.ko
insmod 3rd/aic8800_fdrv.ko
insmod 3rd/8733bs.ko
echo "OK"
exit 0
fi

View File

@@ -0,0 +1,176 @@
#!/bin/sh
. /etc/profile
gen_udhcpd_conf() {
interface=${1}
ipv4_prefix=${2}
echo "start ${ipv4_prefix}.100"
echo "end ${ipv4_prefix}.200"
echo "interface ${interface}"
echo "pidfile /var/run/udhcpd.${interface}.pid"
echo "lease_file /var/lib/misc/udhcpd.${interface}.leases"
echo "option subnet 255.255.255.0"
echo "option lease 864000"
}
hex2mac() {
MAC=""
seq 2 2 12 | while read i
do
echo -n ${1} | head -c $i | tail -c 2
if [ $i != 12 ]
then
echo -n ':'
fi
done | tr '[:upper:]' '[:lower:]'
}
start() {
# S03usbdev start first
if [ -e /boot/usb.dev ]
then
rndis_ifname=usb0
# RNDIS
if [ -e /boot/usb.rndis ]
then
# mac
if [ -e /boot/usb.rndis.mac ]
then
new_rndismac=$(cat /boot/usb.rndis.mac)
else
new_rndismac=$(hex2mac 48da356f$(sha512sum /device_key_legacy | head -c 4))
fi
ip link set $rndis_ifname address ${new_rndismac}
ifconfig $rndis_ifname up
echo "rndis mac address: ${new_rndismac}"
# dhcp
if [ ! -e /boot/rndis.nodhcpd ]
then
if [ -e /boot/rndis.ipv4_prefix ]
then
ipv4_prefix=`cat /boot/rndis.ipv4_prefix`
else
id2=$(printf "%d" 0x$(sha512sum /device_key_legacy | head -c 2))
id3=$(printf "%d" 0x$(sha512sum /device_key_legacy | head -c 4 | tail -c 2))
id3=$((id3 + 1))
if [ "$id2" = "$id3" ]
then
id2=$((id2 + 2))
fi
if [ "$id2" -ge 255 ]
then
id2=252
fi
if [ "$id3" -ge 255 ]
then
id3=251
fi
ipv4_prefix=10.$id2.$id3
fi
gen_udhcpd_conf $rndis_ifname "${ipv4_prefix}" > /etc/udhcpd.${rndis_ifname}.conf
ip addr add $ipv4_prefix.1/24 dev $rndis_ifname
udhcpd -S /etc/udhcpd.${rndis_ifname}.conf
fi
echo "RNDIS DHCP OK"
rndis_ifname=usb1
fi
# CDC NCM
if [ -e /boot/usb.ncm ]
then
# mac
if [ -e /boot/usb.ncm.mac ]
then
new_mac=$(cat /boot/usb.ncm.mac)
else
new_mac=$(hex2mac 48da356e$(sha512sum /device_key_legacy | head -c 4))
fi
ip link set $rndis_ifname address ${new_mac}
ifconfig $rndis_ifname up
echo "ncm mac address: ${new_mac}"
# dhcp
if [ ! -e /boot/ncm.nodhcpd ]
then
if [ -e /boot/ncm.ipv4_prefix ]
then
ipv4_prefix=`cat /boot/ncm.ipv4_prefix`
else
id2=$(printf "%d" 0x$(sha512sum /device_key_legacy | head -c 2))
id3=$(printf "%d" 0x$(sha512sum /device_key_legacy | head -c 4 | tail -c 2))
if [ "$id2" = "$id3" ]
then
id2=$((id2 + 1))
fi
if [ "$id2" -ge 255 ]
then
id2=253
fi
if [ "$id3" -ge 255 ]
then
id3=254
fi
ipv4_prefix=10.$id2.$id3
fi
gen_udhcpd_conf $rndis_ifname "${ipv4_prefix}" > /etc/udhcpd.${rndis_ifname}.conf
ip addr add $ipv4_prefix.1/24 dev $rndis_ifname
udhcpd -S /etc/udhcpd.${rndis_ifname}.conf
fi
echo "CDC NCM DHCP OK"
fi
fi
}
stop() {
# first card
if [ -e /var/run/udhcpd.usb0.pid ]
then
kill $(cat "/var/run/udhcpd.usb0.pid")
rm /var/run/udhcpd.usb0.pid || true
fi
pnum=$(ps -ef|grep udhcpd|grep -v grep| grep udhcpd.usb0.conf | awk '{print $1}' | wc -l)
if [ x$pnum != x0 ]
then
ps -ef|grep udhcpd|grep -v grep| grep udhcpd.usb0.conf | awk '{print $1}'|xargs kill -2 || true
fi
usb0_info=$(ip link |grep usb0)
if [ -n "$usb0_info" ]
then
ifconfig usb0 down
fi
# second card
if [ -e /var/run/udhcpd.usb1.pid ]
then
kill $(cat /var/run/udhcpd.usb1.pid)
rm /var/run/udhcpd.usb1.pid || true
fi
pnum=$(ps -ef|grep udhcpd|grep -v grep| grep udhcpd.usb1.conf | awk '{print $1}' | wc -l)
if [ x$pnum != x0 ]
then
ps -ef|grep udhcpd|grep -v grep| grep udhcpd.usb1.conf | awk '{print $1}'|xargs kill -2 || true
fi
usb0_info=$(ip link |grep usb1)
if [ -n "$usb0_info" ]
then
ifconfig usb1 down
fi
}
restart() {
stop
start
}
if [ "${1}" = "start" ]
then
start
elif [ "${1}" = "stop" ]
then
stop
elif [ "${1}" = "restart" ]
then
restart
fi

View File

@@ -1,70 +0,0 @@
#!/bin/sh
. /etc/profile
gen_udhcpd_conf() {
interface=${1}
ipv4_prefix=${2}
echo "start ${ipv4_prefix}.100"
echo "end ${ipv4_prefix}.200"
echo "interface ${interface}"
echo "pidfile /var/run/udhcpd.${interface}.pid"
echo "lease_file /var/lib/misc/udhcpd.${interface}.leases"
echo "option subnet 255.255.255.0"
echo "option lease 864000"
}
start() {
if [ -e /boot/usb.rndis0 ]
then
printf "start usb rndis: "
if [ ! -e /boot/rndis.nodhcpd ]
then
if [ -e /boot/rndis.ipv4_prefix ]
then
ipv4_prefix=`cat /boot/rndis.ipv4_prefix`
else
id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2))
id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2))
if [ "$id2" = "$id3" ]
then
id2=$((id2 + 1))
fi
if [ "$id2" -ge 255 ]
then
id2=253
fi
if [ "$id3" -ge 255 ]
then
id3=254
fi
ipv4_prefix=10.$id2.$id3
fi
gen_udhcpd_conf usb0 "${ipv4_prefix}" > /etc/udhcpd.usb0.conf
ip addr add $ipv4_prefix.1/24 dev usb0
udhcpd -S /etc/udhcpd.usb0.conf
fi
echo "ok"
fi
}
stop() {
kill `cat /var/run/udhcpd.usb0.pid`
rm /var/run/udhcpd.usb0.pid
}
restart() {
start
stop
}
if [ "${1}" = "start" ]
then
start
elif [ "${1}" = "stop" ]
then
stop
elif [ "${1}" = "restart" ]
then
restart
fi

View File

@@ -39,13 +39,13 @@ gen_udhcpd_conf() {
start() {
if [ -e /boot/wifi.sta ]
then
echo "wifi mode: sta"
if [ -e /boot/wpa_supplicant.conf ]
then
cp /boot/wpa_supplicant.conf /etc/wpa_supplicant.conf
else
echo "wifi mode: sta"
ssid="licheervnano"
pass="licheervnano"
ssid=""
pass=""
if [ -e /boot/wifi.ssid ]
then
echo -n "ssid: "
@@ -58,23 +58,26 @@ start() {
cat /boot/wifi.pass
pass=`cat /boot/wifi.pass`
fi
echo "ctrl_interface=/var/run/wpa_supplicant" > /etc/wpa_supplicant.conf
wpa_passphrase "$ssid" "$pass" >> /etc/wpa_supplicant.conf
if [ ! -z "${ssid}${pass}" ]
then
echo "ctrl_interface=/var/run/wpa_supplicant" > /etc/wpa_supplicant.conf
wpa_passphrase "$ssid" "$pass" >> /etc/wpa_supplicant.conf
fi
fi
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
if [ -e /boot/wifi.dhcp ]
if [ ! -e /boot/wifi.nodhcp ]
then
(udhcpc -i wlan0 -t 10 -T 1 -A 5 -b -p /run/udhcpc.wlan0.pid) &
fi
elif [ -e /boot/wifi.ap ]
then
echo "wifi mode: ap"
if [ -e /boot/hostapd.conf ]
then
cp /boot/hostapd.conf /etc/hostapd.conf
else
echo "wifi mode: ap"
id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2))
id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2))
id2=$(printf "%d" 0x$(sha512sum /device_key_legacy | head -c 2))
id3=$(printf "%d" 0x$(sha512sum /device_key_legacy | head -c 4 | tail -c 2))
if [ "$id2" = "$id3" ]
then
id2=$((id2 + 1))
@@ -88,30 +91,40 @@ start() {
id3=254
fi
ssid="licheervnano-${id2}${id3}"
pass="licheervnano"
if [ -e /boot/wifi.ssid ]
then
echo -n "ssid: "
cat /boot/wifi.ssid
ssid=`cat /boot/wifi.ssid`
fi
if [ -e /boot/wifi.pass ]
then
echo -n "wifi.pass: "
cat /boot/wifi.pass
pass=`cat /boot/wifi.pass`
fi
gen_hostapd_conf "$ssid" "$pass" > /etc/hostapd.conf
if [ -e /boot/wifi.ipv4_prefix ]
pass="licheervnano"
if [ -e /boot/wifi.ssid ]
then
ipv4_prefix=`cat /boot/rndis.ipv4_prefix`
else
ipv4_prefix=10.$id3.$id2
echo -n "ssid: "
cat /boot/wifi.ssid
ssid=`cat /boot/wifi.ssid`
fi
gen_udhcpd_conf wlan0 "${ipv4_prefix}" > /etc/udhcpd.wlan0.conf
ifconfig wlan0 up
ip addr add $ipv4_prefix.1/24 dev wlan0
if [ -e /boot/wifi.pass ]
then
echo -n "wifi.pass: "
cat /boot/wifi.pass
pass=`cat /boot/wifi.pass`
fi
gen_hostapd_conf "$ssid" "$pass" > /etc/hostapd.conf
fi
if [ -e /boot/wifi.ipv4_prefix ]
then
ipv4_prefix=`cat /boot/wifi.ipv4_prefix`
else
ipv4_prefix=10.$id3.$id2
fi
if [ ! -e /etc/udhcpd.wlan0.conf ]
then
gen_udhcpd_conf wlan0 "${ipv4_prefix}" > /etc/udhcpd.wlan0.conf
fi
ifconfig wlan0 up
ip route del default || true
# routes=$(ip route show | grep 'dev wlan0' | awk '{print $1}')
# for route in $routes; do
# ip route del $route dev wlan0
# echo "Deleted route $route dev wlan0"
# done
ip add flush dev wlan0
ip addr add $ipv4_prefix.1/24 dev wlan0
hostapd -B -i wlan0 /etc/hostapd.conf
udhcpd -S /etc/udhcpd.wlan0.conf
elif [ -e /boot/wifi.mon ]
@@ -122,17 +135,25 @@ start() {
}
stop() {
killall wpa_supplicant
kill `cat /run/udhcpc.wlan0.pid`
rm /run/udhcpc.wlan0.pid
kill `cat /var/run/udhcpd.wlan0.pid`
rm /var/run/udhcpd.wlan0.pid
airmon-ng stop wlan0mon
ps -ef|grep hostapd|grep -v grep|awk '{print $1}'|xargs kill -2 || true
ps -ef|grep "udhcpd -S /etc/udhcpd.wlan0.conf" |grep -v grep|awk '{print $1}'|xargs kill -2 || true
killall wpa_supplicant || true
if [ -e /run/udhcpc.wlan0.pid ]
then
kill `cat /run/udhcpc.wlan0.pid` || true
rm -f /run/udhcpc.wlan0.pid
fi
if [ -e /var/run/udhcpd.wlan0.pid ]
then
kill `cat /var/run/udhcpd.wlan0.pid` || true
rm -f /var/run/udhcpd.wlan0.pid
fi
airmon-ng stop wlan0mon || true
}
restart() {
start
stop
start
}
if [ "${1}" = "start" ]

View File

@@ -0,0 +1,39 @@
#!/bin/sh
case "$1" in
start)
printf "Starting ednctest: "
if [ -e /boot/ednctest ]
then
touch /tmp/ednctest
fi
. /etc/profile
(
while true
do
if [ ! -e /tmp/ednctest ]
then
break
fi
if [ ! -e /tmp/rand.h264 ]
then
dd if=/dev/urandom of=/tmp/rand.yuv bs=1M count=2
/mnt/system/usr/bin/sample_venc -h 1080 -w 1080 -c 264 -i rand.yuv -o /tmp/rand
fi
/mnt/system/usr/bin/sample_vcodec sample_vdec -c 264 -i rand.h264 -o rand
done
) &
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping ednctest: "
rm /tmp/ednctest
echo "OK"
;;
restart)
printf "Restart ednctest: "
$(realpath ${0}) stop
$(realpath ${0}) start
echo "OK"
;;
esac

View File

@@ -0,0 +1,35 @@
#!/bin/sh
case "$1" in
start)
printf "Starting modeltest: "
if [ -e /boot/modeltest ]
then
touch /tmp/modeltest
fi
(
while true
do
if [ ! -e /tmp/modeltest ]
then
break
fi
cd /usr/bin/
nice -n 19 model_runner_test 10000
done
) &
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping modeltest: "
rm /tmp/modeltest
killall model_runner
echo "OK"
;;
restart)
printf "Restart modeltest: "
$(realpath ${0}) stop
$(realpath ${0}) start
echo "OK"
;;
esac

View File

@@ -10,5 +10,5 @@ then
100%
" | parted ---pretend-input-tty /dev/mmcblk0 "resizepart 2 100%"
# resize data filesystem
(resize2fs /dev/mmcblk0p2 &> /dev/console) &
(resize2fs /dev/mmcblk0p2) &
fi

View File

@@ -27,8 +27,8 @@ case "$1" in
fi
echo "soc temp: $soc_temp" | fbbar 32 $colorfg $colorbg
colorfg=0xFFFFFFFF
echo "soc id: $(cat /sys/class/cvi-base/base_uid)" | fbbar 48 $colorfg $colorbg
sleep 1
echo "soc id: $(cat /device_key_legacy)" | fbbar 48 $colorfg $colorbg
sleep 1
done
) &
[ $? = 0 ] && echo "OK" || echo "FAIL"

View File

@@ -0,0 +1,274 @@
#! /bin/sh
# 支持的格式,可以通过修改这个变量自定义支持的格式
# Supported formats, you can customize the list by modifying this variable
supported_formats="yuyv mjpg"
# 支持的分辨率,可以通过修改这个变量自定义支持的分辨率
# Supported resolutions, you can customize the list by modifying this variable
supported_resolutions="480x320 640x360 640x480 1280x720 1920x1080 2560x1440"
parse_uvc_config() {
input_file="$1" # 传入的文件路径 / Path to the input file
parsed_data="" # 初始化 parsed_data 为空 / Initialize parsed_data as empty
# 检查文件是否存在并可读取 / Check if the file exists and is readable
if [ -z "$input_file" ]; then
# 没有提供文件路径 / No input file provided
echo "Warn: No input file provided for config." 1>&2 # 输出到标准错误 / Output to stderr
elif [ ! -f "$input_file" ]; then
# 文件不存在 / File does not exist
echo "Warn: File '$input_file' does not exist." 1>&2 # 输出到标准错误 / Output to stderr
elif [ ! -r "$input_file" ]; then
# 文件不可读取 / File is not readable
echo "Warn: File '$input_file' is not readable." 1>&2 # 输出到标准错误 / Output to stderr
else
# 使用 awk 处理文件内容 / Using awk to process the file content
parsed_data=$(awk -v resolutions="$supported_resolutions" -v formats="$supported_formats" '
BEGIN {
OFS = " ";
split(resolutions, supported_res, " "); # 将支持的分辨率放入数组 / Split the supported resolutions into an array
split(formats, supported_fmt, " "); # 将支持的格式放入数组 / Split the supported formats into an array
}
/^[^#]/ { # 只处理非 # 开头的行 / Process lines that do not start with #
fmt = $1;
res = $2;
# 检查格式是否在支持的格式列表中 / Check if the format is in the supported formats list
is_supported_fmt = 0;
for (i in supported_fmt) {
if (fmt == supported_fmt[i]) {
is_supported_fmt = 1;
break;
}
}
if (!is_supported_fmt) {
print "Unsupported format:", fmt > "/dev/stderr"; # 输出不支持的格式到标准错误 / Output unsupported format to stderr
next;
}
if (res ~ /^[0-9]+x[0-9]+$/) { # 匹配 640x360/1280x720 这种格式 / Match the format like 640x360 or 1280x720
is_supported_res = 0;
for (i in supported_res) {
if (res == supported_res[i]) {
is_supported_res = 1;
break;
}
}
if (!is_supported_res) {
print "Unsupported resolution:", res > "/dev/stderr"; # 输出不支持的分辨率到标准错误 / Output unsupported resolution to stderr
next;
}
split(res, dims, "x"); # 将 1280x720 按 "x" 分割成宽高 / Split 1280x720 into width and height
w = dims[1];
h = dims[2];
} else {
print "Invalid resolution format:", res > "/dev/stderr"; # 输出无效的分辨率格式到标准错误 / Output invalid resolution format to stderr
next;
}
print fmt, w, h; # 输出格式 fmt, w, h / Output fmt, w, h
}
' "$input_file")
fi
# 确保至少包含 'mjpg' 和 'yuyv' 格式 / Ensure at least one 'mjpg' and 'yuyv' format exists
has_mjpg=$(echo "$parsed_data" | grep -w "mjpg")
has_yuyv=$(echo "$parsed_data" | grep -w "yuyv")
if [ -z "$has_mjpg" ]; then
default_mjpg=$'\nmjpg 480x320\nmjpg 640x360\nmjpg 640x480\nmjpg 1280x720\nmjpg 1920x1080\nmjpg 2560x1440\n'
echo "Warn: No 'mjpg' config found, adding default: $default_mjpg" 1>&2
parsed_data="$parsed_data""$(echo "$default_mjpg" | sed 's/x/ /g')"
fi
if [ -z "$has_yuyv" ]; then
default_yuyv=$'\nyuyv 480x320\nyuyv 640x360\nyuyv 640x480\nyuyv 1280x720\nyuyv 1920x1080\nyuyv 2560x1440\n'
echo "Warn: No 'yuyv' config found, adding default: $default_yuyv" 1>&2
parsed_data="$parsed_data""$(echo "$default_yuyv" | sed 's/x/ /g')"
fi
parsed_data=$(echo "$parsed_data" | sed '/^$/d') # 删除空行
echo "$parsed_data" # 返回解析的数据 / Return the parsed data
}
##########################################################################
# UVC
CONFIGFS_PATH="/sys/kernel/config/usb_gadget/g0"
ORIGINAL_DIR=$(pwd) # 记录脚本启动时的目录 / Record the original working directory
create_frame() {
# Example usage:
# create_frame <width> <height> <format name>
WIDTH=$1
HEIGHT=$2
FORMAT=$3
if [ "$FORMAT" == "yuyv" ]; then
wdir=streaming/uncompressed/u/${HEIGHT}p
elif [ "$FORMAT" == "mjpg" ]; then
wdir=streaming/mjpeg/m/${HEIGHT}p
else
echo "only support format yuyv/mjpeg!"
exit 1
fi
mkdir -p $wdir
echo $WIDTH > $wdir/wWidth
echo $HEIGHT > $wdir/wHeight
echo $(( $WIDTH * $HEIGHT * 2 )) > $wdir/dwMaxVideoFrameBufferSize
echo $(( $WIDTH * $HEIGHT * 2 * 8 * 5 )) > $wdir/dwMinBitRate
echo $(( $WIDTH * $HEIGHT * 2 * 8 * 60 )) > $wdir/dwMaxBitRate
cat > $wdir/dwFrameInterval <<EOF
166666
333333
400000
500000
666666
1000000
2000000
EOF
echo "333333" > $wdir/dwDefaultFrameInterval
<< EOF
configure FrameRate
dwFrameInterfal is in 100-ns units (fps = 1/(dwFrameInterval * 10000000))
166666 -> 60 fps
333333 -> 30 fps
400000 -> 25 fps
500000 -> 20 fps
666666 -> 15 fps
1000000 -> 10 fps
2000000 -> 5 fps
5000000 -> 2 fps
10000000 -> 1 fps
EOF
}
# 挂载 UVC ConfigFS / Mount the UVC ConfigFS
mount_uvc_configfs() {
echo "Mounting UVC ConfigFS in $(pwd)"
# 创建 functions/uvc.usb0 目录 / Create the directory for uvc.usb0
mkdir -p functions/uvc.usb0
cd functions/uvc.usb0
# 在 functions/uvc.usb0 目录中创建控制头和符号链接 / Create control header and symlink it in uvc.usb0
mkdir -p control/header/h
ln -s control/header/h/ control/class/fs/
ln -s control/header/h/ control/class/ss/
# streaming_maxpacket sets wMaxPacketSize. Valid values are 1024/2048/3072
echo 1024 > streaming_maxpacket
# streaming_interval sets bInterval. Values range from 1..255
echo 1 > streaming_interval
# streaming_maxburst sets bMaxBurst. Valid values are 1..15
echo 1 > streaming_maxburst
# 在 functions/uvc.usb0 目录中创建流媒体路径 / Create streaming paths in uvc.usb0
mkdir -p streaming/uncompressed/u # YUV 目录 / YUV directory
mkdir -p streaming/mjpeg/m # MJPEG 目录 / MJPEG directory
# 执行解析并直接传递给 while 循环进行处理 / Execute parsing and directly pass to while loop for processing
parse_uvc_config "$1" | while read fmt w h; do
echo "Adding: Format: $fmt, Width: $w, Height: $h" # 输出格式、宽和高 / Output fmt, width, and height
create_frame $w $h $fmt
done
mkdir -p streaming/header/h
# 将 YUV 和 MJPEG 目录链接到流媒体头中 / Link YUV and MJPEG to streaming header
ln -s streaming/uncompressed/u/ streaming/header/h/
ln -s streaming/mjpeg/m/ streaming/header/h/
# 将 header 链接到 class 中 / Link header to classes
ln -s streaming/header/h/ streaming/class/fs
ln -s streaming/header/h/ streaming/class/hs
ln -s streaming/header/h/ streaming/class/ss
cd ../..
ln -s functions/uvc.usb0 configs/c.1
echo "UVC ConfigFS mounted successfully in $(pwd)"
}
# 卸载 UVC ConfigFS / Unmount the UVC ConfigFS
unmount_uvc_configfs() {
echo "Unmounting UVC ConfigFS in $(pwd)"
unlink configs/c.1/uvc.usb0
cd functions/uvc.usb0
# 删除流媒体目录 / Remove streaming directories
unlink streaming/class/fs/h
unlink streaming/class/hs/h
unlink streaming/class/ss/h
unlink streaming/header/h/u
unlink streaming/header/h/m
rmdir streaming/header/h
rmdir streaming/uncompressed/u/*p
rmdir streaming/mjpeg/m/*p
rmdir streaming/uncompressed/u
rmdir streaming/mjpeg/m
unlink control/class/fs/h
unlink control/class/ss/h
rmdir control/header/h
cd ../..
# 删除 functions/uvc.usb0 目录 / Remove the uvc.usb0 directory
rmdir functions/uvc.usb0
echo UVC ConfigFS unmounted successfully in $(pwd)
}
# 进入工作目录 / Enter the working directory
cd "$CONFIGFS_PATH" || return 1
# 处理传入的参数
# Process the input arguments
case "$1" in
"mount")
mount_uvc_configfs "$2"
;;
"unmount")
unmount_uvc_configfs
;;
"server")
if [ -z "$(fuser /etc/init.d/uvc-gadget-server.elf)" ]; then
(
echo "Waiting for UDC start..."
while [ -z "$(cat /sys/kernel/config/usb_gadget/g0/UDC)" ]; do
echo -n "."
sleep 1
done
sleep 3 # necessary delay time
if [ -z "$(fuser /etc/init.d/uvc-gadget-server.elf)" ]; then
echo -e "\nServer is starting..." # 输出选择了 server 模式 / Output that the server mode is selected
echo -e "===============================\n\n\n"
# 在这里添加你希望在 server 模式下执行的其他操作 / Add other operations you want to perform in server mode here
/etc/init.d/uvc-gadget-server.elf -u /dev/$(basename /sys/class/udc/*/device/gadget/video4linux/video*) -d -i /bin/cat_224.jpg
else
echo -e "\nServer has started..."
echo -e "===============================\n\n\n"
fi
) >/tmp/uvc-gadget.log 2>&1 &
fi
;;
"stop_server")
fuser -k /etc/init.d/uvc-gadget-server.elf
;;
*)
echo "Usage: $0 {mount <file>|unmount|server|stop_server}" # 提示正确的使用方式 / Prompt the correct usage
;;
esac
# 返回原始目录 / Return to the original directory
cd "$ORIGINAL_DIR" || return 1

View File

@@ -2,7 +2,7 @@
echo "HELLO WORLD"
if [ -e /boot/maxicam ]
if [ -e /boot/maixcam ]
then
/maixapp/apps/launcher/launcher &
fi

View File

@@ -15,9 +15,10 @@
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# some old ssh utils need rsa & ecdsa
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none

View File

@@ -0,0 +1,34 @@
[source]
;type = SOURCE_USER_FE
dev_num = 1
; section for sensor
[sensor]
; sensor name
name = GCORE_GC4653_MIPI_4M_30FPS_10BIT
bus_id = 4
sns_i2c_addr = 29
mipi_dev = 0
lane_id = 2, 1, 0, -1, -1
pn_swap = 0, 0, 0, 0, 0
mclk_en = 1
mclk = 0
;port = 0
;pin = 2
;pol = 1
;fps = 30

View File

@@ -0,0 +1,34 @@
[source]
;type = SOURCE_USER_FE
dev_num = 1
; section for sensor
[sensor]
; sensor name
name = GCORE_GC4653_MIPI_4M_30FPS_10BIT
bus_id = 4
sns_i2c_addr = 29
mipi_dev = 0
lane_id = 4, 3, 2, -1, -1
pn_swap = 0, 0, 0, 0, 0
mclk_en = 1
mclk = 1
;port = 0
;pin = 2
;pol = 1
;fps = 30

View File

@@ -4,7 +4,13 @@
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
ACTION="$1"
RESOLV_CONF="/etc/resolv.conf"
if [ -e /boot/resolv.conf ]
then
RESOLV_CONF="/etc/resolv.conf.dhcp"
fi
[ -e $RESOLV_CONF ] || touch $RESOLV_CONF
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
@@ -18,7 +24,7 @@ fi
wait_for_ipv6_default_route() {
printf "Waiting for IPv6 default route to appear"
while [ $IF_WAIT_DELAY -gt 0 ]; do
if [ -z "$(ip -6 route list | grep default)" ]; then
if ip -6 route list | grep -q default; then
printf "\n"
return
fi
@@ -29,7 +35,7 @@ wait_for_ipv6_default_route() {
printf " timeout!\n"
}
case "$1" in
case "$ACTION" in
deconfig)
/sbin/ifconfig $interface up
/sbin/ifconfig $interface 0.0.0.0
@@ -115,7 +121,7 @@ esac
HOOK_DIR="$0.d"
for hook in "${HOOK_DIR}/"*; do
[ -f "${hook}" -a -x "${hook}" ] || continue
"${hook}" "${@}"
"${hook}" "$ACTION"
done
exit 0

View File

@@ -0,0 +1,403 @@
BR2_arm=y
BR2_cortex_a53=y
BR2_ARM_EABIHF=y
BR2_ARM_FPU_FP_ARMV8=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_ARM_ARM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y
BR2_OPTIMIZE_2=y
BR2_CCACHE=y
BR2_REPRODUCIBLE=y
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_TARGET_GENERIC_HOSTNAME="licheea53nano"
BR2_TARGET_GENERIC_ISSUE="Welcome to Linux"
BR2_TARGET_GENERIC_ROOT_PASSWD="root"
BR2_PACKAGE_AIC8800_SDIO_FIRMWARE=y
BR2_INIT_SYSV=y
BR2_ROOTFS_MERGED_USR=y
BR2_ENABLE_LOCALE_WHITELIST="C en_US en_US.utf8"
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_KMOD=y
# dont rename network card,
# BR2_PACKAGE_EUDEV_RULES_GEN is not set
BR2_PACKAGE_EUDEV_ENABLE_HWDB=y
BR2_PACKAGE_BLUEZ5_UTILS=y
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_TOOLS=y
BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK=y
BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI=y
BR2_PACKAGE_BLUEZ5_UTILS_MONITOR=y
BR2_PACKAGE_BLUEZ_ALSA=y
BR2_PACKAGE_BLUEZ_ALSA_RFCOMM=y
BR2_PACKAGE_BLUEZ_ALSA_HCITOP=y
BR2_PACKAGE_NTP=y
BR2_PACKAGE_NTP_NTPD=y
BR2_PACKAGE_NTP_NTPDATE=y
BR2_PACKAGE_MACCHANGER=y
BR2_PACKAGE_AVAHI=y
BR2_PACKAGE_AVAHI_AUTOIPD=y
# avahi mdns is buggy
# BR2_PACKAGE_AVAHI_DAEMON is not set
# BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY is not set
# BR2_PACKAGE_AVAHI_DEFAULT_SERVICES is not set
BR2_PACKAGE_MDNSD=y
BR2_PACKAGE_MDNSD_MQUERY=y
BR2_PACKAGE_MDNSD_HTTP_SERVICE=y
BR2_PACKAGE_MDNSD_SSH_SERVICE=y
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WIRELESS_TOOLS_IFRENAME=y
BR2_PACKAGE_WIRELESS_TOOLS_IWCONFIG=y
BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
BR2_PACKAGE_AIRCRACK_NG=y
BR2_PACKAGE_UTIL_LINUX_RFKILL=y
BR2_PACKAGE_IPERF3=y
BR2_PACKAGE_IPMITOOL=y
BR2_PACKAGE_IPMITOOL_PEN_REG_URI=y
BR2_PACKAGE_IPMITOOL_LANPLUS=y
BR2_PACKAGE_IPMITOOL_USB=y
BR2_PACKAGE_IPMITOOL_IPMIEVD=y
BR2_PACKAGE_IPMITOOL_IPMISHELL=y
BR2_PACKAGE_ETHTOOL=y
BR2_PACKAGE_DNSMASQ=y
BR2_PACKAGE_DNSMASQ_DHCP=y
BR2_PACKAGE_RSYNC=y
BR2_PACKAGE_SOCAT=y
BR2_PACKAGE_TINC=y
BR2_PACKAGE_WIRELESS_REGDB=y
BR2_PACKAGE_MOSH=y
BR2_PACKAGE_LRZSZ=y
BR2_PACKAGE_IW=y
# BR2_PACKAGE_WIREGUARD=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_OVERRIDES=y
BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING=y
BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN=y
BR2_PACKAGE_WPA_SUPPLICANT_WEXT=y
BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE=y
BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y
BR2_PACKAGE_HOSTAPD=y
BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP=y
BR2_PACKAGE_HOSTAPD_DRIVER_NL80211=y
BR2_PACKAGE_HOSTAPD_ACS=y
BR2_PACKAGE_HOSTAPD_EAP=y
BR2_PACKAGE_HOSTAPD_WPS=y
BR2_PACKAGE_HOSTAPD_WPA3=y
# BR2_PACKAGE_HOSTAPD_VLAN is not set
BR2_PACKAGE_OPENSSH=y
BR2_PACKAGE_OPENSSH_CLIENT=y
BR2_PACKAGE_OPENSSH_SERVER=y
BR2_PACKAGE_OPENSSH_KEY_UTILS=y
BR2_PACKAGE_HAVEGED=y
BR2_PACKAGE_LIBOPENSSL_BIN=y
BR2_PACKAGE_LIBOPENSSL_ENGINES=y
BR2_PACKAGE_PARTED=y
BR2_PACKAGE_MEMTESTER=y
BR2_PACKAGE_CACHE_CALIBRATOR=y
BR2_PACKAGE_DHRYSTONE=y
BR2_PACKAGE_RAMSPEED=y
BR2_PACKAGE_SPIDEV_TEST=y
BR2_PACKAGE_STRESS_NG=y
BR2_PACKAGE_STRACE=y
BR2_PACKAGE_VMTOUCH=y
BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_ALSACTL=y
BR2_PACKAGE_ALSA_UTILS_ALSAMIXER=y
BR2_PACKAGE_ALSA_UTILS_APLAY=y
BR2_PACKAGE_MPG123=y
BR2_PACKAGE_BZIP2=y
BR2_PACKAGE_LRZIP=y
BR2_PACKAGE_LZIP=y
BR2_PACKAGE_P7ZIP=y
BR2_PACKAGE_PIGZ=y
BR2_PACKAGE_PIXZ=y
BR2_PACKAGE_UNRAR=y
BR2_PACKAGE_UNZIP=y
BR2_PACKAGE_ZIP=y
BR2_PACKAGE_ZSTD=y
BR2_PACKAGE_LZOP=y
BR2_PACKAGE_BROTLI=y
BR2_PACKAGE_LIBZIP=y
BR2_PACKAGE_LZ4_PROGS=y
BR2_PACKAGE_SZIP=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_EVTEST=y
BR2_PACKAGE_FILE=y
BR2_PACKAGE_EMPTY=y
BR2_PACKAGE_EXFATPROGS=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_TMUX=y
BR2_PACKAGE_HTOP=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_LIBCURL_CURL=y
BR2_PACKAGE_LIBCURL_VERBOSE=y
BR2_PACKAGE_LIBCURL_PROXY_SUPPORT=y
BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT=y
BR2_PACKAGE_LIBCURL_WEBSOCKETS_SUPPORT=y
BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES=y
BR2_PACKAGE_LIBCURL_OPENSSL=y
BR2_PACKAGE_LIBWEBSOCKETS=y
BR2_PACKAGE_WATCHDOG=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_SQUASHFS_GZIP=y
BR2_PACKAGE_SQUASHFS_LZ4=y
BR2_PACKAGE_SQUASHFS_LZMA=y
BR2_PACKAGE_SQUASHFS_LZO=y
BR2_PACKAGE_SQUASHFS_XZ=y
BR2_PACKAGE_SQUASHFS_ZSTD=y
BR2_PACKAGE_LCDTEST=y
BR2_PACKAGE_ASCII_INVADERS=y
BR2_PACKAGE_GNUCHESS=y
BR2_PACKAGE_SL=y
BR2_PACKAGE_XORCURSES=y
BR2_PACKAGE_INPUT_EVENT_DAEMON=y
BR2_PACKAGE_BLUEZ_TOOLS=y
BR2_PACKAGE_TPUDEMO_SG200X=y
BR2_PACKAGE_SG2002_CODEC_FIRMWARE=y
BR2_PACKAGE_TCPDUMP=y
BR2_PACKAGE_SSDP_RESPONDER=y
BR2_PACKAGE_PPPD=y
BR2_PACKAGE_NFTABLES=y
BR2_PACKAGE_BIND=y
BR2_PACKAGE_SYSSTAT=y
BR2_PACKAGE_TRACEROUTE=y
BR2_PACKAGE_IPUTILS=y
BR2_PACKAGE_IPROUTE2=y
BR2_PACKAGE_IPTABLES=y
BR2_PACKAGE_IPTABLES_NFTABLES=y
BR2_PACKAGE_NCURSES_WCHAR=y
BR2_PACKAGE_LIBEDIT=y
# BR2_PACKAGE_NGINX=y
# BR2_PACKAGE_NGINX_HTTP=y
# BR2_PACKAGE_NGINX_HTTP_DAV_MODULE=y
# BR2_PACKAGE_NGINX_HTTP_MP4_MODULE=y
# BR2_PACKAGE_NGINX_HTTP_FLV_MODULE=y
# BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE=y
# BR2_PACKAGE_NGINX_STREAM=y
# BR2_PACKAGE_NGINX_SELECT_MODULE=y
# BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE=y
# BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE=y
# BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE=y
BR2_PACKAGE_RTC_TOOLS=y
BR2_PACKAGE_PICOCOM=y
BR2_PACKAGE_FBGRAB=y
BR2_PACKAGE_MHZ=y
BR2_PACKAGE_SETSERIAL=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT=y
BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y
BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y
# if your sdnand is small, you can delete some package
BR2_PACKAGE_IMAGEMAGICK=y
BR2_PACKAGE_OCRAD=y
BR2_PACKAGE_SDL=y
BR2_PACKAGE_SDL_FBCON=y
BR2_PACKAGE_SDL_GFX=y
BR2_PACKAGE_SDL_IMAGE=y
BR2_PACKAGE_SDL_IMAGE_BMP=y
BR2_PACKAGE_SDL_IMAGE_GIF=y
BR2_PACKAGE_SDL_IMAGE_JPEG=y
BR2_PACKAGE_SDL_IMAGE_PNG=y
BR2_PACKAGE_SDL_IMAGE_WEBP=y
BR2_PACKAGE_SDL_MIXER=y
BR2_PACKAGE_SDL_NET=y
BR2_PACKAGE_SDL_SOUND=y
BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
BR2_PACKAGE_LBREAKOUT2=y
BR2_PACKAGE_LBREAKOUT2_AUDIO=y
BR2_PACKAGE_LBREAKOUT2_NET=y
BR2_PACKAGE_LTRIS=y
BR2_PACKAGE_LTRIS_AUDIO=y
BR2_PACKAGE_PRBOOM=y
BR2_PACKAGE_DOOM_WAD=y
BR2_PACKAGE_TCL=y
# BR2_PACKAGE_TCL_SHLIB_ONLY is not set
# BR2_PACKAGE_TCL_DEL_ENCODINGS is not set
BR2_PACKAGE_EXPECT=y
BR2_PACKAGE_TCLLIB=y
BR2_PACKAGE_OPENCV4=y
BR2_PACKAGE_OPENCV4_LIB_CALIB3D=y
BR2_PACKAGE_OPENCV4_LIB_DNN=y
BR2_PACKAGE_OPENCV4_LIB_HIGHGUI=y
BR2_PACKAGE_OPENCV4_LIB_OBJDETECT=y
BR2_PACKAGE_OPENCV4_LIB_PHOTO=y
BR2_PACKAGE_OPENCV4_LIB_SHAPE=y
BR2_PACKAGE_OPENCV4_LIB_STITCHING=y
BR2_PACKAGE_OPENCV4_LIB_SUPERRES=y
BR2_PACKAGE_OPENCV4_LIB_TS=y
BR2_PACKAGE_OPENCV4_LIB_VIDEOSTAB=y
BR2_PACKAGE_OPENCV4_BUILD_TESTS=y
BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS=y
BR2_PACKAGE_OPENCV4_WITH_FFMPEG=y
BR2_PACKAGE_OPENCV4_WITH_JPEG=y
BR2_PACKAGE_OPENCV4_WITH_PNG=y
BR2_PACKAGE_OPENCV4_WITH_TBB=y
BR2_PACKAGE_OPENCV4_WITH_TIFF=y
BR2_PACKAGE_OPENCV4_WITH_V4L=y
BR2_PACKAGE_OPENCV4_WITH_WEBP=y
BR2_PACKAGE_OPENCV4_INSTALL_DATA=y
BR2_PACKAGE_LIBQRENCODE=y
BR2_PACKAGE_LIBQRENCODE_TOOLS=y
BR2_PACKAGE_FFMPEG=y
BR2_PACKAGE_FFMPEG_FFMPEG=y
BR2_PACKAGE_FFMPEG_FFPROBE=y
BR2_PACKAGE_FFMPEG_GPL=y
BR2_PACKAGE_FFMPEG_NONFREE=y
BR2_PACKAGE_FFMPEG_POSTPROC=y
BR2_PACKAGE_MULTICAT=y
BR2_PACKAGE_WQY_ZENHEI=y
BR2_PACKAGE_DEJAVU=y
BR2_PACKAGE_GNUPLOT=y
BR2_PACKAGE_TESSERACT_OCR=y
BR2_PACKAGE_TESSERACT_OCR_LANG_ENG=y
BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM=y
BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA=y
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
BR2_PACKAGE_QT5BASE_GUI=y
BR2_PACKAGE_QT5BASE_LINUXFB=y
BR2_PACKAGE_QT5BASE_WIDGETS=y
BR2_PACKAGE_QT5BASE_DEFAULT_QPA="linuxfb"
BR2_PACKAGE_QT5BASE_FONTCONFIG=y
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_SYSLOG=y
BR2_PACKAGE_QT5BASE_DBUS=y
BR2_PACKAGE_QT5BASE_TSLIB=y
BR2_PACKAGE_QT5BASE_EXAMPLES=y
BR2_PACKAGE_QT5BASE_CONCURRENT=y
BR2_PACKAGE_QT5CONNECTIVITY=y
BR2_PACKAGE_QT5IMAGEFORMATS=y
BR2_PACKAGE_QT5MULTIMEDIA=y
BR2_PACKAGE_QT5SENSORS=y
BR2_PACKAGE_QT5SERIALBUS=y
BR2_PACKAGE_QT5CHARTS=y
BR2_PACKAGE_QT5COAP=y
BR2_PACKAGE_QT5ENGINIO=y
BR2_PACKAGE_QT5KNX=y
BR2_PACKAGE_QT5LOCATION=y
BR2_PACKAGE_QT5MQTT=y
BR2_PACKAGE_QT5OPCUA=y
BR2_PACKAGE_QT5REMOTEOBJECTS=y
BR2_PACKAGE_QT5SPEECH=y
BR2_PACKAGE_QT5SVG=y
BR2_PACKAGE_QT5WEBSOCKETS=y
BR2_PACKAGE_QT5WEBCHANNEL=y
BR2_PACKAGE_QEXTSERIALPORT=y
BR2_PACKAGE_QT5X11EXTRAS=y
BR2_PACKAGE_QT5XMLPATTERNS=y
BR2_PACKAGE_QT5BASE_MYSQL=y
BR2_PACKAGE_QJSON=y
BR2_PACKAGE_QUAZIP=y
BR2_PACKAGE_PYTHON3=y
BR2_PACKAGE_PYTHON3_2TO3=y
BR2_PACKAGE_PYTHON3_BZIP2=y
BR2_PACKAGE_PYTHON3_CODECSCJK=y
BR2_PACKAGE_PYTHON3_CURSES=y
BR2_PACKAGE_PYTHON3_SSL=y
BR2_PACKAGE_PYTHON3_UNICODEDATA=y
BR2_PACKAGE_PYTHON3_SQLITE=y
BR2_PACKAGE_PYTHON3_XZ=y
BR2_PACKAGE_PYTHON3_ZLIB=y
BR2_PACKAGE_PYTHON_NUMPY=y
BR2_PACKAGE_OPENCV4_LIB_PYTHON=y
BR2_PACKAGE_OPENCV4_WITH_QT5=y
BR2_PACKAGE_PYTHON_BSDIFF4=y
BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4=y
BR2_PACKAGE_PYTHON_CFFI=y
BR2_PACKAGE_PYTHON_CRC16=y
BR2_PACKAGE_PYTHON_DBUS_FAST=y
BR2_PACKAGE_PYTHON_DATEUTIL=y
BR2_PACKAGE_PYTHON_DBUS_NEXT=y
BR2_PACKAGE_PYTHON_DJANGO=y
BR2_PACKAGE_PYTHON_FLASK=y
BR2_PACKAGE_PYTHON_EVDEV=y
BR2_PACKAGE_PYTHON_FLASK_BABEL=y
BR2_PACKAGE_PYTHON_FLASK_CORS=y
BR2_PACKAGE_PYTHON_FLASK_JSONRPC=y
BR2_PACKAGE_PYTHON_FLASK_LOGIN=y
BR2_PACKAGE_PYTHON_FLASK_SMOREST=y
BR2_PACKAGE_PYTHON_FLASK_SQLALCHEMY=y
BR2_PACKAGE_PYTHON_FLASK_WTF=y
BR2_PACKAGE_PYTHON_HWDATA=y
BR2_PACKAGE_PYTHON_PIP=y
BR2_PACKAGE_PYTHON_PEXPECT=y
BR2_PACKAGE_PYTHON_PSUTIL=y
BR2_PACKAGE_PYTHON_PYAES=y
BR2_PACKAGE_PYTHON_PYALSA=y
BR2_PACKAGE_PYTHON_PYDEVMEM=y
BR2_PACKAGE_PYTHON_PYUSB=y
BR2_PACKAGE_PYTHON_REQUESTS=y
BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB=y
BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT=y
BR2_PACKAGE_PYTHON_SERIAL=y
BR2_PACKAGE_PYTHON_SERIAL_ASYNCIO=y
BR2_PACKAGE_PYTHON_WEBSOCKETS=y
BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT=y
BR2_PACKAGE_PYTHON_XMODEM=y
BR2_PACKAGE_PYTHON3_PY_PYC=y
BR2_PACKAGE_PYTHON_PYQT5=y
BR2_PACKAGE_PYTHON_PYQRCODE=y
BR2_PACKAGE_PYTHON_PYLIBFDT=y
BR2_PACKAGE_PYTHON3_READLINE=y
BR2_PACKAGE_PYTHON_JEDI=y
BR2_PACKAGE_PYTHON_LIBUSB1=y
BR2_PACKAGE_PYTHON_LXML=y
BR2_PACKAGE_PYTHON_MARKDOWN=y
BR2_PACKAGE_PYTHON_MSGPACK=y
BR2_PACKAGE_PYTHON_PERIPHERY=y
BR2_PACKAGE_PYTHON_PILLOW=y
BR2_PACKAGE_PYTHON_POSIX_IPC=y
BR2_PACKAGE_PYTHON_PROTOBUF=y
BR2_PACKAGE_PYTHON_PYGAME=y
BR2_PACKAGE_PYTHON_PYGAME_IMAGE=y
BR2_PACKAGE_PYTHON_PYGAME_EXAMPLES=y
BR2_PACKAGE_PYTHON_PYGAME_FONT=y
BR2_PACKAGE_PYTHON_PYGAME_MIXER=y
BR2_PACKAGE_PYTHON_PYUDEV=y
BR2_PACKAGE_PYTHON_PYYAML=y
BR2_PACKAGE_PYTHON_QRCODE=y
BR2_PACKAGE_PYTHON_QRCODE_PIL=y
BR2_PACKAGE_PYTHON_INTELHEX=y
BR2_PACKAGE_VIM=y
BR2_PACKAGE_VIM_RUNTIME=y
BR2_PACKAGE_AXP2101=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="1100M"
BR2_ROOTFS_OVERLAY="$(TOPDIR)/board/cvitek/SG200X/overlay"
BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(TOPDIR)/board/cvitek/SG200X/busybox-extra.config"
BR2_TARGET_TZ_INFO=y
BR2_TARGET_TZ_ZONELIST="default"
BR2_TARGET_LOCALTIME="Etc/UTC"

File diff suppressed because it is too large Load Diff

View File

@@ -1252,6 +1252,7 @@ menu "External python modules"
source "package/python-pyphen/Config.in"
source "package/python-pyqrcode/Config.in"
source "package/python-pyqt5/Config.in"
source "package/python-pyqt5-sip/Config.in"
source "package/python-pyratemp/Config.in"
source "package/python-pyroute2/Config.in"
source "package/python-pyrsistent/Config.in"
@@ -2680,6 +2681,7 @@ menu "System tools"
source "package/atop/Config.in"
source "package/attr/Config.in"
source "package/audit/Config.in"
source "package/axp2101/Config.in"
source "package/balena-engine/Config.in"
source "package/bubblewrap/Config.in"
source "package/cgroupfs-mount/Config.in"
@@ -2808,6 +2810,8 @@ menu "Sipeed"
source "package/tpudemo-sg200x/Config.in"
source "package/xuantie-gdb/Config.in"
source "package/sg2002-codec-firmware/Config.in"
source "package/mgba/Config.in"
source "package/gb-test-roms/Config.in"
endmenu

View File

@@ -0,0 +1,5 @@
config BR2_PACKAGE_AXP2101
bool "axp2101"
help
If you say Y here you get support for the X-Powers AXP2101 power
management ICs (PMICs) controlled with I2C.

View File

@@ -0,0 +1,20 @@
################################################################################
#
# axp2101
#
################################################################################
AXP2101_VERSION = 1.1.0
AXP2101_SITE = $(TOPDIR)/package/axp2101/src
AXP2101_SITE_METHOD = local
AXP2101_CFLAGS = -Iinclude -IXPowersLib -IXPowersLib/REG -Wall -Wextra
define AXP2101_BUILD_CMDS
$(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(AXP2101_CFLAGS)" -C $(@D)
endef
define AXP2101_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/axp2101 $(TARGET_DIR)/usr/bin/axp2101
endef
$(eval $(generic-package))

View File

@@ -0,0 +1,26 @@
APP_DIR = ./src
SRC_DIR = ./XPowersLib
DIR_BIN = ./bin
OBJ_C = $(wildcard ${SRC_DIR}/*.cpp ${APP_DIR}/*.cpp)
OBJ_O = $(patsubst %.cpp,${DIR_BIN}/%.o,$(notdir ${OBJ_C}))
TARGET = axp2101
$(shell mkdir -p $(DIR_BIN))
MSG = -g -O0 -Wall
CFLAGS += $(MSG)
${TARGET}:${OBJ_O}
$(CXX) $(CFLAGS) $(OBJ_O) -o $@ $(LIB)
${DIR_BIN}/%.o:$(APP_DIR)/%.cpp
$(CXX) $(CFLAGS) -c $< -o $@ -I $(SRC_DIR)
${DIR_BIN}/%.o:$(SRC_DIR)/%.cpp
$(CXX) $(CFLAGS) -c $< -o $@ $(LIB)
clean :
rm $(DIR_BIN)/*.*
rm $(TARGET)

View File

@@ -0,0 +1,171 @@
/**
*
* @license MIT License
*
* Copyright (c) 2024 lewis he
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @file PowerDeliveryHUSB238.tpp
* @author Lewis He (lewishe@outlook.com)
* @date 2024-07-24
*
*/
#if defined(ARDUINO)
#include <Arduino.h>
#else
#include <math.h>
#endif /*ARDUINO*/
#include "XPowersCommon.tpp"
#include "REG/HUSB238Constants.h"
class PowerDeliveryHUSB238 :
public XPowersCommon<PowerDeliveryHUSB238>
{
friend class XPowersCommon<PowerDeliveryHUSB238>;
public:
enum PD_Status {
NO_RESPONSE,
SUCCESS,
INVALID_CMD,
NOT_SUPPORT,
TRANSACTION_FAIL
};
enum PD_Voltage {
PD_5V = 1,
PD_9V,
PD_12V,
PD_15V,
PD_18V,
PD_20V
};
#if defined(ARDUINO)
PowerDeliveryHUSB238(TwoWire &w, int sda = SDA, int scl = SCL, uint8_t addr = HUSB238_SLAVE_ADDRESS)
{
__wire = &w;
__sda = sda;
__scl = scl;
__addr = addr;
}
#endif
PowerDeliveryHUSB238(uint8_t addr, iic_fptr_t readRegCallback, iic_fptr_t writeRegCallback)
{
thisReadRegCallback = readRegCallback;
thisWriteRegCallback = writeRegCallback;
__addr = addr;
}
PowerDeliveryHUSB238()
{
#if defined(ARDUINO)
__wire = &Wire;
__sda = SDA;
__scl = SCL;
#endif
__addr = HUSB238_SLAVE_ADDRESS;
}
~PowerDeliveryHUSB238()
{
log_i("~PowerDeliveryHUSB238");
deinit();
}
#if defined(ARDUINO)
bool init(TwoWire &w, int sda = SDA, int scl = SCL, uint8_t addr = HUSB238_SLAVE_ADDRESS)
{
__wire = &w;
__sda = sda;
__scl = scl;
__addr = addr;
return begin();
}
#endif
void deinit()
{
end();
}
uint8_t getPdVoltage()
{
int val = readRegister(HUSB238_PD_STATUS0);
if (val == -1)return 0;
val &= 0xF0;
val >>= 4;
return pd_voltage_list[val];
}
float getPdCurrent()
{
int val = readRegister(HUSB238_PD_STATUS0);
if (val == -1)return 0;
val &= 0x0F;
return pd_current_list[val];
}
void setPdVoltage(PD_Voltage vol)
{
writeRegister(HUSB238_SRC_PDO, vol);
writeRegister(HUSB238_GO_COMMAND, 0x01);
}
void resetPdVoltage()
{
writeRegister(HUSB238_GO_COMMAND, 0x10);
}
bool attach()
{
return getRegisterBit(HUSB238_PD_STATUS1, 6);
}
PD_Status status()
{
int val = readRegister(HUSB238_PD_STATUS1);
if (val == -1)return NO_RESPONSE;
val >>= 3;
val &= 0x03;
return static_cast<PD_Status>(val);
}
private:
const uint8_t pd_voltage_list[7] = {0, 5, 9, 12, 15, 18, 20};
const float pd_current_list[16] = {
0.5, 0.7, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5,
2.75, 3, 3.25, 3.5, 4, 4.5, 5
};
bool initImpl()
{
return readRegister(HUSB238_PD_STATUS0) != -1;
}
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,182 @@
#pragma once
#define AXP192_SLAVE_ADDRESS (0x34)
#define XPOWERS_AXP192_CHIP_ID (0x03)
#define XPOWERS_AXP192_STATUS (0x00)
#define XPOWERS_AXP192_MODE_CHGSTATUS (0x01)
#define XPOWERS_AXP192_OTG_STATUS (0x02)
#define XPOWERS_AXP192_IC_TYPE (0x03)
#define XPOWERS_AXP192_DATA_BUFFER1 (0x06)
#define XPOWERS_AXP192_DATA_BUFFER2 (0x07)
#define XPOWERS_AXP192_DATA_BUFFER3 (0x08)
#define XPOWERS_AXP192_DATA_BUFFER4 (0x09)
#define XPOWERS_AXP192_DATA_BUFFER5 (0x0A)
#define XPOWERS_AXP192_DATA_BUFFER6 (0x0B)
#define XPOWERS_AXP192_DATA_BUFFER_SIZE (6)
#define XPOWERS_AXP192_LDO23_DC123_EXT_CTL (0x12)
#define XPOWERS_AXP192_DC2OUT_VOL (0x23)
#define XPOWERS_AXP192_DC2_DVM (0x25)
#define XPOWERS_AXP192_DC3OUT_VOL (0x27)
#define XPOWERS_AXP192_LDO24OUT_VOL (0x28)
#define XPOWERS_AXP192_LDO3OUT_VOL (0x29)
#define XPOWERS_AXP192_IPS_SET (0x30)
#define XPOWERS_AXP192_VOFF_SET (0x31)
#define XPOWERS_AXP192_OFF_CTL (0x32)
#define XPOWERS_AXP192_CHARGE1 (0x33)
#define XPOWERS_AXP192_CHARGE2 (0x34)
#define XPOWERS_AXP192_BACKUP_CHG (0x35)
#define XPOWERS_AXP192_POK_SET (0x36)
#define XPOWERS_AXP192_DCDC_FREQSET (0x37)
#define XPOWERS_AXP192_VLTF_CHGSET (0x38)
#define XPOWERS_AXP192_VHTF_CHGSET (0x39)
#define XPOWERS_AXP192_APS_WARNING1 (0x3A)
#define XPOWERS_AXP192_APS_WARNING2 (0x3B)
#define XPOWERS_AXP192_TLTF_DISCHGSET (0x3C)
#define XPOWERS_AXP192_THTF_DISCHGSET (0x3D)
#define XPOWERS_AXP192_DCDC_MODESET (0x80)
#define XPOWERS_AXP192_ADC_EN1 (0x82)
#define XPOWERS_AXP192_ADC_EN2 (0x83)
#define XPOWERS_AXP192_ADC_SPEED (0x84)
#define XPOWERS_AXP192_ADC_INPUTRANGE (0x85)
#define XPOWERS_AXP192_ADC_IRQ_RETFSET (0x86)
#define XPOWERS_AXP192_ADC_IRQ_FETFSET (0x87)
#define XPOWERS_AXP192_TIMER_CTL (0x8A)
#define XPOWERS_AXP192_VBUS_DET_SRP (0x8B)
#define XPOWERS_AXP192_HOTOVER_CTL (0x8F)
#define XPOWERS_AXP192_PWM1_FREQ_SET (0x98)
#define XPOWERS_AXP192_PWM1_DUTY_SET1 (0x99)
#define XPOWERS_AXP192_PWM1_DUTY_SET2 (0x9A)
#define XPOWERS_AXP192_PWM2_FREQ_SET (0x9B)
#define XPOWERS_AXP192_PWM2_DUTY_SET1 (0x9C)
#define XPOWERS_AXP192_PWM2_DUTY_SET2 (0x9D)
// INTERRUPT REGISTER
#define XPOWERS_AXP192_INTEN1 (0x40)
#define XPOWERS_AXP192_INTEN2 (0x41)
#define XPOWERS_AXP192_INTEN3 (0x42)
#define XPOWERS_AXP192_INTEN4 (0x43)
#define XPOWERS_AXP192_INTEN5 (0x4A)
// INTERRUPT STATUS REGISTER
#define XPOWERS_AXP192_INTSTS1 (0x44)
#define XPOWERS_AXP192_INTSTS2 (0x45)
#define XPOWERS_AXP192_INTSTS3 (0x46)
#define XPOWERS_AXP192_INTSTS4 (0x47)
#define XPOWERS_AXP192_INTSTS5 (0x4D)
#define XPOWERS_AXP192_INTSTS_CNT (5)
#define XPOWERS_AXP192_DC1_VLOTAGE (0x26)
#define XPOWERS_AXP192_LDO23OUT_VOL (0x28)
#define XPOWERS_AXP192_GPIO0_CTL (0x90)
#define XPOWERS_AXP192_GPIO0_VOL (0x91)
#define XPOWERS_AXP192_GPIO1_CTL (0X92)
#define XPOWERS_AXP192_GPIO2_CTL (0x93)
#define XPOWERS_AXP192_GPIO012_SIGNAL (0x94)
#define XPOWERS_AXP192_GPIO34_CTL (0x95)
#define XPOWERS_AXP192_GPIO34_SIGNAL (0x96)
#define XPOWERS_AXP192_GPIO012_PULLDOWN (0x97)
#define XPOWERS_AXP192_GPIO5_CTL (0x9E)
#define XPOWERS_AXP192_GPIO0_VOL_ADC_H8 (0x64)
#define XPOWERS_AXP192_GPIO0_VOL_ADC_L4 (0x65)
#define XPOWERS_AXP192_GPIO1_VOL_ADC_H8 (0x66)
#define XPOWERS_AXP192_GPIO1_VOL_ADC_L4 (0x67)
#define XPOWERS_AXP192_GPIO2_VOL_ADC_H8 (0x68)
#define XPOWERS_AXP192_GPIO2_VOL_ADC_L4 (0x69)
#define XPOWERS_AXP192_GPIO3_VOL_ADC_H8 (0x6A)
#define XPOWERS_AXP192_GPIO3_VOL_ADC_L4 (0x6B)
#define XPOWERS_AXP192_GPIO0_STEP (0.5F)
#define XPOWERS_AXP192_GPIO1_STEP (0.5F)
#define XPOWERS_AXP192_TS_IN_H8 (0x62)
#define XPOWERS_AXP192_TS_IN_L4 (0x63)
#define XPOWERS_AXP192_BAT_AVERCHGCUR_H8 (0x7A)
#define XPOWERS_AXP192_BAT_AVERCHGCUR_L5 (0x7B)
#define XPOWERS_AXP192_ACIN_VOL_H8 (0x56)
#define XPOWERS_AXP192_ACIN_VOL_L4 (0x57)
#define XPOWERS_AXP192_ACIN_CUR_H8 (0x58)
#define XPOWERS_AXP192_ACIN_CUR_L4 (0x59)
#define XPOWERS_AXP192_VBUS_VOL_H8 (0x5A)
#define XPOWERS_AXP192_VBUS_VOL_L4 (0x5B)
#define XPOWERS_AXP192_VBUS_CUR_H8 (0x5C)
#define XPOWERS_AXP192_VBUS_CUR_L4 (0x5D)
#define XPOWERS_AXP192_BAT_AVERDISCHGCUR_H8 (0x7C)
#define XPOWERS_AXP192_BAT_AVERDISCHGCUR_L5 (0x7D)
#define XPOWERS_AXP192_APS_AVERVOL_H8 (0x7E)
#define XPOWERS_AXP192_APS_AVERVOL_L4 (0x7F)
#define XPOWERS_AXP192_BAT_AVERVOL_H8 (0x78)
#define XPOWERS_AXP192_BAT_AVERVOL_L4 (0x79)
#define XPOWERS_AXP192_BAT_CHGCOULOMB3 (0xB0)
#define XPOWERS_AXP192_BAT_CHGCOULOMB2 (0xB1)
#define XPOWERS_AXP192_BAT_CHGCOULOMB1 (0xB2)
#define XPOWERS_AXP192_BAT_CHGCOULOMB0 (0xB3)
#define XPOWERS_AXP192_BAT_DISCHGCOULOMB3 (0xB4)
#define XPOWERS_AXP192_BAT_DISCHGCOULOMB2 (0xB5)
#define XPOWERS_AXP192_BAT_DISCHGCOULOMB1 (0xB6)
#define XPOWERS_AXP192_BAT_DISCHGCOULOMB0 (0xB7)
#define XPOWERS_AXP192_COULOMB_CTL (0xB8)
#define XPOWERS_AXP192_BATT_VOLTAGE_STEP (1.1F)
#define XPOWERS_AXP192_BATT_DISCHARGE_CUR_STEP (0.5F)
#define XPOWERS_AXP192_BATT_CHARGE_CUR_STEP (0.5F)
#define XPOWERS_AXP192_ACIN_VOLTAGE_STEP (1.7F)
#define XPOWERS_AXP192_ACIN_CUR_STEP (0.625F)
#define XPOWERS_AXP192_VBUS_VOLTAGE_STEP (1.7F)
#define XPOWERS_AXP192_VBUS_CUR_STEP (0.375F)
#define XPOWERS_AXP192_APS_VOLTAGE_STEP (1.4F)
#define XPOWERS_AXP192_TS_PIN_OUT_STEP (0.8F)
#define XPOWERS_AXP192_LDO2_VOL_MIN (1800u)
#define XPOWERS_AXP192_LDO2_VOL_MAX (3300u)
#define XPOWERS_AXP192_LDO2_VOL_STEPS (100u)
#define XPOWERS_AXP192_LDO2_VOL_BIT_MASK (4u)
#define XPOWERS_AXP192_LDO3_VOL_MIN (1800u)
#define XPOWERS_AXP192_LDO3_VOL_MAX (3300u)
#define XPOWERS_AXP192_LDO3_VOL_STEPS (100u)
#define XPOWERS_AXP192_DC1_VOL_STEPS (25u)
#define XPOWERS_AXP192_DC1_VOL_MIN (700u)
#define XPOWERS_AXP192_DC1_VOL_MAX (3500u)
#define XPOWERS_AXP192_DC2_VOL_STEPS (25u)
#define XPOWERS_AXP192_DC2_VOL_MIN (700u)
#define XPOWERS_AXP192_DC2_VOL_MAX (3500u)
#define XPOWERS_AXP192_DC3_VOL_STEPS (25u)
#define XPOWERS_AXP192_DC3_VOL_MIN (700u)
#define XPOWERS_AXP192_DC3_VOL_MAX (3500u)
#define XPOWERS_AXP192_LDOIO_VOL_STEPS (100)
#define XPOWERS_AXP192_LDOIO_VOL_MIN (1800)
#define XPOWERS_AXP192_LDOIO_VOL_MAX (3300)
#define XPOWERS_AXP192_SYS_VOL_STEPS (100)
#define XPOWERS_AXP192_VOFF_VOL_MIN (2600)
#define XPOWERS_AXP192_VOFF_VOL_MAX (3300)
#define XPOWERS_AXP192_CHG_EXT_CURR_MIN (300)
#define XPOWERS_AXP192_CHG_EXT_CURR_MAX (1000)
#define XPOWERS_AXP192_CHG_EXT_CURR_STEP (100)
#define XPOWERS_AXP192_INTERNAL_TEMP_H8 (0x5E)
#define XPOWERS_AXP192_INTERNAL_TEMP_L4 (0x5F)
#define XPOWERS_AXP192_INTERNAL_TEMP_STEP (0.1F)
#define XPOWERS_AXP192_INERNAL_TEMP_OFFSET (144.7)

View File

@@ -0,0 +1,192 @@
#pragma once
#define AXP202_SLAVE_ADDRESS (0x35)
#define XPOWERS_AXP202_CHIP_ID (0x41)
#define XPOWERS_AXP202_STATUS (0x00)
#define XPOWERS_AXP202_MODE_CHGSTATUS (0x01)
#define XPOWERS_AXP202_OTG_STATUS (0x02)
#define XPOWERS_AXP202_IC_TYPE (0x03)
#define XPOWERS_AXP202_DATA_BUFFER1 (0x04)
#define XPOWERS_AXP202_DATA_BUFFER2 (0x05)
#define XPOWERS_AXP202_DATA_BUFFER3 (0x06)
#define XPOWERS_AXP202_DATA_BUFFER4 (0x07)
#define XPOWERS_AXP202_DATA_BUFFER5 (0x08)
#define XPOWERS_AXP202_DATA_BUFFER6 (0x09)
#define XPOWERS_AXP202_DATA_BUFFER7 (0x0A)
#define XPOWERS_AXP202_DATA_BUFFER8 (0x0B)
#define XPOWERS_AXP202_DATA_BUFFER9 (0x0C)
#define XPOWERS_AXP202_DATA_BUFFERA (0x0D)
#define XPOWERS_AXP202_DATA_BUFFERB (0x0E)
#define XPOWERS_AXP202_DATA_BUFFERC (0x0F)
#define XPOWERS_AXP202_LDO234_DC23_CTL (0x12)
#define XPOWERS_AXP202_DC2OUT_VOL (0x23)
#define XPOWERS_AXP202_LDO3_DC2_DVM (0x25)
#define XPOWERS_AXP202_DC3OUT_VOL (0x27)
#define XPOWERS_AXP202_LDO24OUT_VOL (0x28)
#define XPOWERS_AXP202_LDO3OUT_VOL (0x29)
#define XPOWERS_AXP202_IPS_SET (0x30)
#define XPOWERS_AXP202_VOFF_SET (0x31)
#define XPOWERS_AXP202_OFF_CTL (0x32)
#define XPOWERS_AXP202_CHARGE1 (0x33)
#define XPOWERS_AXP202_CHARGE2 (0x34)
#define XPOWERS_AXP202_BACKUP_CHG (0x35)
#define XPOWERS_AXP202_POK_SET (0x36)
#define XPOWERS_AXP202_DCDC_FREQSET (0x37)
#define XPOWERS_AXP202_VLTF_CHGSET (0x38)
#define XPOWERS_AXP202_VHTF_CHGSET (0x39)
#define XPOWERS_AXP202_APS_WARNING1 (0x3A)
#define XPOWERS_AXP202_APS_WARNING2 (0x3B)
#define XPOWERS_AXP202_TLTF_DISCHGSET (0x3C)
#define XPOWERS_AXP202_THTF_DISCHGSET (0x3D)
#define XPOWERS_AXP202_DCDC_MODESET (0x80)
#define XPOWERS_AXP202_ADC_EN1 (0x82)
#define XPOWERS_AXP202_ADC_EN2 (0x83)
#define XPOWERS_AXP202_ADC_SPEED (0x84)
#define XPOWERS_AXP202_ADC_INPUTRANGE (0x85)
#define XPOWERS_AXP202_ADC_IRQ_RETFSET (0x86)
#define XPOWERS_AXP202_ADC_IRQ_FETFSET (0x87)
#define XPOWERS_AXP202_TIMER_CTL (0x8A)
#define XPOWERS_AXP202_VBUS_DET_SRP (0x8B)
#define XPOWERS_AXP202_HOTOVER_CTL (0x8F)
#define XPOWERS_AXP202_DATA_BUFFER_SIZE (12)
#define XPOWERS_AXP202_GPIO0_CTL (0x90)
#define XPOWERS_AXP202_GPIO0_VOL (0x91)
#define XPOWERS_AXP202_GPIO1_CTL (0x92)
#define XPOWERS_AXP202_GPIO2_CTL (0x93)
#define XPOWERS_AXP202_GPIO012_SIGNAL (0x94)
#define XPOWERS_AXP202_GPIO3_CTL (0x95)
// INTERRUPT REGISTER
#define XPOWERS_AXP202_INTEN1 (0x40)
#define XPOWERS_AXP202_INTEN2 (0x41)
#define XPOWERS_AXP202_INTEN3 (0x42)
#define XPOWERS_AXP202_INTEN4 (0x43)
#define XPOWERS_AXP202_INTEN5 (0x44)
//INTERRUPT STATUS REGISTER
#define XPOWERS_AXP202_INTSTS1 (0x48)
#define XPOWERS_AXP202_INTSTS2 (0x49)
#define XPOWERS_AXP202_INTSTS3 (0x4A)
#define XPOWERS_AXP202_INTSTS4 (0x4B)
#define XPOWERS_AXP202_INTSTS5 (0x4C)
#define XPOWERS_AXP202_INTSTS_CNT (5)
//AXP ADC DATA REGISTER
#define XPOWERS_AXP202_GPIO0_VOL_ADC_H8 (0x64)
#define XPOWERS_AXP202_GPIO0_VOL_ADC_L4 (0x65)
#define XPOWERS_AXP202_GPIO1_VOL_ADC_H8 (0x66)
#define XPOWERS_AXP202_GPIO1_VOL_ADC_L4 (0x67)
#define XPOWERS_AXP202_GPIO0_STEP (0.5F)
#define XPOWERS_AXP202_GPIO1_STEP (0.5F)
#define XPOWERS_AXP202_BAT_AVERVOL_H8 (0x78)
#define XPOWERS_AXP202_BAT_AVERVOL_L4 (0x79)
#define XPOWERS_AXP202_BAT_AVERCHGCUR_H8 (0x7A)
#define XPOWERS_AXP202_BAT_AVERCHGCUR_L4 (0x7B)
#define XPOWERS_AXP202_BAT_AVERCHGCUR_L5 (0x7B)
#define XPOWERS_AXP202_ACIN_VOL_H8 (0x56)
#define XPOWERS_AXP202_ACIN_VOL_L4 (0x57)
#define XPOWERS_AXP202_ACIN_CUR_H8 (0x58)
#define XPOWERS_AXP202_ACIN_CUR_L4 (0x59)
#define XPOWERS_AXP202_VBUS_VOL_H8 (0x5A)
#define XPOWERS_AXP202_VBUS_VOL_L4 (0x5B)
#define XPOWERS_AXP202_VBUS_CUR_H8 (0x5C)
#define XPOWERS_AXP202_VBUS_CUR_L4 (0x5D)
#define XPOWERS_AXP202_INTERNAL_TEMP_H8 (0x5E)
#define XPOWERS_AXP202_INTERNAL_TEMP_L4 (0x5F)
#define XPOWERS_AXP202_TS_IN_H8 (0x62)
#define XPOWERS_AXP202_TS_IN_L4 (0x63)
#define XPOWERS_AXP202_GPIO0_VOL_ADC_H8 (0x64)
#define XPOWERS_AXP202_GPIO0_VOL_ADC_L4 (0x65)
#define XPOWERS_AXP202_GPIO1_VOL_ADC_H8 (0x66)
#define XPOWERS_AXP202_GPIO1_VOL_ADC_L4 (0x67)
#define XPOWERS_AXP202_BAT_AVERDISCHGCUR_H8 (0x7C)
#define XPOWERS_AXP202_BAT_AVERDISCHGCUR_L5 (0x7D)
#define XPOWERS_AXP202_APS_AVERVOL_H8 (0x7E)
#define XPOWERS_AXP202_APS_AVERVOL_L4 (0x7F)
#define XPOWERS_AXP202_INT_BAT_CHGCUR_H8 (0xA0)
#define XPOWERS_AXP202_INT_BAT_CHGCUR_L4 (0xA1)
#define XPOWERS_AXP202_EXT_BAT_CHGCUR_H8 (0xA2)
#define XPOWERS_AXP202_EXT_BAT_CHGCUR_L4 (0xA3)
#define XPOWERS_AXP202_INT_BAT_DISCHGCUR_H8 (0xA4)
#define XPOWERS_AXP202_INT_BAT_DISCHGCUR_L4 (0xA5)
#define XPOWERS_AXP202_EXT_BAT_DISCHGCUR_H8 (0xA6)
#define XPOWERS_AXP202_EXT_BAT_DISCHGCUR_L4 (0xA7)
#define XPOWERS_AXP202_BAT_CHGCOULOMB3 (0xB0)
#define XPOWERS_AXP202_BAT_CHGCOULOMB2 (0xB1)
#define XPOWERS_AXP202_BAT_CHGCOULOMB1 (0xB2)
#define XPOWERS_AXP202_BAT_CHGCOULOMB0 (0xB3)
#define XPOWERS_AXP202_BAT_DISCHGCOULOMB3 (0xB4)
#define XPOWERS_AXP202_BAT_DISCHGCOULOMB2 (0xB5)
#define XPOWERS_AXP202_BAT_DISCHGCOULOMB1 (0xB6)
#define XPOWERS_AXP202_BAT_DISCHGCOULOMB0 (0xB7)
#define XPOWERS_AXP202_COULOMB_CTL (0xB8)
#define XPOWERS_AXP202_BATT_PERCENTAGE (0xB9)
#define XPOWERS_AXP202_BAT_POWERH8 (0x70)
#define XPOWERS_AXP202_BAT_POWERM8 (0x71)
#define XPOWERS_AXP202_BAT_POWERL8 (0x72)
#define XPOWERS_AXP202_BATT_VOLTAGE_STEP (1.1F)
#define XPOWERS_AXP202_BATT_DISCHARGE_CUR_STEP (0.5F)
#define XPOWERS_AXP202_BATT_CHARGE_CUR_STEP (0.5F)
#define XPOWERS_AXP202_ACIN_VOLTAGE_STEP (1.7F)
#define XPOWERS_AXP202_ACIN_CUR_STEP (0.625F)
#define XPOWERS_AXP202_VBUS_VOLTAGE_STEP (1.7F)
#define XPOWERS_AXP202_VBUS_CUR_STEP (0.375F)
#define XPOWERS_AXP202_INTERNAL_TEMP_STEP (0.1F)
#define XPOWERS_AXP202_APS_VOLTAGE_STEP (1.4F)
#define XPOWERS_AXP202_TS_PIN_OUT_STEP (0.8F)
#define XPOWERS_AXP202_LDO2_VOL_MIN (1800u)
#define XPOWERS_AXP202_LDO2_VOL_MAX (3300u)
#define XPOWERS_AXP202_LDO2_VOL_STEPS (100u)
#define XPOWERS_AXP202_LDO2_VOL_BIT_MASK (4u)
#define XPOWERS_AXP202_LDO3_VOL_MIN (1800u)
#define XPOWERS_AXP202_LDO3_VOL_MAX (3300u)
#define XPOWERS_AXP202_LDO3_VOL_STEPS (100u)
#define XPOWERS_AXP202_DC2_VOL_STEPS (25u)
#define XPOWERS_AXP202_DC2_VOL_MIN (700u)
#define XPOWERS_AXP202_DC2_VOL_MAX (3500u)
#define XPOWERS_AXP202_DC3_VOL_STEPS (25u)
#define XPOWERS_AXP202_DC3_VOL_MIN (700u)
#define XPOWERS_AXP202_DC3_VOL_MAX (3500u)
#define XPOWERS_AXP202_LDOIO_VOL_STEPS (100)
#define XPOWERS_AXP202_LDOIO_VOL_MIN (1800)
#define XPOWERS_AXP202_LDOIO_VOL_MAX (3300)
#define XPOWERS_AXP202_SYS_VOL_STEPS (100)
#define XPOWERS_AXP202_VOFF_VOL_MIN (2600)
#define XPOWERS_AXP202_VOFF_VOL_MAX (3300)
#define XPOWERS_AXP202_CHG_EXT_CURR_MIN (300)
#define XPOWERS_AXP202_CHG_EXT_CURR_MAX (1000)
#define XPOWERS_AXP202_CHG_EXT_CURR_STEP (100)
#define XPOWERS_AXP202_INERNAL_TEMP_OFFSET (144.7)

View File

@@ -0,0 +1,243 @@
#pragma once
#define AXP2101_SLAVE_ADDRESS (0x34)
#define XPOWERS_AXP2101_CHIP_ID (0x4A)
#define XPOWERS_AXP2101_CHIP_ID_2 (0x47)
#define XPOWERS_AXP2101_STATUS1 (0x00)
#define XPOWERS_AXP2101_STATUS2 (0x01)
#define XPOWERS_AXP2101_IC_TYPE (0x03)
#define XPOWERS_AXP2101_DATA_BUFFER1 (0x04)
#define XPOWERS_AXP2101_DATA_BUFFER2 (0x05)
#define XPOWERS_AXP2101_DATA_BUFFER3 (0x06)
#define XPOWERS_AXP2101_DATA_BUFFER4 (0x07)
#define XPOWERS_AXP2101_DATA_BUFFER_SIZE (4u)
#define XPOWERS_AXP2101_COMMON_CONFIG (0x10)
#define XPOWERS_AXP2101_BATFET_CTRL (0x12)
#define XPOWERS_AXP2101_DIE_TEMP_CTRL (0x13)
#define XPOWERS_AXP2101_MIN_SYS_VOL_CTRL (0x14)
#define XPOWERS_AXP2101_INPUT_VOL_LIMIT_CTRL (0x15)
#define XPOWERS_AXP2101_INPUT_CUR_LIMIT_CTRL (0x16)
#define XPOWERS_AXP2101_RESET_FUEL_GAUGE (0x17)
#define XPOWERS_AXP2101_CHARGE_GAUGE_WDT_CTRL (0x18)
#define XPOWERS_AXP2101_WDT_CTRL (0x19)
#define XPOWERS_AXP2101_LOW_BAT_WARN_SET (0x1A)
#define XPOWERS_AXP2101_PWRON_STATUS (0x20)
#define XPOWERS_AXP2101_PWROFF_STATUS (0x21)
#define XPOWERS_AXP2101_PWROFF_EN (0x22)
#define XPOWERS_AXP2101_DC_OVP_UVP_CTRL (0x23)
#define XPOWERS_AXP2101_VOFF_SET (0x24)
#define XPOWERS_AXP2101_PWROK_SEQU_CTRL (0x25)
#define XPOWERS_AXP2101_SLEEP_WAKEUP_CTRL (0x26)
#define XPOWERS_AXP2101_IRQ_OFF_ON_LEVEL_CTRL (0x27)
#define XPOWERS_AXP2101_FAST_PWRON_SET0 (0x28)
#define XPOWERS_AXP2101_FAST_PWRON_SET1 (0x29)
#define XPOWERS_AXP2101_FAST_PWRON_SET2 (0x2A)
#define XPOWERS_AXP2101_FAST_PWRON_CTRL (0x2B)
#define XPOWERS_AXP2101_ADC_CHANNEL_CTRL (0x30)
#define XPOWERS_AXP2101_ADC_DATA_RELUST0 (0x34)
#define XPOWERS_AXP2101_ADC_DATA_RELUST1 (0x35)
#define XPOWERS_AXP2101_ADC_DATA_RELUST2 (0x36)
#define XPOWERS_AXP2101_ADC_DATA_RELUST3 (0x37)
#define XPOWERS_AXP2101_ADC_DATA_RELUST4 (0x38)
#define XPOWERS_AXP2101_ADC_DATA_RELUST5 (0x39)
#define XPOWERS_AXP2101_ADC_DATA_RELUST6 (0x3A)
#define XPOWERS_AXP2101_ADC_DATA_RELUST7 (0x3B)
#define XPOWERS_AXP2101_ADC_DATA_RELUST8 (0x3C)
#define XPOWERS_AXP2101_ADC_DATA_RELUST9 (0x3D)
//XPOWERS INTERRUPT REGISTER
#define XPOWERS_AXP2101_INTEN1 (0x40)
#define XPOWERS_AXP2101_INTEN2 (0x41)
#define XPOWERS_AXP2101_INTEN3 (0x42)
//XPOWERS INTERRUPT STATUS REGISTER
#define XPOWERS_AXP2101_INTSTS1 (0x48)
#define XPOWERS_AXP2101_INTSTS2 (0x49)
#define XPOWERS_AXP2101_INTSTS3 (0x4A)
#define XPOWERS_AXP2101_INTSTS_CNT (3)
#define XPOWERS_AXP2101_TS_PIN_CTRL (0x50)
#define XPOWERS_AXP2101_TS_HYSL2H_SET (0x52)
#define XPOWERS_AXP2101_TS_LYSL2H_SET (0x53)
#define XPOWERS_AXP2101_VLTF_CHG_SET (0x54)
#define XPOWERS_AXP2101_VHLTF_CHG_SET (0x55)
#define XPOWERS_AXP2101_VLTF_WORK_SET (0x56)
#define XPOWERS_AXP2101_VHLTF_WORK_SET (0x57)
#define XPOWERS_AXP2101_JIETA_EN_CTRL (0x58)
#define XPOWERS_AXP2101_JIETA_SET0 (0x59)
#define XPOWERS_AXP2101_JIETA_SET1 (0x5A)
#define XPOWERS_AXP2101_JIETA_SET2 (0x5B)
#define XPOWERS_AXP2101_IPRECHG_SET (0x61)
#define XPOWERS_AXP2101_ICC_CHG_SET (0x62)
#define XPOWERS_AXP2101_ITERM_CHG_SET_CTRL (0x63)
#define XPOWERS_AXP2101_CV_CHG_VOL_SET (0x64)
#define XPOWERS_AXP2101_THE_REGU_THRES_SET (0x65)
#define XPOWERS_AXP2101_CHG_TIMEOUT_SET_CTRL (0x67)
#define XPOWERS_AXP2101_BAT_DET_CTRL (0x68)
#define XPOWERS_AXP2101_CHGLED_SET_CTRL (0x69)
#define XPOWERS_AXP2101_BTN_VOL_MIN (2600)
#define XPOWERS_AXP2101_BTN_VOL_MAX (3300)
#define XPOWERS_AXP2101_BTN_VOL_STEPS (100)
#define XPOWERS_AXP2101_BTN_BAT_CHG_VOL_SET (0x6A)
#define XPOWERS_AXP2101_DC_ONOFF_DVM_CTRL (0x80)
#define XPOWERS_AXP2101_DC_FORCE_PWM_CTRL (0x81)
#define XPOWERS_AXP2101_DC_VOL0_CTRL (0x82)
#define XPOWERS_AXP2101_DC_VOL1_CTRL (0x83)
#define XPOWERS_AXP2101_DC_VOL2_CTRL (0x84)
#define XPOWERS_AXP2101_DC_VOL3_CTRL (0x85)
#define XPOWERS_AXP2101_DC_VOL4_CTRL (0x86)
#define XPOWERS_AXP2101_LDO_ONOFF_CTRL0 (0x90)
#define XPOWERS_AXP2101_LDO_ONOFF_CTRL1 (0x91)
#define XPOWERS_AXP2101_LDO_VOL0_CTRL (0x92)
#define XPOWERS_AXP2101_LDO_VOL1_CTRL (0x93)
#define XPOWERS_AXP2101_LDO_VOL2_CTRL (0x94)
#define XPOWERS_AXP2101_LDO_VOL3_CTRL (0x95)
#define XPOWERS_AXP2101_LDO_VOL4_CTRL (0x96)
#define XPOWERS_AXP2101_LDO_VOL5_CTRL (0x97)
#define XPOWERS_AXP2101_LDO_VOL6_CTRL (0x98)
#define XPOWERS_AXP2101_LDO_VOL7_CTRL (0x99)
#define XPOWERS_AXP2101_LDO_VOL8_CTRL (0x9A)
#define XPOWERS_AXP2101_BAT_PARAME (0xA1)
#define XPOWERS_AXP2101_FUEL_GAUGE_CTRL (0xA2)
#define XPOWERS_AXP2101_BAT_PERCENT_DATA (0xA4)
// DCDC 1~5
#define XPOWERS_AXP2101_DCDC1_VOL_MIN (1500)
#define XPOWERS_AXP2101_DCDC1_VOL_MAX (3400)
#define XPOWERS_AXP2101_DCDC1_VOL_STEPS (100u)
#define XPOWERS_AXP2101_DCDC2_VOL1_MIN (500u)
#define XPOWERS_AXP2101_DCDC2_VOL1_MAX (1200u)
#define XPOWERS_AXP2101_DCDC2_VOL2_MIN (1220u)
#define XPOWERS_AXP2101_DCDC2_VOL2_MAX (1540u)
#define XPOWERS_AXP2101_DCDC2_VOL_STEPS1 (10u)
#define XPOWERS_AXP2101_DCDC2_VOL_STEPS2 (20u)
#define XPOWERS_AXP2101_DCDC2_VOL_STEPS1_BASE (0u)
#define XPOWERS_AXP2101_DCDC2_VOL_STEPS2_BASE (71)
#define XPOWERS_AXP2101_DCDC3_VOL1_MIN (500u)
#define XPOWERS_AXP2101_DCDC3_VOL1_MAX (1200u)
#define XPOWERS_AXP2101_DCDC3_VOL2_MIN (1220u)
#define XPOWERS_AXP2101_DCDC3_VOL2_MAX (1540u)
#define XPOWERS_AXP2101_DCDC3_VOL3_MIN (1600u)
#define XPOWERS_AXP2101_DCDC3_VOL3_MAX (3400u)
#define XPOWERS_AXP2101_DCDC3_VOL_MIN (500)
#define XPOWERS_AXP2101_DCDC3_VOL_MAX (3400)
#define XPOWERS_AXP2101_DCDC3_VOL_STEPS1 (10u)
#define XPOWERS_AXP2101_DCDC3_VOL_STEPS2 (20u)
#define XPOWERS_AXP2101_DCDC3_VOL_STEPS3 (100u)
#define XPOWERS_AXP2101_DCDC3_VOL_STEPS1_BASE (0u)
#define XPOWERS_AXP2101_DCDC3_VOL_STEPS2_BASE (71)
#define XPOWERS_AXP2101_DCDC3_VOL_STEPS3_BASE (88)
#define XPOWERS_AXP2101_DCDC4_VOL1_MIN (500u)
#define XPOWERS_AXP2101_DCDC4_VOL1_MAX (1200u)
#define XPOWERS_AXP2101_DCDC4_VOL2_MIN (1220u)
#define XPOWERS_AXP2101_DCDC4_VOL2_MAX (1840u)
#define XPOWERS_AXP2101_DCDC4_VOL_STEPS1 (10u)
#define XPOWERS_AXP2101_DCDC4_VOL_STEPS2 (20u)
#define XPOWERS_AXP2101_DCDC4_VOL_STEPS1_BASE (0u)
#define XPOWERS_AXP2101_DCDC4_VOL_STEPS2_BASE (71)
#define XPOWERS_AXP2101_DCDC5_VOL_1200MV (1200)
#define XPOWERS_AXP2101_DCDC5_VOL_VAL (0x19)
#define XPOWERS_AXP2101_DCDC5_VOL_MIN (1400)
#define XPOWERS_AXP2101_DCDC5_VOL_MAX (3700)
#define XPOWERS_AXP2101_DCDC5_VOL_STEPS (100u)
#define XPOWERS_AXP2101_VSYS_VOL_THRESHOLD_MIN (2600)
#define XPOWERS_AXP2101_VSYS_VOL_THRESHOLD_MAX (3300)
#define XPOWERS_AXP2101_VSYS_VOL_THRESHOLD_STEPS (100)
// ALDO 1~4
#define XPOWERS_AXP2101_ALDO1_VOL_MIN (500)
#define XPOWERS_AXP2101_ALDO1_VOL_MAX (3500)
#define XPOWERS_AXP2101_ALDO1_VOL_STEPS (100u)
#define XPOWERS_AXP2101_ALDO2_VOL_MIN (500)
#define XPOWERS_AXP2101_ALDO2_VOL_MAX (3500)
#define XPOWERS_AXP2101_ALDO2_VOL_STEPS (100u)
#define XPOWERS_AXP2101_ALDO3_VOL_MIN (500)
#define XPOWERS_AXP2101_ALDO3_VOL_MAX (3500)
#define XPOWERS_AXP2101_ALDO3_VOL_STEPS (100u)
#define XPOWERS_AXP2101_ALDO4_VOL_MIN (500)
#define XPOWERS_AXP2101_ALDO4_VOL_MAX (3500)
#define XPOWERS_AXP2101_ALDO4_VOL_STEPS (100u)
// BLDO 1~2
#define XPOWERS_AXP2101_BLDO1_VOL_MIN (500)
#define XPOWERS_AXP2101_BLDO1_VOL_MAX (3500)
#define XPOWERS_AXP2101_BLDO1_VOL_STEPS (100u)
#define XPOWERS_AXP2101_BLDO2_VOL_MIN (500)
#define XPOWERS_AXP2101_BLDO2_VOL_MAX (3500)
#define XPOWERS_AXP2101_BLDO2_VOL_STEPS (100u)
// CPUSLDO
#define XPOWERS_AXP2101_CPUSLDO_VOL_MIN (500)
#define XPOWERS_AXP2101_CPUSLDO_VOL_MAX (1400)
#define XPOWERS_AXP2101_CPUSLDO_VOL_STEPS (50)
// DLDO 1~2
#define XPOWERS_AXP2101_DLDO1_VOL_MIN (500)
#define XPOWERS_AXP2101_DLDO1_VOL_MAX (3400)
#define XPOWERS_AXP2101_DLDO1_VOL_STEPS (100u)
#define XPOWERS_AXP2101_DLDO2_VOL_MIN (500)
#define XPOWERS_AXP2101_DLDO2_VOL_MAX (3400)
#define XPOWERS_AXP2101_DLDO2_VOL_STEPS (100u)
#define XPOWERS_AXP2101_CONVERSION(raw) (22.0 + (7274 - raw) / 20.0)

View File

@@ -0,0 +1,95 @@
#pragma once
#define AXP216_SLAVE_ADDRESS (0x34)
#define XPOWERS_AXP216_CHIP_ID (0x41)
//CONTROL REGISTER
#define XPOWERS_AXP216_STATUS (0x00)
#define XPOWERS_AXP216_MODE_CHGSTATUS (0x01)
#define XPOWERS_AXP216_DATA_BUFFER1 (0x04)
#define XPOWERS_AXP216_DATA_BUFFER2 (0x05)
#define XPOWERS_AXP216_DATA_BUFFER3 (0x06)
#define XPOWERS_AXP216_DATA_BUFFER4 (0x07)
#define XPOWERS_AXP216_DATA_BUFFER5 (0x08)
#define XPOWERS_AXP216_DATA_BUFFER6 (0x09)
#define XPOWERS_AXP216_DATA_BUFFER7 (0x0A)
#define XPOWERS_AXP216_DATA_BUFFER8 (0x0B)
#define XPOWERS_AXP216_DATA_BUFFER9 (0x0C)
#define XPOWERS_AXP216_DATA_BUFFERA (0x0D)
#define XPOWERS_AXP216_DATA_BUFFERB (0x0E)
#define XPOWERS_AXP216_DATA_BUFFERC (0x0F)
#define XPOWERS_AXP216_IC_TYPE (0x03)
#define XPOWERS_AXP216_DC12345_ALDO12_CTL (0x10)
#define XPOWERS_AXP216_LDO123_CTL (0x12)
#define XPOWERS_AXP216_OUTPUT_CTL (0x13)
#define XPOWERS_AXP216_ELDO1_VCTL (0x19)
#define XPOWERS_AXP216_ELDO2_VCTL (0x1A)
#define XPOWERS_AXP216_DCDC1_VCTL (0x21)
#define XPOWERS_AXP216_DCDC2_VCTL (0x22)
#define XPOWERS_AXP216_DCDC3_VCTL (0x23)
#define XPOWERS_AXP216_DCDC4_VCTL (0x24)
#define XPOWERS_AXP216_DCDC5_VCTL (0x25)
#define XPOWERS_AXP216_DCDC23_VOLX (0x27)
#define XPOWERS_AXP216_ALDO1_VCTL (0x28)
#define XPOWERS_AXP216_ALDO2_VCTL (0x29)
#define XPOWERS_AXP216_ALDO3_VCTL (0x2A)
#define XPOWERS_AXP216_VBUS_IPSOUT (0x30)
#define XPOWERS_AXP216_VOFF_SET (0x31)
#define XPOWERS_AXP216_OFF_CTL (0x32)
#define XPOWERS_AXP216_CHARGE1 (0x33)
#define XPOWERS_AXP216_CHARGE2 (0x34)
#define XPOWERS_AXP216_CHARGE3 (0x35)
#define XPOWERS_AXP216_PEK_SET (0x36)
#define XPOWERS_AXP216_OFFLEVEL (0x37)
#define XPOWERS_AXP216_VLTF_CHGSET (0x38)
#define XPOWERS_AXP216_VHTF_CHGSET (0x39)
#define XPOWERS_AXP216_DCDC_FREQ (0x3B)
#define XPOWERS_AXP216_TLTF_DISCHGSET (0x3C)
#define XPOWERS_AXP216_THTF_DISCHGSET (0x3D)
#define XPOWERS_AXP216_DCDC_MODESET (0x80)
#define XPOWERS_AXP216_ADC_CTL (0x82)
#define XPOWERS_AXP216_ADC_SPEED (0x84)
#define XPOWERS_AXP216_TS_ADC (0x85)
#define XPOWERS_AXP216_TIMER_CTL (0x8A)
#define XPOWERS_AXP216_HOTOVER_CTL (0x8F)
//GPIO REGISTER
#define XPOWERS_AXP216_GPIO1_CTL (0x92)
#define XPOWERS_AXP216_GPIO1_LDO_CTL (0x93)
#define XPOWERS_AXP216_GPIO01_STATUS (0x94)
#define XPOWERS_AXP216_GPIO1_PULLDOWN_CTL (0x97)
//XPOWERS INTERRUPT REGISTER
#define XPOWERS_AXP216_INTEN1 (0x40)
#define XPOWERS_AXP216_INTEN2 (0x41)
#define XPOWERS_AXP216_INTEN3 (0x42)
#define XPOWERS_AXP216_INTEN4 (0x43)
#define XPOWERS_AXP216_INTEN5 (0x44)
//XPOWERS INTERRUPT STATUS REGISTER
#define XPOWERS_AXP216_INTSTS1 (0x48)
#define XPOWERS_AXP216_INTSTS2 (0x49)
#define XPOWERS_AXP216_INTSTS3 (0x4A)
#define XPOWERS_AXP216_INTSTS4 (0x4B)
#define XPOWERS_AXP216_INTSTS5 (0x4C)
//XPOWERS ADC DATA REGISTER
#define XPOWERS_AXP216_INTERNAL_TEMP_H8 (0x56)
#define XPOWERS_AXP216_INTERNAL_TEMP_L4 (0x57)
#define XPOWERS_AXP216_TS_IN_H8 (0x58)
#define XPOWERS_AXP216_TS_IN_L4 (0x59)
#define XPOWERS_AXP216_BAT_VOLTAGE_H8 (0x78)
#define XPOWERS_AXP216_BAT_VOLTAGE_L4 (0x79)
#define XPOWERS_AXP216_BAT_CHGCURCUR_H8 (0x7A)
#define XPOWERS_AXP216_BAT_CHGCURCUR_L4 (0x7B)
#define XPOWERS_AXP216_BAT_DISCHGCUR_H8 (0x7C)
#define XPOWERS_AXP216_BAT_DISCHGCUR_L4 (0x7D)
#define XPOWERS_AXP216_FUEL_GAUGE_CTRL (0xB8)
#define XPOWERS_AXP216_FUEL_GAUGE_REULST (0xB9)
#define XPOWERS_AXP216_BAT_CAPACITY_0 (0xE0)
#define XPOWERS_AXP216_BAT_CAPACITY_1 (0xE1)
#define XPOWERS_AXP216_BAT_LOW_WARNING_CTRL (0xE6)

View File

@@ -0,0 +1,45 @@
/**
*
* @license MIT License
*
* Copyright (c) 2022 lewis he
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @file HUSB238Constants.h
* @author Lewis He (lewishe@outlook.com)
* @date 2024-07-24
*
*/
#pragma once
#define HUSB238_SLAVE_ADDRESS (0x8)
#define HUSB238_PD_STATUS0 (0x0)
#define HUSB238_PD_STATUS1 (0x1)
#define HUSB238_SRC_PDO_5V (0x2)
#define HUSB238_SRC_PDO_9V (0x3)
#define HUSB238_SRC_PDO_12V (0x4)
#define HUSB238_SRC_PDO_15V (0x5)
#define HUSB238_SRC_PDO_18V (0x6)
#define HUSB238_SRC_PDO_20V (0x7)
#define HUSB238_SRC_PDO (0x8)
#define HUSB238_GO_COMMAND (0x9)

Some files were not shown because too many files have changed in this diff Show More