Compare commits
187 Commits
cc95_v2_al
...
dey-5.0/ma
| Author | SHA1 | Date |
|---|---|---|
|
|
74628a35ce | |
|
|
1acb052f68 | |
|
|
d58d20358e | |
|
|
14cd1e7966 | |
|
|
89c42a5b0f | |
|
|
ed9beccdcd | |
|
|
9be4f140d2 | |
|
|
0248d4a728 | |
|
|
18a23d71d6 | |
|
|
7950ac2460 | |
|
|
9de4842dc3 | |
|
|
804e5d5514 | |
|
|
6fd27ea079 | |
|
|
f3dc656029 | |
|
|
86763846ae | |
|
|
095fe1ac36 | |
|
|
8674cf9edf | |
|
|
852cac43ac | |
|
|
4645131dd8 | |
|
|
b1a41a9593 | |
|
|
2a44e1aae0 | |
|
|
963787022f | |
|
|
f041267730 | |
|
|
e713e2d2c0 | |
|
|
1ab4bad7b0 | |
|
|
e079bb4689 | |
|
|
d9e2154ddc | |
|
|
6325cddb21 | |
|
|
7522d609d8 | |
|
|
f27ad6b93c | |
|
|
91434f2ce6 | |
|
|
6fe296b691 | |
|
|
c7adf015f9 | |
|
|
23c969f954 | |
|
|
8359b75ec0 | |
|
|
2845b72ce9 | |
|
|
2bbaa723b0 | |
|
|
d54f8b7281 | |
|
|
57a87c4000 | |
|
|
bcf4883d60 | |
|
|
58577373ba | |
|
|
32996b0885 | |
|
|
8293eddb57 | |
|
|
351a8df4ef | |
|
|
3a3d6c699f | |
|
|
cb70c15394 | |
|
|
599fa04a01 | |
|
|
56865c2972 | |
|
|
e60ec31593 | |
|
|
d96004a043 | |
|
|
3552e1b5e1 | |
|
|
f814f4cda0 | |
|
|
2c9a8d9ca0 | |
|
|
a8d8aeade8 | |
|
|
b33ad27ba5 | |
|
|
4039e2e4e2 | |
|
|
897ca48d9b | |
|
|
fb7815bc6e | |
|
|
f9da8e8db6 | |
|
|
f1d71fd66c | |
|
|
8b03656826 | |
|
|
a8c6dcb56e | |
|
|
9576c20113 | |
|
|
0df6685a07 | |
|
|
7d18bd37f3 | |
|
|
8f2ac0347c | |
|
|
e913427295 | |
|
|
6f1080025c | |
|
|
cc2630c59e | |
|
|
c2c4edac9b | |
|
|
dd0c1a1957 | |
|
|
9da8426ab4 | |
|
|
abd3f4dbc2 | |
|
|
28113b1665 | |
|
|
267f78ac9d | |
|
|
3b93a2c2e1 | |
|
|
2fa5427622 | |
|
|
408a8bec60 | |
|
|
6ad1a57317 | |
|
|
69286f4057 | |
|
|
d743784281 | |
|
|
61dc4c88cf | |
|
|
6d29433642 | |
|
|
6a75e08023 | |
|
|
a82412530c | |
|
|
0a307d029e | |
|
|
0c915b99f0 | |
|
|
2d261dd473 | |
|
|
a5f42a53af | |
|
|
f70b5328c4 | |
|
|
efa04d2069 | |
|
|
6fe49f0469 | |
|
|
bc497e0c48 | |
|
|
01ad58fcb8 | |
|
|
5c87cefd91 | |
|
|
2a121a371d | |
|
|
322f90d0a4 | |
|
|
25dfe3d20a | |
|
|
5b45c1e64c | |
|
|
da1aaeec78 | |
|
|
f7a882fa1e | |
|
|
36716d7b4d | |
|
|
d88eb15ccb | |
|
|
4dba2c617b | |
|
|
efb20ef387 | |
|
|
613b22faa2 | |
|
|
69f53bf2d8 | |
|
|
e8ecb28944 | |
|
|
4898b616a7 | |
|
|
c0d042e953 | |
|
|
682b2aec84 | |
|
|
a16ad0fd2d | |
|
|
c5dc142d65 | |
|
|
4f88e8969a | |
|
|
eb3d6e0355 | |
|
|
9b99c0b073 | |
|
|
095726c170 | |
|
|
1ca5a27f51 | |
|
|
5407d4a206 | |
|
|
4e191ff58a | |
|
|
f8df964716 | |
|
|
5c37352478 | |
|
|
f668d4722c | |
|
|
addf529fc7 | |
|
|
9834232a8c | |
|
|
3b89442fdc | |
|
|
ca9f16965f | |
|
|
16e6e0978b | |
|
|
da4aefa006 | |
|
|
8cfa94879b | |
|
|
55456629f0 | |
|
|
ab5f937cb6 | |
|
|
b0a140a35c | |
|
|
261f0e1399 | |
|
|
287a42403f | |
|
|
1015773388 | |
|
|
ab4a2d558b | |
|
|
6e5e6b9dc2 | |
|
|
c4c0383ed6 | |
|
|
0f54b5a346 | |
|
|
1b6474935d | |
|
|
d721721567 | |
|
|
2abcad0c78 | |
|
|
4f58ce26e9 | |
|
|
17a6ba59cd | |
|
|
2da298408e | |
|
|
3efe532995 | |
|
|
8ba3905c2e | |
|
|
5d54f13c2d | |
|
|
191f891f6c | |
|
|
2af1e72123 | |
|
|
ce2b958a1d | |
|
|
ec2d13053e | |
|
|
de238b6d81 | |
|
|
e3df152ccd | |
|
|
c360c9b757 | |
|
|
a3927c0306 | |
|
|
2f29dd1dec | |
|
|
35cbb6a169 | |
|
|
a5eb54435e | |
|
|
17d1f19a48 | |
|
|
d0f9c61efd | |
|
|
61db652b8b | |
|
|
fef6a25ca3 | |
|
|
2ec067c6ee | |
|
|
5b18593bfd | |
|
|
77dde9f8f1 | |
|
|
6b9d2e4114 | |
|
|
ebe606d9ac | |
|
|
cf8d771390 | |
|
|
fe54927861 | |
|
|
2a416f7ebd | |
|
|
3f4a8a410c | |
|
|
3b9a8698a7 | |
|
|
35dd3ec6c9 | |
|
|
d5fe033b46 | |
|
|
f4d412f08e | |
|
|
a4ce8c0944 | |
|
|
1768135abd | |
|
|
be4c25a260 | |
|
|
11999b4810 | |
|
|
7736ba21ca | |
|
|
90239d6343 | |
|
|
6927bb1d4a | |
|
|
d12c7af018 | |
|
|
81bfa24ca4 | |
|
|
4e19acb893 |
65
README.md
65
README.md
|
|
@ -22,11 +22,20 @@ OS versions:
|
|||
Software for the following hardware platforms is in production support:
|
||||
|
||||
## ConnectCore 95
|
||||
* ConnectCore 95 System-on-Module (SOM)
|
||||
* ConnectCore 95 SMT System-on-Module (SOM)
|
||||
* [CC-WMX-B30F-B1](https://www.digi.com/products/models/cc-wmx-b30f-b1)
|
||||
* [CC-MX-B30F-B1](https://www.digi.com/products/models/cc-mx-b30f-b1)
|
||||
* [CC-WMX-B38E-B1](https://www.digi.com/products/models/cc-wmx-b38e-b1)
|
||||
* [CC-MX-B38E-B1](https://www.digi.com/products/models/cc-mx-b38e-b1)
|
||||
* [CC-WMX-B88D-B1](https://www.digi.com/products/models/cc-wmx-b88d-b1)
|
||||
* [CC-MX-B88D-B1](https://www.digi.com/products/models/cc-mx-b88d-b1)
|
||||
* ConnectCore 95 SMARC System-on-Module (SOM)
|
||||
* [CC-MX-B88D-BS](https://www.digi.com/products/models/cc-mx-b88d-bs)
|
||||
* [CC-WMX-B30F-BS](https://www.digi.com/products/models/cc-wmx-b30f-bs)
|
||||
* [CC-WMX-B38E-BS](https://www.digi.com/products/models/cc-wmx-b38e-bs)
|
||||
* ConnectCore 95 Development Kit (DVK)
|
||||
* [CC-WMX95-KIT](https://www.digi.com/products/models/cc-wmx95-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/5.0/cc95/yocto-gs_index))
|
||||
* [CC-WMX95-2G-KIT](https://www.digi.com/products/models/cc-wmx95-2g-kit)
|
||||
|
||||
## ConnectCore MP25
|
||||
* ConnectCore MP25 System-on-Module (SOM)
|
||||
|
|
@ -154,7 +163,42 @@ Documentation is available online at https://www.digi.com/resources/documentatio
|
|||
|
||||
## 5.0-r4
|
||||
|
||||
TODO
|
||||
* ST-based platforms
|
||||
* Updated BSP
|
||||
* Trusted Firmware ARM v2.10 (based on tag 'v2.10-stm32mp-r3' by ST)
|
||||
* OP-TEE v4.0.0 (based on tag '4.0.0-stm32mp-r3' by ST)
|
||||
* U-Boot v2023.10 (based on tag 'v2023.10-stm32mp-r3' by ST)
|
||||
* Linux kernel v6.6.116 (based on tag 'v6.6-stm32mp-r3' by ST)
|
||||
* Updated X-LINUX-AI software package (based on tag 'v6.2.0' by ST)
|
||||
* Added new face recognition demo
|
||||
* Updated Wifi firmware to 'imx-scarthgap-longma_r1.0' release from Murata
|
||||
* 2FY Wireless chip: v28.10.590.3
|
||||
* Added initial country support to the ConnectCore MP2 World CLM blob file
|
||||
* Fix U-Boot environment encryption support for ConnectCore MP25
|
||||
* Cortex-M4 signing and authentication support for ConnectCore MP15
|
||||
* Encryption support for ConnectCore MP13
|
||||
* NXP-based platforms
|
||||
* Added support for ConnectCore 95 SMARC
|
||||
* Updated BSP
|
||||
* Trusted Firmware ARM v2.10 (based on tag 'lf-6.6.52-2.2.2' by NXP)
|
||||
* OP-TEE v4.4.0 (based on tag 'lf-6.6.52-2.2.2' by NXP)
|
||||
* OEI v1.0 (based on tag 'lf-6.6.52-2.2.2' by NXP)
|
||||
* System Manager 2025q3 (based on tag 'lf-6.6.52-2.2.2' by NXP)
|
||||
* U-Boot v2024.04 (based on tag 'lf-6.6.52-2.2.2' by NXP)
|
||||
* Linux kernel v6.6.52 (based on tag 'lf-6.6.52-2.2.2' by NXP)
|
||||
* Updated Wifi firmware to 'imx-scarthgap-longma_r1.0' release from Murata
|
||||
* 2EC Wireless chip: v18.53.546.29
|
||||
* Added WIC support
|
||||
* Added Flutter image support for ConnectCore 95
|
||||
* Added Digi Embedded Yocto containers framework through new 'meta-digi-containers' layer
|
||||
* Added systemd service to start/mount encrypted folders
|
||||
* Added support for customization of boot logos
|
||||
* Generation of provisioning QR code in sysinfo
|
||||
* Upgrade LVGL version to 9.3
|
||||
* TrustFence
|
||||
* Sign installer boot scripts
|
||||
* Improve log messages during artifacts authentication
|
||||
* General bug fixing and improvements
|
||||
|
||||
## 5.0-r3
|
||||
|
||||
|
|
@ -301,17 +345,16 @@ updated list can be found on the online documentation.
|
|||
|
||||
## ConnectCore MP25
|
||||
|
||||
* MMC0 input/output errors may appear during extended suspend/resume cycles.
|
||||
* The system may fail to power off correctly, eventually falling back to a watchdog
|
||||
reset.
|
||||
* ConnectCore MP25 System-on-Module (SOM)
|
||||
* The UART connected to the Bluetooth chip may not operate reliably at higher
|
||||
baud rates. As a workaround, USART1 is configured to run at 115200 bps, which
|
||||
limits the maximum throughput of this interface.
|
||||
|
||||
## ConnectCore MP13
|
||||
## ConnectCore 95
|
||||
|
||||
* The power button becomes unresponsive after one power-off/power-on cycle.
|
||||
A system reboot is required to restore normal functionality.
|
||||
The issue originates from the OP-TEE/ATF firmware and will be addressed in
|
||||
the next DEY release.
|
||||
If you need further assistance, please contact Digi Technical Support.
|
||||
* ConnectCore 95 Development Kit (DVK)
|
||||
* RS485 is disabled on DVKv2 because DE/RE# line is an MCA_IO that cannot be
|
||||
toggled in interrupt context.
|
||||
|
||||
# Support Contact Information
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ include conf/machine/include/ccimx6.inc
|
|||
|
||||
# Wireless external module
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-qualcomm', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# Wireless p2p interface
|
||||
WLAN_P2P_DEVICE_NAME ?= "ccimx6qp-p2p"
|
||||
|
|
@ -44,6 +43,9 @@ BT_DEVICE_NAME ?= "cc6qp"
|
|||
# Bluetooth tty
|
||||
BT_TTY ?= "ttymxc1"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "da9063-gpio 4"
|
||||
|
||||
# XBee
|
||||
XBEE_TTY ?= "ttymxc4"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ include conf/machine/include/ccimx6.inc
|
|||
|
||||
# Wireless external module
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-qualcomm', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# Firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_BT', '1' , 'firmware-atheros-ar3k firmware-qualcomm-qca6564-bt', '', d)}"
|
||||
|
|
@ -46,6 +45,9 @@ SERIAL_CONSOLES ?= "115200;ttymxc3"
|
|||
# Bluetooth tty
|
||||
BT_TTY ?= "ttymxc1"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "da9063-gpio 4"
|
||||
|
||||
# XBee
|
||||
XBEE_TTY ?= "ttymxc4"
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@ SERIAL_CONSOLES ?= "115200;ttymxc4"
|
|||
# Bluetooth tty
|
||||
BT_TTY ?= "ttymxc0"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "gpio5 9"
|
||||
|
||||
# XBee
|
||||
XBEE_TTY ?= "ttymxc1"
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@ SERIAL_CONSOLES ?= "115200;ttymxc4"
|
|||
# Bluetooth tty
|
||||
BT_TTY ?= "ttymxc0"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "gpio5 9"
|
||||
|
||||
# Default image for install scripts
|
||||
DEFAULT_IMAGE_NAME ?= "core-image-base"
|
||||
|
||||
|
|
|
|||
|
|
@ -14,14 +14,16 @@ SERIAL_CONSOLES = "115200;ttyLP5"
|
|||
# Bluetooth tty
|
||||
BT_TTY ?= "ttyLP0"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "1 7"
|
||||
|
||||
# Firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'firmware-nxp-wifi-nxpiw612-sdio firmware-murata-nxp', '', d)}"
|
||||
|
||||
# Wi-Fi
|
||||
WIRELESS_MODULE ?= ""
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-nxp-wlan', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
WLAN_P2P_INTERFACE = "p2p0"
|
||||
WLAN_P2P_INTERFACE = "wfd0"
|
||||
MACHINE_EXTRA_RRECOMMENDS += "${WIRELESS_MODULE}"
|
||||
|
||||
# XBee
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ SERIAL_CONSOLES = "115200;ttyLP5"
|
|||
# Bluetooth tty
|
||||
BT_TTY ?= "ttyLP0"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "1 7"
|
||||
|
||||
# Firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'firmware-nxp-wifi-nxpiw612-sdio firmware-murata-nxp', '', d)}"
|
||||
MACHINE_FIRMWARE:append = " ethos-u-firmware"
|
||||
|
|
@ -21,8 +24,7 @@ MACHINE_FIRMWARE:append = " ethos-u-firmware"
|
|||
# Wi-Fi
|
||||
WIRELESS_MODULE ?= ""
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-nxp-wlan', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
WLAN_P2P_INTERFACE = "p2p0"
|
||||
WLAN_P2P_INTERFACE = "wfd0"
|
||||
MACHINE_EXTRA_RRECOMMENDS += "${WIRELESS_MODULE}"
|
||||
|
||||
# XBee
|
||||
|
|
@ -65,7 +67,7 @@ KERNEL_DEVICETREE ?= " \
|
|||
digi/ccimx9-dvk_mikroe-accel2-click.dtbo \
|
||||
digi/ccimx9-dvk_mikroe-gyro-click.dtbo \
|
||||
digi/ccimx93-dvk_dlc0200ccp04df-mipi-dsi.dtbo \
|
||||
digi/ccimx93-dvk_lvds.dtbo \
|
||||
digi/ccimx93-dvk_lvds-g101evn010.dtbo \
|
||||
digi/ccimx93-dvk_nhd-3-5-640480ef-msxp-mipi-dsi.dtbo \
|
||||
digi/ccimx93-dvk.dtb \
|
||||
${@bb.utils.contains('DISTRO_FEATURES', 'tsn', 'digi/ccimx9-dvk_eqos-tsn.dtbo', '', d)} \
|
||||
|
|
|
|||
|
|
@ -8,8 +8,11 @@ MACHINEOVERRIDES =. "mx95:${DIGI_FAMILY}:${DIGI_SOM}:"
|
|||
# Include the machine configuration for Digi's ConnectCore 9 module
|
||||
include conf/machine/include/ccimx9.inc
|
||||
|
||||
# SMARC module
|
||||
SMARC ?= "1"
|
||||
|
||||
# Machine features
|
||||
MACHINE_FEATURES += "mca"
|
||||
MACHINE_FEATURES += "${@oe.utils.conditional('SMARC', '1', 'mca', '', d)}"
|
||||
|
||||
# Console
|
||||
SERIAL_CONSOLES = "115200;ttyLP0"
|
||||
|
|
@ -18,16 +21,15 @@ SERIAL_CONSOLES = "115200;ttyLP0"
|
|||
BT_TTY ?= "ttyLP4"
|
||||
|
||||
# Firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'firmware-murata-infineon', '', d)}"
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'firmware-murata-infineon firmware-murata-infineon-mfgtest', '', d)}"
|
||||
|
||||
# Wi-Fi
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
WLAN_P2P_INTERFACE = "p2p0"
|
||||
|
||||
# XBee
|
||||
XBEE_RESET_N_GPIO ?= "43840000.gpio@21"
|
||||
XBEE_RESET_N_GPIO ?= "43820000.gpio@7"
|
||||
XBEE_SLEEP_RQ_GPIO ?= ""
|
||||
XBEE_TTY ?= "ttyLP3"
|
||||
XBEE_TTY ?= "ttyLP6"
|
||||
|
||||
# U-Boot configurations
|
||||
UBOOT_CONFIG ??= "ccimx95-dvk"
|
||||
|
|
@ -41,7 +43,7 @@ UBOOT_INSTALL_SD_INDEX = "1"
|
|||
# imx-boot configurations
|
||||
ATF_PLATFORM = "imx95"
|
||||
IMX_BOOT_SOC_TARGET = "iMX95"
|
||||
IMXBOOT_TARGETS = "flash_all flash_a55"
|
||||
IMXBOOT_TARGETS = "flash_a55"
|
||||
SYSTEM_MANAGER_CONFIG ?= "ccimx95dvk"
|
||||
SYSTEM_MANAGER_FIRMWARE_BASENAME ?= "m33_image"
|
||||
SYSTEM_MANAGER_FIRMWARE_NAME ?= "${SYSTEM_MANAGER_FIRMWARE_BASENAME}-${SYSTEM_MANAGER_CONFIG}"
|
||||
|
|
@ -61,11 +63,10 @@ DDR_FIRMWARE_NAME = " \
|
|||
|
||||
KERNEL_DEVICETREE ?= " \
|
||||
digi/ccimx95-dvk.dtb \
|
||||
digi/ccimx95-dvk_enet2.dtbo \
|
||||
digi/ccimx95-dvk_lvds0_g101evn010.dtbo \
|
||||
digi/ccimx95-dvk_lvds1_g101evn010.dtbo \
|
||||
digi/ccimx95-dvk_mikroe-accel2-click.dtbo \
|
||||
digi/ccimx95-dvk_mikroe-gyro-click.dtbo \
|
||||
digi/ccimx95-dvk_expi-os08a20-cam.dtbo \
|
||||
digi/ccimx95-dvk_gpio-watchdog.dtbo \
|
||||
digi/ccimx95-dvk_lvds0-g101evn010.dtbo \
|
||||
digi/ccimx95-dvk_lvds1-g101evn010.dtbo \
|
||||
digi/ccimx95-dvk_pcam5c.dtbo \
|
||||
digi/ccimx95_bt.dtbo \
|
||||
digi/ccimx95_npu.dtbo \
|
||||
|
|
@ -80,3 +81,13 @@ DEFAULT_IMAGE_NAME ?= "dey-image-chromium"
|
|||
BOOTABLE_ARTIFACTS = " \
|
||||
imx-boot##SIGNED##-ccimx95-dvk.bin \
|
||||
"
|
||||
|
||||
# Systemd logind power key event.
|
||||
# short press:
|
||||
# SMARC=1: graceful poweroff
|
||||
# SMARC=0: suspend
|
||||
# long press:
|
||||
# SMARC=1: ignored by systemd (absorbed by MCA fw for a forceful poweroff)
|
||||
# SMARC=0: graceful poweroff
|
||||
LOGIND_HANDLE_POWER_KEY ?= "${@oe.utils.conditional('SMARC', '1', 'poweroff', 'suspend', d)}"
|
||||
LOGIND_HANDLE_POWER_KEY_LONGPRESS ?= "${@oe.utils.conditional('SMARC', '1', 'ignore', 'poweroff', d)}"
|
||||
|
|
|
|||
|
|
@ -96,16 +96,6 @@ WKS_FILE += "ccmp1-256MB.wks.in"
|
|||
# For populate_sdk, gcc-arm-none-eabi_9 has a python2 dependency, so we remove it.
|
||||
ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
|
||||
|
||||
# =========================================================================
|
||||
# flashlayout
|
||||
# =========================================================================
|
||||
# Define the config labels to use to generate flashlayout file
|
||||
|
||||
# =========================================================================
|
||||
# extlinux configuration
|
||||
# =========================================================================
|
||||
# As example, modify the default boot config for each target to M4 config
|
||||
|
||||
# =========================================================================
|
||||
# Debug trace
|
||||
# =========================================================================
|
||||
|
|
@ -113,13 +103,14 @@ ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
|
|||
ST_DEBUG_TRACE = "0"
|
||||
|
||||
# =========================================================================
|
||||
# Flashlayouts
|
||||
# Signing configuration
|
||||
# =========================================================================
|
||||
SIGN_HEADER_VERSION_stm32mp13 ?= "2.0"
|
||||
|
||||
# =========================================================================
|
||||
# DEY settings
|
||||
# =========================================================================
|
||||
IMAGE_CLASSES = "image_types_digi image_types-stubi"
|
||||
IMAGE_CLASSES = "image_types_digi"
|
||||
|
||||
# mkfs.ubifs parameters for boot partition (the one holding kernel and device tree files)
|
||||
# Max LEB count (-c 255) calculated for a partition of up to 32 MiB considering 128 KiB erase-block size.
|
||||
|
|
@ -134,7 +125,6 @@ MKUBIFS_RECOVERY_ARGS ?= "${MKUBIFS_BOOT_ARGS} -x zlib"
|
|||
MKUBIFS_ARGS ?= "-m 2048 -e 126976 -c 8191"
|
||||
|
||||
# Wireless external module
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# Set this platform without graphical support
|
||||
IS_HEADLESS = "true"
|
||||
|
|
@ -168,3 +158,6 @@ BOOTABLE_ARTIFACTS = " \
|
|||
OVERLAYFS_ETC_MOUNT_POINT ?= "/mnt/data"
|
||||
OVERLAYFS_ETC_DEVICE ?= "ubi1:data"
|
||||
OVERLAYFS_ETC_FSTYPE ?= "ubifs"
|
||||
|
||||
# Bluetooth
|
||||
BT_TTY ?= "ttySTM1"
|
||||
|
|
|
|||
|
|
@ -112,16 +112,6 @@ WKS_FILES += " \
|
|||
# For populate_sdk, gcc-arm-none-eabi_9 has a python2 dependency, so we remove it.
|
||||
ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
|
||||
|
||||
# =========================================================================
|
||||
# flashlayout
|
||||
# =========================================================================
|
||||
# Define the config labels to use to generate flashlayout file
|
||||
|
||||
# =========================================================================
|
||||
# extlinux configuration
|
||||
# =========================================================================
|
||||
# As example, modify the default boot config for each target to M4 config
|
||||
|
||||
# =========================================================================
|
||||
# Debug trace
|
||||
# =========================================================================
|
||||
|
|
@ -129,13 +119,14 @@ ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
|
|||
ST_DEBUG_TRACE = "0"
|
||||
|
||||
# =========================================================================
|
||||
# Flashlayouts
|
||||
# Signing configuration
|
||||
# =========================================================================
|
||||
SIGN_HEADER_VERSION_stm32mp15 ?= "1.0"
|
||||
|
||||
# =========================================================================
|
||||
# DEY settings
|
||||
# =========================================================================
|
||||
IMAGE_CLASSES = "image_types_digi image_types-stubi"
|
||||
IMAGE_CLASSES = "image_types_digi"
|
||||
|
||||
# mkfs.ubifs parameters for boot partition (the one holding kernel and device tree files)
|
||||
# Max LEB count (-c 255) calculated for a partition of up to 32 MiB considering 128 KiB erase-block size.
|
||||
|
|
@ -150,7 +141,6 @@ MKUBIFS_RECOVERY_ARGS ?= "${MKUBIFS_BOOT_ARGS} -x zlib"
|
|||
MKUBIFS_ARGS ?= "-m 2048 -e 126976 -c 8191"
|
||||
|
||||
# Wireless external module
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# XBee
|
||||
XBEE_RESET_N_GPIO ?= "GPIOZ@2"
|
||||
|
|
@ -181,3 +171,6 @@ BOOTABLE_ARTIFACTS = " \
|
|||
OVERLAYFS_ETC_MOUNT_POINT ?= "/mnt/data"
|
||||
OVERLAYFS_ETC_DEVICE ?= "ubi1:data"
|
||||
OVERLAYFS_ETC_FSTYPE ?= "ubifs"
|
||||
|
||||
# Bluetooth
|
||||
BT_TTY ?= "ttySTM1"
|
||||
|
|
|
|||
|
|
@ -118,8 +118,15 @@ WKS_FILES += " \
|
|||
ccmp2-1GB.wks.in \
|
||||
"
|
||||
|
||||
# =========================================================================
|
||||
# Signing configuration
|
||||
# =========================================================================
|
||||
SIGN_HEADER_VERSION_stm32mp25 ?= "2.2"
|
||||
|
||||
# =========================================================================
|
||||
# DEY settings
|
||||
# =========================================================================
|
||||
# Wireless external module
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# For populate_sdk, gcc-arm-none-eabi_11 has a libpython3 dependency, so we remove it.
|
||||
ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
|
||||
|
|
@ -166,3 +173,9 @@ IMAGE_ROOTFS_MAXSIZE = "2621440"
|
|||
OVERLAYFS_ETC_MOUNT_POINT ?= "/mnt/data"
|
||||
OVERLAYFS_ETC_DEVICE ?= "/dev/mmcblk0p11"
|
||||
OVERLAYFS_ETC_FSTYPE ?= "ext4"
|
||||
|
||||
# Bluetooth
|
||||
BT_TTY ?= "ttySTM1"
|
||||
|
||||
# Bluetooth GPIO
|
||||
BT_GPIO ?= "gpiochip11 5"
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ STORAGE_MEDIA = "mtd"
|
|||
# Wireless external module
|
||||
WIRELESS_MODULE ?= ""
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-qualcomm', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# Machine firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_BT', '1', 'firmware-qualcomm-qca6564-bt', '', d)}"
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ STORAGE_MEDIA = "mmc"
|
|||
# Wireless external module
|
||||
WIRELESS_MODULE ?= ""
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-qualcomm', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# Machine firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_BT', '1', 'firmware-qualcomm-qca6564-bt', '', d)}"
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ STORAGE_MEDIA = "mmc"
|
|||
# Wireless external module
|
||||
WIRELESS_MODULE ?= ""
|
||||
WIRELESS_MODULE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'kernel-module-qualcomm', '', d)}"
|
||||
HAS_WIFI_VIRTWLANS = "true"
|
||||
|
||||
# Machine firmware
|
||||
MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_BT', '1', 'firmware-qualcomm-qca6574-bt', '', d)}"
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ MACHINE_FEATURES:append:use-nxp-bsp = " optee jailhouse"
|
|||
SDK_MACHINE_FEATURES:append = " optee"
|
||||
|
||||
STORAGE_MEDIA = "mmc"
|
||||
WLAN_P2P_INTERFACE = "wfd0"
|
||||
|
||||
# Linux kernel configuration
|
||||
KERNEL_DEFCONFIG ?= "arch/arm64/configs/ccimx9_defconfig"
|
||||
|
|
|
|||
|
|
@ -114,6 +114,9 @@ SWUPDATE_MTD_BLACKLIST = "0 1 2 3 4 5"
|
|||
# Remove custom kernel headers from toolchain
|
||||
ST_TOOLS_FOR_TARGET_SDK:remove = "kernel-headers"
|
||||
|
||||
# Disable partitions configuration from ST layer
|
||||
ENABLE_PARTITIONS_IMAGE ??= "0"
|
||||
|
||||
# Skip warnings for packages using 32-bit APIs
|
||||
INSANE_SKIP:append:pn-alsa-lib = " 32bit-time"
|
||||
INSANE_SKIP:append:pn-ir-keytable = " 32bit-time"
|
||||
|
|
|
|||
|
|
@ -130,3 +130,13 @@ ENABLE_FLASHLAYOUT_CONFIG = "0"
|
|||
|
||||
# Remove custom kernel headers from toolchain
|
||||
ST_TOOLS_FOR_TARGET_SDK:remove = " kernel-headers "
|
||||
|
||||
# Remove toolchain for TF-A on aarch64 added by st-machine-common-stm32mp.inc
|
||||
# because it throws a build issue.
|
||||
ST_TOOLS_FOR_SDK:remove:aarch64 = " \
|
||||
nativesdk-gcc-aarch64-none-elf \
|
||||
nativesdk-gcc-aarch64-none-elf-staticdev \
|
||||
"
|
||||
|
||||
# Disable partitions configuration from ST layer
|
||||
ENABLE_PARTITIONS_IMAGE ??= "0"
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ HAVE_BT = "${@bb.utils.contains('MACHINE_FEATURES', 'bluetooth', '1', ''
|
|||
HAVE_GUI = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '1', '', d)}"
|
||||
|
||||
# Default value for WiFi virtual wlans
|
||||
HAS_WIFI_VIRTWLANS ?= "false"
|
||||
HAS_WIFI_VIRTWLANS ?= "true"
|
||||
|
||||
#
|
||||
# Ethernet, Wi-Fi, and Bluetooth configuration used in recipes
|
||||
|
|
@ -116,6 +116,7 @@ BOOTLOADER_SEEK_BOOTPART ?= "0"
|
|||
# This is otherwise forced by systemd because of hard-coded paths
|
||||
# in systemd source code.
|
||||
ROOT_HOME ?= "/root"
|
||||
CC_CONTAINER_PATH ?= "${ROOT_HOME}/cc-container"
|
||||
|
||||
# Default IMAGE_FSTYPES for eMMC/NAND
|
||||
IMAGE_FSTYPES ?= "${@ \
|
||||
|
|
@ -130,3 +131,7 @@ IMAGE_FSTYPES ?= "${@ \
|
|||
'' , d), \
|
||||
d) \
|
||||
}"
|
||||
|
||||
# Systemd logind power key event
|
||||
LOGIND_HANDLE_POWER_KEY ??= "suspend"
|
||||
LOGIND_HANDLE_POWER_KEY_LONGPRESS ??= "poweroff"
|
||||
|
|
|
|||
|
|
@ -390,8 +390,8 @@ WKS_FILE_DEPENDS:append:mx8-nxp-bsp = " imx-boot"
|
|||
WKS_FILE_DEPENDS:append:mx9-nxp-bsp = " imx-boot"
|
||||
|
||||
SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in"
|
||||
SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
|
||||
SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
|
||||
SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart-uboot-env.wks.in"
|
||||
SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart-uboot-env.wks.in"
|
||||
|
||||
WKS_FILE ?= "${SOC_DEFAULT_WKS_FILE}"
|
||||
|
||||
|
|
|
|||
|
|
@ -18,3 +18,9 @@ Digi Embedded Yocto provides the following image recipes:
|
|||
|
||||
Expansion of custom Digi core-image-base including full Flutter
|
||||
framework support.
|
||||
|
||||
* dey-image-containers: container management image
|
||||
|
||||
Minimal image including the trimmed Podman and LXC runtimes used to
|
||||
manage container artifacts on target.
|
||||
Requires DISTRO_FEATURES:append = " virtualization" in local.conf.
|
||||
|
|
|
|||
|
|
@ -19,6 +19,12 @@ Digi Embedded Yocto provides the following image recipes:
|
|||
Expansion of custom Digi core-image-base including full Flutter
|
||||
framework support.
|
||||
|
||||
* dey-image-containers: container management image
|
||||
|
||||
Minimal image including the trimmed Podman and LXC runtimes used to
|
||||
manage container artifacts on target.
|
||||
Requires DISTRO_FEATURES:append = " virtualization" in local.conf.
|
||||
|
||||
* core-image-base: a console-only image
|
||||
|
||||
Expansion of native core-image-base by including all the support for the
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,56 +0,0 @@
|
|||
From: Isaac Hermida <isaac.hermida@digi.com>
|
||||
Date: Mon, 15 Sep 2025 11:38:55 +0200
|
||||
Subject: [PATCH] ccimx95: configure console on LPUART6
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||
---
|
||||
boards/ccimx95/config_board.h | 2 +-
|
||||
boards/ccimx95/pin_mux.c | 7 +++++++
|
||||
devices/MIMX95/oei/soc_clock.c | 2 ++
|
||||
3 files changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/boards/ccimx95/config_board.h b/boards/ccimx95/config_board.h
|
||||
index 3095ebf1d8ce..ec97626a2a28 100644
|
||||
--- a/boards/ccimx95/config_board.h
|
||||
+++ b/boards/ccimx95/config_board.h
|
||||
@@ -52,7 +52,7 @@
|
||||
/* Defines */
|
||||
|
||||
/*! Config for UART instance */
|
||||
-#define BOARD_DEBUG_UART_INSTANCE 2U
|
||||
+#define BOARD_DEBUG_UART_INSTANCE 6U
|
||||
/*! Config for UART baudrate */
|
||||
#define BOARD_DEBUG_UART_BAUDRATE 115200U
|
||||
|
||||
diff --git a/boards/ccimx95/pin_mux.c b/boards/ccimx95/pin_mux.c
|
||||
index a8c15513b578..3cb33909f740 100644
|
||||
--- a/boards/ccimx95/pin_mux.c
|
||||
+++ b/boards/ccimx95/pin_mux.c
|
||||
@@ -29,5 +29,12 @@ void BOARD_InitPins(void)
|
||||
|
||||
IOMUXC_SetPinMux(IOMUXC_PAD_UART2_TXD__LPUART2_TX, 0);
|
||||
IOMUXC_SetPinConfig(IOMUXC_PAD_UART2_TXD__LPUART2_TX, IOMUXC_PAD_DSE(0xFU));
|
||||
+#elif (BOARD_DEBUG_UART_INSTANCE == 6U)
|
||||
+ /* Configure LPUART 6 */
|
||||
+ IOMUXC_SetPinMux(IOMUXC_PAD_GPIO_IO05__LPUART6_RX, 0);
|
||||
+ IOMUXC_SetPinConfig(IOMUXC_PAD_GPIO_IO05__LPUART6_RX, IOMUXC_PAD_PD(1U));
|
||||
+
|
||||
+ IOMUXC_SetPinMux(IOMUXC_PAD_GPIO_IO04__LPUART6_TX, 0);
|
||||
+ IOMUXC_SetPinConfig(IOMUXC_PAD_GPIO_IO04__LPUART6_TX, IOMUXC_PAD_DSE(0xFU));
|
||||
#endif
|
||||
}
|
||||
diff --git a/devices/MIMX95/oei/soc_clock.c b/devices/MIMX95/oei/soc_clock.c
|
||||
index 17493b08e1b8..c1f5cecfa9b6 100644
|
||||
--- a/devices/MIMX95/oei/soc_clock.c
|
||||
+++ b/devices/MIMX95/oei/soc_clock.c
|
||||
@@ -25,6 +25,8 @@ static struct clk_root_cfg clk_root_cfgs[] = {
|
||||
{ CLOCK_ROOT_LPUART1, CLOCK_SRC_OSC24M, 1}, /* 24MHz */
|
||||
#elif (BOARD_DEBUG_UART_INSTANCE == 2)
|
||||
{ CLOCK_ROOT_LPUART2, CLOCK_SRC_OSC24M, 1}, /* 24MHz */
|
||||
+#elif (BOARD_DEBUG_UART_INSTANCE == 6)
|
||||
+ { CLOCK_ROOT_LPUART6, CLOCK_SRC_OSC24M, 1}, /* 24MHz */
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,37 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Wed, 14 Jan 2026 17:11:28 +0100
|
||||
Subject: [PATCH] ccimx95: configure console on LPUART1
|
||||
|
||||
On version 2 of the SOM, the console has been changed
|
||||
to LPUART1.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9915
|
||||
---
|
||||
boards/ccimx95/config_board.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/boards/ccimx95/config_board.h b/boards/ccimx95/config_board.h
|
||||
index ec97626a2a28..e666575ae6e8 100644
|
||||
--- a/boards/ccimx95/config_board.h
|
||||
+++ b/boards/ccimx95/config_board.h
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2024 NXP
|
||||
+** Copyright 2025-2026 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -52,7 +53,7 @@
|
||||
/* Defines */
|
||||
|
||||
/*! Config for UART instance */
|
||||
-#define BOARD_DEBUG_UART_INSTANCE 6U
|
||||
+#define BOARD_DEBUG_UART_INSTANCE 1U
|
||||
/*! Config for UART baudrate */
|
||||
#define BOARD_DEBUG_UART_BAUDRATE 115200U
|
||||
|
||||
|
|
@ -1,15 +1,12 @@
|
|||
# Copyright (C) 2025,2026 Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
# Select internal or Github imx-oei repo
|
||||
IMX_OEI_URI_STASH = "${DIGI_MTK_GIT}/emp/imx-oei.git;protocol=ssh"
|
||||
IMX_OEI_URI_GITHUB = "${DIGI_GITHUB_GIT}/imx-oei.git;protocol=https"
|
||||
IMX_OEI_SRC:dey = "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1', '${IMX_OEI_URI_STASH}', '${IMX_OEI_URI_GITHUB}', d)}"
|
||||
|
||||
SRC_URI:append:dey = " \
|
||||
file://0001-boards-ccimx95-add-platform-as-a-clone-of-mx95lp5.patch \
|
||||
file://0002-ddr-add-DDR-configuration-file-for-ccimx95.patch \
|
||||
file://0003-ccimx95-configure-console-on-LPUART6.patch \
|
||||
file://0004-ccimx95-add-DDR-configuration-file-for-ccimx95-B0-si.patch \
|
||||
file://0005-ccimx95-configure-console-on-LPUART1.patch \
|
||||
"
|
||||
# NXP's 'lf-6.6.52_2.2.2' release
|
||||
SRCREV = "49bfaa93e9d1fe213866bcb9507927a59a9ede5a"
|
||||
SRCBRANCH:dey = "dey/scarthgap/lf-6.6.52-2.2.2"
|
||||
# NXP's 'lf-6.6.52_2.2.2' release + patches
|
||||
SRCREV:dey = "1dd57d4c97c1597dcab4b0cdba6eee188af9e33d"
|
||||
|
||||
OEI_DEBUG:dey = "1"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,254 +0,0 @@
|
|||
From: Javier Viguera <javier.viguera@digi.com>
|
||||
Date: Mon, 15 Sep 2025 12:37:05 +0200
|
||||
Subject: [PATCH] ccimx95dvk: disable PCAL6408A expander and move GPIO1 to A55
|
||||
|
||||
Our board does not populate that expander, so disable the initialization
|
||||
and assign GPIO1 to be used by the A55 cpu.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||
---
|
||||
boards/ccimx95dvk/board.c | 7 ---
|
||||
boards/ccimx95dvk/pin_mux.c | 4 --
|
||||
boards/ccimx95dvk/sm/brd_sm.c | 9 ---
|
||||
boards/ccimx95dvk/sm/brd_sm_handlers.c | 82 --------------------------
|
||||
configs/ccimx95dvk.cfg | 3 +-
|
||||
configs/ccimx95dvk/config_scmi.h | 2 +
|
||||
configs/ccimx95dvk/config_trdc.h | 2 +-
|
||||
7 files changed, 5 insertions(+), 104 deletions(-)
|
||||
|
||||
diff --git a/boards/ccimx95dvk/board.c b/boards/ccimx95dvk/board.c
|
||||
index c9b97b2a67d9..fe76d6e1a1a3 100755
|
||||
--- a/boards/ccimx95dvk/board.c
|
||||
+++ b/boards/ccimx95dvk/board.c
|
||||
@@ -355,9 +355,6 @@ void BOARD_InitHandlers(void)
|
||||
/* Enable FCCU handler */
|
||||
NVIC_SetPriority(FCCU_INT0_IRQn, IRQ_PRIO_NOPREEMPT_CRITICAL);
|
||||
NVIC_EnableIRQ(FCCU_INT0_IRQn);
|
||||
-
|
||||
- /* Enable GPIO1 handler */
|
||||
- NVIC_EnableIRQ(GPIO1_0_IRQn);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
@@ -539,10 +536,6 @@ void BOARD_SystemSleepPrepare(uint32_t sleepMode, uint32_t sleepFlags)
|
||||
(void) CPU_PerLpiConfigSet(CPU_IDX_M33P, s_uartConfig.perLpiId,
|
||||
CPU_PER_LPI_ON_RUN_WAIT_STOP);
|
||||
}
|
||||
-
|
||||
- /* Configure LPI for GPIO1 */
|
||||
- (void) CPU_PerLpiConfigSet(CPU_IDX_M33P, CPU_PER_LPI_IDX_GPIO1,
|
||||
- CPU_PER_LPI_ON_RUN_WAIT_STOP);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
diff --git a/boards/ccimx95dvk/pin_mux.c b/boards/ccimx95dvk/pin_mux.c
|
||||
index ff2b9540ea7a..6f5bb4a51c4c 100755
|
||||
--- a/boards/ccimx95dvk/pin_mux.c
|
||||
+++ b/boards/ccimx95dvk/pin_mux.c
|
||||
@@ -57,9 +57,5 @@ void BOARD_InitPins(void)
|
||||
IOMUXC_SetPinConfig(IOMUXC_PAD_I2C2_SDA__LPI2C2_SDA, IOMUXC_PAD_DSE(0xFU)
|
||||
| IOMUXC_PAD_FSEL1(0x3U) | IOMUXC_PAD_PU(0x1U) | IOMUXC_PAD_OD(0x1U));
|
||||
#endif
|
||||
-
|
||||
- /* Configure GPIO1-10 (INT from the PCAL6408A) */
|
||||
- IOMUXC_SetPinMux(IOMUXC_PAD_PDM_BIT_STREAM1__GPIO1_IO_BIT10, 0U);
|
||||
- IOMUXC_SetPinConfig(IOMUXC_PAD_PDM_BIT_STREAM1__GPIO1_IO_BIT10, 0U);
|
||||
}
|
||||
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm.c b/boards/ccimx95dvk/sm/brd_sm.c
|
||||
index 36b4b52c6986..ae6c3195f0b2 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm.c
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm.c
|
||||
@@ -458,15 +458,6 @@ void BRD_SM_ShutdownRecordSave(dev_sm_rst_rec_t shutdownRec)
|
||||
int32_t BRD_SM_SystemReset(void)
|
||||
{
|
||||
int32_t status = SM_ERR_SUCCESS;
|
||||
- rgpio_pin_config_t gpioConfig =
|
||||
- {
|
||||
- kRGPIO_DigitalOutput,
|
||||
- 0U
|
||||
- };
|
||||
-
|
||||
- /* Drive WDOG_ANY to reset PMIC */
|
||||
- RGPIO_PinInit(GPIO1, 15U, &gpioConfig);
|
||||
- IOMUXC_SetPinMux(IOMUXC_PAD_WDOG_ANY__GPIO1_IO_BIT15, 0U);
|
||||
|
||||
/* Wait for PMIC to react */
|
||||
SystemTimeDelay(1000U);
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_handlers.c b/boards/ccimx95dvk/sm/brd_sm_handlers.c
|
||||
index a96f6ce0e2f4..19ee28e93134 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_handlers.c
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_handlers.c
|
||||
@@ -96,26 +96,6 @@ int32_t BRD_SM_SerialDevicesInit(void)
|
||||
{
|
||||
int32_t status = SM_ERR_SUCCESS;
|
||||
LPI2C_Type *const s_i2cBases[] = LPI2C_BASE_PTRS;
|
||||
- pcal6408a_config_t pcal6408Config;
|
||||
-
|
||||
- /* Fill in PCAL6408A dev */
|
||||
- g_pcal6408aDev.i2cBase = s_i2cBases[BOARD_I2C_INSTANCE];
|
||||
- g_pcal6408aDev.devAddr = BOARD_PCAL6408A_DEV_ADDR;
|
||||
-
|
||||
- /* Init the bus expander */
|
||||
- PCAL6408A_GetDefaultConfig(&pcal6408Config);
|
||||
- pcal6408Config.inputLatch = 0xFFU;
|
||||
- if (!PCAL6408A_Init(&g_pcal6408aDev, &pcal6408Config))
|
||||
- {
|
||||
- status = SM_ERR_HARDWARE_ERROR;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- if (!PCAL6408A_IntMaskSet(&g_pcal6408aDev, PCAL6408A_INITIAL_MASK))
|
||||
- {
|
||||
- status = SM_ERR_HARDWARE_ERROR;
|
||||
- }
|
||||
- }
|
||||
|
||||
if (status == SM_ERR_SUCCESS)
|
||||
{
|
||||
@@ -254,20 +234,6 @@ int32_t BRD_SM_SerialDevicesInit(void)
|
||||
}
|
||||
}
|
||||
|
||||
- if (status == SM_ERR_SUCCESS)
|
||||
- {
|
||||
- rgpio_pin_config_t gpioConfig =
|
||||
- {
|
||||
- kRGPIO_DigitalInput,
|
||||
- 0U
|
||||
- };
|
||||
-
|
||||
- /* Init GPIO1-10 */
|
||||
- RGPIO_PinInit(GPIO1, 10U, &gpioConfig);
|
||||
- RGPIO_SetPinInterruptConfig(GPIO1, 10U, kRGPIO_InterruptOutput0,
|
||||
- kRGPIO_InterruptLogicZero);
|
||||
- }
|
||||
-
|
||||
/* Return status */
|
||||
return status;
|
||||
}
|
||||
@@ -300,54 +266,6 @@ int32_t BRD_SM_BusExpMaskSet(uint8_t val, uint8_t mask)
|
||||
return status;
|
||||
}
|
||||
|
||||
-/*--------------------------------------------------------------------------*/
|
||||
-/* GPIO1 handler */
|
||||
-/*--------------------------------------------------------------------------*/
|
||||
-void GPIO1_0_IRQHandler(void)
|
||||
-{
|
||||
- uint32_t flags;
|
||||
- uint8_t status, val;
|
||||
-
|
||||
- /* Get GPIO status */
|
||||
- flags = RGPIO_GetPinsInterruptFlags(GPIO1, kRGPIO_InterruptOutput0);
|
||||
-
|
||||
- /* Get PCAL6408A status */
|
||||
- (void) PCAL6408A_IntStatusGet(&g_pcal6408aDev, &status);
|
||||
-
|
||||
- /* Get value and Clear PCAL6408A interrupts */
|
||||
- (void) PCAL6408A_InputGet(&g_pcal6408aDev, &val);
|
||||
-
|
||||
- /* Clear GPIO interrupts */
|
||||
- RGPIO_ClearPinsInterruptFlags(GPIO1, kRGPIO_InterruptOutput0, flags);
|
||||
-
|
||||
- /* Handle PF09 interrupt */
|
||||
- if ((status & BIT8(PCAL6408A_INPUT_PF09_INT)) != 0U)
|
||||
- {
|
||||
- /* Asserts low */
|
||||
- if ((val & BIT8(PCAL6408A_INPUT_PF09_INT)) == 0U)
|
||||
- {
|
||||
- BRD_SM_Pf09Handler();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- /* Handle PCA2131 interrupt */
|
||||
- if (g_pca2131Used && ((status & BIT8(PCAL6408A_INPUT_PCA2131_INT))
|
||||
- != 0U))
|
||||
- {
|
||||
- /* Asserts low */
|
||||
- if ((val & BIT8(PCAL6408A_INPUT_PCA2131_INT)) == 0U)
|
||||
- {
|
||||
- BRD_SM_BbmHandler();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- /* Handle controls interrupts */
|
||||
- BRD_SM_ControlHandler(status, val);
|
||||
-
|
||||
- /* Adjust dynamic IRQ priority */
|
||||
- (void) DEV_SM_IrqPrioUpdate();
|
||||
-}
|
||||
-
|
||||
/*==========================================================================*/
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index 557bba3cecf2..cd6c5c4551c2 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -217,7 +217,6 @@ ELE OWNER
|
||||
FSB READONLY
|
||||
GIC ACCESS
|
||||
GPC OWNER
|
||||
-GPIO1 OWNER
|
||||
GPR0 OWNER
|
||||
GPR1 OWNER
|
||||
GPR2 OWNER
|
||||
@@ -503,6 +502,7 @@ PERLPI_LPUART4 ALL
|
||||
PERLPI_LPUART5 ALL
|
||||
PERLPI_LPUART6 ALL
|
||||
PERLPI_LPUART8 ALL
|
||||
+PERLPI_GPIO1 ALL
|
||||
PERLPI_WDOG3 ALL
|
||||
PERLPI_WDOG4 ALL
|
||||
SYS ALL
|
||||
@@ -737,6 +737,7 @@ FLEXIO2 OWNER
|
||||
FLEXSPI1 OWNER
|
||||
FSB READONLY
|
||||
GIC OWNER
|
||||
+GPIO1 OWNER
|
||||
GPIO2 OWNER
|
||||
GPIO3 OWNER
|
||||
GPIO4 OWNER
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 7032a0efc948..edb2a17eaca1 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -183,6 +183,7 @@
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN5] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_GPIO1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO2] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO4] = SM_SCMI_PERM_ALL, \
|
||||
@@ -465,6 +466,7 @@
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN5] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_GPIO1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO2] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO4] = SM_SCMI_PERM_ALL, \
|
||||
diff --git a/configs/ccimx95dvk/config_trdc.h b/configs/ccimx95dvk/config_trdc.h
|
||||
index 1d8ed0b6fc95..47df6a7577d5 100644
|
||||
--- a/configs/ccimx95dvk/config_trdc.h
|
||||
+++ b/configs/ccimx95dvk/config_trdc.h
|
||||
@@ -116,7 +116,6 @@
|
||||
SM_CFG_W1(0x00010470U), 0x33333333U, \
|
||||
SM_CFG_W1(0x00010474U), 0x00003000U, \
|
||||
SM_CFG_W1(0x00010580U), 0x000003C0U, \
|
||||
- SM_CFG_W1(0x000105a8U), 0x00000003U, \
|
||||
SM_CFG_W1(0x00010640U), 0x99999999U, \
|
||||
SM_CFG_W1(0x00010644U), 0x99999999U, \
|
||||
SM_CFG_W1(0x00010648U), 0x99999999U, \
|
||||
@@ -129,6 +128,7 @@
|
||||
SM_CFG_W1(0x0001066cU), 0x90909000U, \
|
||||
SM_CFG_W1(0x00010670U), 0x00009000U, \
|
||||
SM_CFG_W1(0x00010780U), 0x099330C0U, \
|
||||
+ SM_CFG_W1(0x000107a8U), 0x00000009U, \
|
||||
SM_CFG_Z1(0x00010850U), \
|
||||
SM_CFG_W1(0x00010854U), 0x9000C000U, \
|
||||
SM_CFG_W1(0x00010858U), 0x00000099U, \
|
||||
|
|
@ -1,206 +0,0 @@
|
|||
From: Javier Viguera <javier.viguera@digi.com>
|
||||
Date: Tue, 16 Sep 2025 17:51:14 +0200
|
||||
Subject: [PATCH] ccimx95dvk: move resources from M7 to A55
|
||||
|
||||
Moved from M7 to A55 domain:
|
||||
* LPUART7
|
||||
* PIN_GPIO_IO14
|
||||
* PIN_GPIO_IO15
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||
---
|
||||
configs/ccimx95dvk.cfg | 11 ++++-------
|
||||
configs/ccimx95dvk/config_scmi.h | 15 ++++++++-------
|
||||
configs/ccimx95dvk/config_test.h | 7 +------
|
||||
configs/ccimx95dvk/config_trdc.h | 3 +--
|
||||
4 files changed, 14 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index cd6c5c4551c2..49861f4545ae 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -390,7 +390,6 @@ LPIT1 OWNER
|
||||
LPTMR1 OWNER
|
||||
LPTMR2 OWNER
|
||||
LPTPM1 OWNER
|
||||
-LPUART3 OWNER, test
|
||||
MSGINTR1 OWNER
|
||||
MSGINTR2 OWNER
|
||||
MU5_A OWNER
|
||||
@@ -403,11 +402,6 @@ TSTMR2 OWNER
|
||||
V2X_SHE1 OWNER
|
||||
WDOG5 OWNER
|
||||
|
||||
-# Pins
|
||||
-
|
||||
-PIN_GPIO_IO14 OWNER
|
||||
-PIN_GPIO_IO15 OWNER
|
||||
-
|
||||
# Memory
|
||||
|
||||
M7MIX DATA, begin=0x020380000, end=0x02047FFFF
|
||||
@@ -498,6 +492,7 @@ PERLPI_GPIO4 ALL
|
||||
PERLPI_GPIO5 ALL
|
||||
PERLPI_LPUART1 ALL
|
||||
PERLPI_LPUART2 ALL
|
||||
+PERLPI_LPUART3 ALL
|
||||
PERLPI_LPUART4 ALL
|
||||
PERLPI_LPUART5 ALL
|
||||
PERLPI_LPUART6 ALL
|
||||
@@ -784,6 +779,7 @@ LPTPM5 OWNER
|
||||
LPTPM6 OWNER
|
||||
LPUART1 OWNER
|
||||
LPUART2 OWNER
|
||||
+LPUART3 OWNER
|
||||
LPUART4 OWNER
|
||||
LPUART5 OWNER
|
||||
LPUART6 OWNER
|
||||
@@ -936,6 +932,8 @@ PIN_GPIO_IO10 OWNER
|
||||
PIN_GPIO_IO11 OWNER
|
||||
PIN_GPIO_IO12 OWNER
|
||||
PIN_GPIO_IO13 OWNER
|
||||
+PIN_GPIO_IO14 OWNER
|
||||
+PIN_GPIO_IO15 OWNER
|
||||
PIN_GPIO_IO16 OWNER
|
||||
PIN_GPIO_IO17 OWNER
|
||||
PIN_GPIO_IO18 OWNER
|
||||
@@ -1015,4 +1013,3 @@ OCRAM EXEC, begin=0x0204C0000, size=96K
|
||||
GPU DATA, begin=0x04D900000, end=0x04DD7FFFF
|
||||
DDR EXEC, begin=0x088000000, end=0x089FFFFFF
|
||||
DDR EXEC, begin=0x08E000000, end=0x87FFFFFFF
|
||||
-
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index edb2a17eaca1..297806453ee1 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -69,7 +69,6 @@
|
||||
.clkPerms[DEV_SM_CLK_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPTMR1] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPTMR2] = SM_SCMI_PERM_ALL, \
|
||||
- .clkPerms[DEV_SM_CLK_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_M7SYSTICK] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_TSTMR2] = SM_SCMI_PERM_ALL, \
|
||||
.cpuPerms[DEV_SM_CPU_M7P] = SM_SCMI_PERM_ALL, \
|
||||
@@ -81,9 +80,6 @@
|
||||
.daisyPerms[DEV_SM_DAISY_LPTMR2_0] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPTMR2_1] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPTMR2_2] = SM_SCMI_PERM_ALL, \
|
||||
- .daisyPerms[DEV_SM_DAISY_LPUART3_CTS] = SM_SCMI_PERM_ALL, \
|
||||
- .daisyPerms[DEV_SM_DAISY_LPUART3_RXD] = SM_SCMI_PERM_ALL, \
|
||||
- .daisyPerms[DEV_SM_DAISY_LPUART3_TXD] = SM_SCMI_PERM_ALL, \
|
||||
.faultPerms[DEV_SM_FAULT_M7_LOCKUP] = SM_SCMI_PERM_ALL, \
|
||||
.faultPerms[DEV_SM_FAULT_M7_RESET] = SM_SCMI_PERM_ALL, \
|
||||
.faultPerms[DEV_SM_FAULT_SW0] = SM_SCMI_PERM_ALL, \
|
||||
@@ -94,10 +90,7 @@
|
||||
.pdPerms[DEV_SM_PD_M7] = SM_SCMI_PERM_ALL, \
|
||||
.perfPerms[DEV_SM_PERF_M7] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
- .perlpiPerms[DEV_SM_PERLPI_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_WDOG5] = SM_SCMI_PERM_ALL, \
|
||||
- .pinPerms[DEV_SM_PIN_GPIO_IO14] = SM_SCMI_PERM_ALL, \
|
||||
- .pinPerms[DEV_SM_PIN_GPIO_IO15] = SM_SCMI_PERM_ALL, \
|
||||
.rtcPerms[BRD_SM_RTC_PCA2131] = SM_SCMI_PERM_ALL, \
|
||||
.rtcPerms[DEV_SM_RTC_BBNSM] = SM_SCMI_PERM_PRIV, \
|
||||
.sensorPerms[BRD_SM_SENSOR_TEMP_PF09] = SM_SCMI_PERM_SET, \
|
||||
@@ -190,6 +183,7 @@
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART2] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART6] = SM_SCMI_PERM_ALL, \
|
||||
@@ -281,6 +275,7 @@
|
||||
.clkPerms[DEV_SM_CLK_LPSPI8] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART1] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART2] = SM_SCMI_PERM_ALL, \
|
||||
+ .clkPerms[DEV_SM_CLK_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART4] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART5] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART6] = SM_SCMI_PERM_ALL, \
|
||||
@@ -389,6 +384,9 @@
|
||||
.daisyPerms[DEV_SM_DAISY_LPSPI4_SCK] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPSPI4_SDI] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPSPI4_SDO] = SM_SCMI_PERM_ALL, \
|
||||
+ .daisyPerms[DEV_SM_DAISY_LPUART3_CTS] = SM_SCMI_PERM_ALL, \
|
||||
+ .daisyPerms[DEV_SM_DAISY_LPUART3_RXD] = SM_SCMI_PERM_ALL, \
|
||||
+ .daisyPerms[DEV_SM_DAISY_LPUART3_TXD] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPUART4_CTS] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPUART4_RXD] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPUART4_TXD] = SM_SCMI_PERM_ALL, \
|
||||
@@ -473,6 +471,7 @@
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART2] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART6] = SM_SCMI_PERM_ALL, \
|
||||
@@ -527,6 +526,8 @@
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO11] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO12] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO13] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_GPIO_IO14] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_GPIO_IO15] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO16] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO17] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO18] = SM_SCMI_PERM_ALL, \
|
||||
diff --git a/configs/ccimx95dvk/config_test.h b/configs/ccimx95dvk/config_test.h
|
||||
index e667d2d5bf36..eed7c5a3d9b8 100644
|
||||
--- a/configs/ccimx95dvk/config_test.h
|
||||
+++ b/configs/ccimx95dvk/config_test.h
|
||||
@@ -143,12 +143,11 @@
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
/*! Config for number of tests */
|
||||
-#define SM_SCMI_NUM_TEST 42U
|
||||
+#define SM_SCMI_NUM_TEST 37U
|
||||
|
||||
/*! Config data array for tests */
|
||||
#define SM_SCMI_TEST_CONFIG_DATA \
|
||||
{.testId = TEST_BUTTON, .channel = 5U, .rsrc = DEV_SM_BUTTON_0}, \
|
||||
- {.testId = TEST_CLK, .channel = 0U, .rsrc = DEV_SM_CLK_LPUART3}, \
|
||||
{.testId = TEST_CLK, .channel = 5U, .rsrc = DEV_SM_CLK_ENETREF}, \
|
||||
{.testId = TEST_CLK, .channel = 5U, .rsrc = DEV_SM_CLK_ENETTIMER1}, \
|
||||
{.testId = TEST_CLK, .channel = 5U, .rsrc = DEV_SM_CLK_GPU_CGC}, \
|
||||
@@ -157,9 +156,6 @@
|
||||
{.testId = TEST_CLK, .channel = 5U, .rsrc = DEV_SM_CLK_SAI1}, \
|
||||
{.testId = TEST_CTRL, .channel = 5U, .rsrc = DEV_SM_CTRL_MQS1_SETTINGS}, \
|
||||
{.testId = TEST_CTRL, .channel = 5U, .rsrc = DEV_SM_CTRL_SAI1_MCLK}, \
|
||||
- {.testId = TEST_DAISY, .channel = 0U, .rsrc = DEV_SM_DAISY_LPUART3_CTS}, \
|
||||
- {.testId = TEST_DAISY, .channel = 0U, .rsrc = DEV_SM_DAISY_LPUART3_RXD}, \
|
||||
- {.testId = TEST_DAISY, .channel = 0U, .rsrc = DEV_SM_DAISY_LPUART3_TXD}, \
|
||||
{.testId = TEST_DAISY, .channel = 5U, .rsrc = DEV_SM_DAISY_NETC_EMDC}, \
|
||||
{.testId = TEST_DAISY, .channel = 5U, .rsrc = DEV_SM_DAISY_NETC_EMDIO}, \
|
||||
{.testId = TEST_DAISY, .channel = 5U, .rsrc = DEV_SM_DAISY_NETC_ETH0_RMII_RX_ER}, \
|
||||
@@ -184,7 +180,6 @@
|
||||
{.testId = TEST_PERF, .channel = 5U, .rsrc = DEV_SM_PERF_GPU}, \
|
||||
{.testId = TEST_PERF, .channel = 5U, .rsrc = DEV_SM_PERF_NPU}, \
|
||||
{.testId = TEST_PERF, .channel = 5U, .rsrc = DEV_SM_PERF_VPU}, \
|
||||
- {.testId = TEST_PERLPI, .channel = 0U, .rsrc = DEV_SM_PERLPI_LPUART3}, \
|
||||
{.testId = TEST_PERLPI, .channel = 5U, .rsrc = DEV_SM_PERLPI_LPUART8}, \
|
||||
{.testId = TEST_PIN, .channel = 5U, .rsrc = DEV_SM_PIN_UART1_RXD}, \
|
||||
{.testId = TEST_RTC, .channel = 5U, .rsrc = DEV_SM_RTC_BBNSM}, \
|
||||
diff --git a/configs/ccimx95dvk/config_trdc.h b/configs/ccimx95dvk/config_trdc.h
|
||||
index 47df6a7577d5..dc6245097316 100644
|
||||
--- a/configs/ccimx95dvk/config_trdc.h
|
||||
+++ b/configs/ccimx95dvk/config_trdc.h
|
||||
@@ -1168,7 +1168,7 @@
|
||||
SM_CFG_W1(0x0001065cU), 0x99999999U, \
|
||||
SM_CFG_W1(0x00010660U), 0x00909099U, \
|
||||
SM_CFG_W1(0x00010664U), 0x99090990U, \
|
||||
- SM_CFG_W1(0x00010668U), 0x09999999U, \
|
||||
+ SM_CFG_W1(0x00010668U), 0x99999999U, \
|
||||
SM_CFG_W1(0x0001066cU), 0x09999999U, \
|
||||
SM_CFG_W1(0x00010670U), 0x99900009U, \
|
||||
SM_CFG_W1(0x00010674U), 0x99999909U, \
|
||||
@@ -1178,7 +1178,6 @@
|
||||
SM_CFG_W1(0x000107a8U), 0x00000009U, \
|
||||
SM_CFG_W1(0x00010860U), 0x00090000U, \
|
||||
SM_CFG_W1(0x00010864U), 0x00909009U, \
|
||||
- SM_CFG_W1(0x00010868U), 0x90000000U, \
|
||||
SM_CFG_W1(0x00010878U), 0x00090000U, \
|
||||
SM_CFG_Z1(0x00010a60U), \
|
||||
SM_CFG_Z1(0x00010c60U), \
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Wed, 24 Sep 2025 12:26:07 +0200
|
||||
Subject: [PATCH] ccimx95dvk: move pads to non-secure A55
|
||||
|
||||
The following pads are multiplexed and used by A55 in Linux:
|
||||
- PIN_UART2_RXD is used as LPUART1 CTS
|
||||
- PIN_UART2_TXD is used as LPUART1 RTS
|
||||
- PIN_PDM_BIT_STREAM1 is used as MIKROBUS_RST
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
---
|
||||
configs/ccimx95dvk.cfg | 5 ++++-
|
||||
configs/ccimx95dvk/config_scmi.h | 3 +++
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index 49861f4545ae..78fad32b4513 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -1,6 +1,7 @@
|
||||
## ###################################################################
|
||||
##
|
||||
## Copyright 2023-2025 NXP
|
||||
+## Copyright 2025 Digi International Inc.
|
||||
##
|
||||
## Redistribution and use in source and binary forms, with or without modification,
|
||||
## are permitted provided that the following conditions are met:
|
||||
@@ -305,7 +306,6 @@ L_STCU_NPUMIX OWNER
|
||||
PIN_FCCU_ERR0 OWNER
|
||||
PIN_I2C1_SCL OWNER
|
||||
PIN_I2C1_SDA OWNER
|
||||
-PIN_PDM_BIT_STREAM1 OWNER
|
||||
PIN_GPIO_IO08 OWNER # LPUART7_TX
|
||||
PIN_GPIO_IO09 OWNER # LPUART7_RX
|
||||
PIN_WDOG_ANY OWNER
|
||||
@@ -959,6 +959,7 @@ PIN_GPIO_IO37 OWNER
|
||||
PIN_I2C2_SCL OWNER
|
||||
PIN_I2C2_SDA OWNER
|
||||
PIN_PDM_BIT_STREAM0 OWNER
|
||||
+PIN_PDM_BIT_STREAM1 OWNER
|
||||
PIN_PDM_CLK OWNER
|
||||
PIN_SAI1_RXD0 OWNER
|
||||
PIN_SAI1_TXC OWNER
|
||||
@@ -992,6 +993,8 @@ PIN_SD3_DATA2 OWNER
|
||||
PIN_SD3_DATA3 OWNER
|
||||
PIN_UART1_RXD OWNER, test
|
||||
PIN_UART1_TXD OWNER
|
||||
+PIN_UART2_RXD OWNER
|
||||
+PIN_UART2_TXD OWNER
|
||||
PIN_XSPI1_DATA0 OWNER
|
||||
PIN_XSPI1_DATA1 OWNER
|
||||
PIN_XSPI1_DATA2 OWNER
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 297806453ee1..3d4b9cad69ad 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -553,6 +553,7 @@
|
||||
.pinPerms[DEV_SM_PIN_I2C2_SCL] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_I2C2_SDA] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_PDM_BIT_STREAM0] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_PDM_BIT_STREAM1] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_PDM_CLK] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_SAI1_RXD0] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_SAI1_TXC] = SM_SCMI_PERM_ALL, \
|
||||
@@ -586,6 +587,8 @@
|
||||
.pinPerms[DEV_SM_PIN_SD3_DATA3] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_UART1_RXD] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_UART1_TXD] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_UART2_RXD] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_UART2_TXD] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_XSPI1_DATA0] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_XSPI1_DATA1] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_XSPI1_DATA2] = SM_SCMI_PERM_ALL, \
|
||||
|
|
@ -1,151 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Wed, 24 Sep 2025 13:01:57 +0200
|
||||
Subject: [PATCH] ccimx95dvk: move CAN1 to be used by A55
|
||||
|
||||
CAN1 is no longer reserved by M7 but instead moved to
|
||||
non-secure A55 so that it can be used by Linux.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
---
|
||||
configs/ccimx95dvk.cfg | 3 ++-
|
||||
configs/ccimx95dvk/config_bctrl.h | 14 +++++++-------
|
||||
configs/ccimx95dvk/config_scmi.h | 7 ++++---
|
||||
configs/ccimx95dvk/config_trdc.h | 3 +--
|
||||
4 files changed, 14 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index 78fad32b4513..c1374d4684a9 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -383,7 +383,6 @@ SYS ALL
|
||||
# Resources
|
||||
|
||||
M7P OWNER # CPUs must be first
|
||||
-CAN_FD1 OWNER
|
||||
FSB READONLY
|
||||
IRQSTEER_M7 OWNER
|
||||
LPIT1 OWNER
|
||||
@@ -482,6 +481,7 @@ CHANNEL db=1, xport=smt, rpc=scmi, type=p2a_notify
|
||||
|
||||
PERF_A55 ALL
|
||||
PERF_DRAM ALL
|
||||
+PERLPI_CAN1 ALL
|
||||
PERLPI_CAN2 ALL
|
||||
PERLPI_CAN3 ALL
|
||||
PERLPI_CAN4 ALL
|
||||
@@ -604,6 +604,7 @@ CAMERA5 OWNER
|
||||
CAMERA6 OWNER
|
||||
CAMERA7 OWNER
|
||||
CAMERA8 OWNER
|
||||
+CAN_FD1 OWNER
|
||||
CAN_FD2 OWNER
|
||||
CAN_FD3 OWNER
|
||||
CAN_FD4 OWNER
|
||||
diff --git a/configs/ccimx95dvk/config_bctrl.h b/configs/ccimx95dvk/config_bctrl.h
|
||||
index a757834c32ab..a55abe03ec02 100644
|
||||
--- a/configs/ccimx95dvk/config_bctrl.h
|
||||
+++ b/configs/ccimx95dvk/config_bctrl.h
|
||||
@@ -61,13 +61,13 @@
|
||||
#define SM_BCTRL_A_CONFIG \
|
||||
{ \
|
||||
SM_CFG_W1(0x00000008U), 0x00001804U, \
|
||||
- SM_CFG_W1(0x0000000CU), 0x0000E56AU, \
|
||||
- SM_CFG_W1(0x00000010U), 0x0000E56AU, \
|
||||
- SM_CFG_W1(0x00000014U), 0x0000E56AU, \
|
||||
- SM_CFG_W1(0x00000018U), 0x0000E56AU, \
|
||||
- SM_CFG_W1(0x0000001CU), 0x0000E56AU, \
|
||||
- SM_CFG_W1(0x00000020U), 0x0000E56AU, \
|
||||
- SM_CFG_W1(0x00000024U), 0x00000291U, \
|
||||
+ SM_CFG_W1(0x0000000CU), 0x0000E56BU, \
|
||||
+ SM_CFG_W1(0x00000010U), 0x0000E56BU, \
|
||||
+ SM_CFG_W1(0x00000014U), 0x0000E56BU, \
|
||||
+ SM_CFG_W1(0x00000018U), 0x0000E56BU, \
|
||||
+ SM_CFG_W1(0x0000001CU), 0x0000E56BU, \
|
||||
+ SM_CFG_W1(0x00000020U), 0x0000E56BU, \
|
||||
+ SM_CFG_W1(0x00000024U), 0x00000290U, \
|
||||
SM_CFG_END \
|
||||
}
|
||||
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 3d4b9cad69ad..45114d0002f4 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -66,7 +66,6 @@
|
||||
.secure = 0U, \
|
||||
.seenvId = 1U, \
|
||||
.buttonPerms[DEV_SM_BUTTON_0] = SM_SCMI_PERM_NOTIFY, \
|
||||
- .clkPerms[DEV_SM_CLK_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPTMR1] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPTMR2] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_M7SYSTICK] = SM_SCMI_PERM_ALL, \
|
||||
@@ -76,7 +75,6 @@
|
||||
.ctrlPerms[BRD_SM_CTRL_PCA2131] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[BRD_SM_CTRL_TEST] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[BRD_SM_CTRL_TEST_A] = SM_SCMI_PERM_ALL, \
|
||||
- .daisyPerms[DEV_SM_DAISY_CAN1_RX] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPTMR2_0] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPTMR2_1] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPTMR2_2] = SM_SCMI_PERM_ALL, \
|
||||
@@ -89,7 +87,6 @@
|
||||
.lmmPerms[2] = SM_SCMI_PERM_ALL, \
|
||||
.pdPerms[DEV_SM_PD_M7] = SM_SCMI_PERM_ALL, \
|
||||
.perfPerms[DEV_SM_PERF_M7] = SM_SCMI_PERM_ALL, \
|
||||
- .perlpiPerms[DEV_SM_PERLPI_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_WDOG5] = SM_SCMI_PERM_ALL, \
|
||||
.rtcPerms[BRD_SM_RTC_PCA2131] = SM_SCMI_PERM_ALL, \
|
||||
.rtcPerms[DEV_SM_RTC_BBNSM] = SM_SCMI_PERM_PRIV, \
|
||||
@@ -172,6 +169,7 @@
|
||||
.pdPerms[DEV_SM_PD_A55P] = SM_SCMI_PERM_ALL, \
|
||||
.perfPerms[DEV_SM_PERF_A55] = SM_SCMI_PERM_ALL, \
|
||||
.perfPerms[DEV_SM_PERF_DRAM] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN2] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN4] = SM_SCMI_PERM_ALL, \
|
||||
@@ -228,6 +226,7 @@
|
||||
.clkPerms[DEV_SM_CLK_AUDIOPLL2] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_AUDIOPLL2_VCO] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_AUDIOXCVR] = SM_SCMI_PERM_ALL, \
|
||||
+ .clkPerms[DEV_SM_CLK_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_CAN2] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_CAN3] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_CAN4] = SM_SCMI_PERM_ALL, \
|
||||
@@ -318,6 +317,7 @@
|
||||
.ctrlPerms[DEV_SM_CTRL_SAI3_MCLK] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[DEV_SM_CTRL_SAI4_MCLK] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[DEV_SM_CTRL_SAI5_MCLK] = SM_SCMI_PERM_ALL, \
|
||||
+ .daisyPerms[DEV_SM_DAISY_CAN1_RX] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_CAN2_RX] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_CAN3_RX] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_CAN4_RX] = SM_SCMI_PERM_ALL, \
|
||||
@@ -460,6 +460,7 @@
|
||||
.perfPerms[DEV_SM_PERF_GPU] = SM_SCMI_PERM_ALL, \
|
||||
.perfPerms[DEV_SM_PERF_NPU] = SM_SCMI_PERM_ALL, \
|
||||
.perfPerms[DEV_SM_PERF_VPU] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_CAN1] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN2] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_CAN4] = SM_SCMI_PERM_ALL, \
|
||||
diff --git a/configs/ccimx95dvk/config_trdc.h b/configs/ccimx95dvk/config_trdc.h
|
||||
index dc6245097316..12ebbc61ca64 100644
|
||||
--- a/configs/ccimx95dvk/config_trdc.h
|
||||
+++ b/configs/ccimx95dvk/config_trdc.h
|
||||
@@ -123,7 +123,7 @@
|
||||
SM_CFG_W1(0x00010650U), 0x09000309U, \
|
||||
SM_CFG_W1(0x00010654U), 0x0000C900U, \
|
||||
SM_CFG_W1(0x00010658U), 0x99909900U, \
|
||||
- SM_CFG_W1(0x0001065cU), 0x00009099U, \
|
||||
+ SM_CFG_W1(0x0001065cU), 0x00009999U, \
|
||||
SM_CFG_W1(0x00010668U), 0x00009900U, \
|
||||
SM_CFG_W1(0x0001066cU), 0x90909000U, \
|
||||
SM_CFG_W1(0x00010670U), 0x00009000U, \
|
||||
@@ -132,7 +132,6 @@
|
||||
SM_CFG_Z1(0x00010850U), \
|
||||
SM_CFG_W1(0x00010854U), 0x9000C000U, \
|
||||
SM_CFG_W1(0x00010858U), 0x00000099U, \
|
||||
- SM_CFG_W1(0x0001085cU), 0x00000900U, \
|
||||
SM_CFG_W1(0x00010870U), 0x00000090U, \
|
||||
SM_CFG_W1(0x00010874U), 0x00000999U, \
|
||||
SM_CFG_W1(0x00010980U), 0x900000C0U, \
|
||||
|
|
@ -1,457 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Thu, 25 Sep 2025 11:11:20 +0200
|
||||
Subject: [PATCH] ccimx95dvk: remove PCAL6408A IO expander from EVK
|
||||
|
||||
NXP used this I2C IO expander on their EVK to process
|
||||
wakeup interrupt lines.
|
||||
This chip is not available on the DVK.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
---
|
||||
boards/ccimx95dvk/board.c | 1 +
|
||||
boards/ccimx95dvk/sm/Makefile | 4 +-
|
||||
boards/ccimx95dvk/sm/brd_sm_bbm.c | 5 +-
|
||||
boards/ccimx95dvk/sm/brd_sm_control.c | 96 +-------------------------
|
||||
boards/ccimx95dvk/sm/brd_sm_control.h | 14 ++--
|
||||
boards/ccimx95dvk/sm/brd_sm_handlers.c | 36 +---------
|
||||
boards/ccimx95dvk/sm/brd_sm_handlers.h | 21 +-----
|
||||
configs/ccimx95dvk.cfg | 6 --
|
||||
configs/ccimx95dvk/config_scmi.h | 6 --
|
||||
9 files changed, 13 insertions(+), 176 deletions(-)
|
||||
|
||||
diff --git a/boards/ccimx95dvk/board.c b/boards/ccimx95dvk/board.c
|
||||
index fe76d6e1a1a3..2cc8f826b781 100755
|
||||
--- a/boards/ccimx95dvk/board.c
|
||||
+++ b/boards/ccimx95dvk/board.c
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2023-2025 NXP
|
||||
+ * Copyright 2025 Digi International Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
diff --git a/boards/ccimx95dvk/sm/Makefile b/boards/ccimx95dvk/sm/Makefile
|
||||
index d5b576737636..db27ea922733 100755
|
||||
--- a/boards/ccimx95dvk/sm/Makefile
|
||||
+++ b/boards/ccimx95dvk/sm/Makefile
|
||||
@@ -1,6 +1,7 @@
|
||||
## ###################################################################
|
||||
##
|
||||
## Copyright 2023 NXP
|
||||
+## Copyright 2025 Digi International Inc.
|
||||
##
|
||||
## Redistribution and use in source and binary forms, with or without modification,
|
||||
## are permitted provided that the following conditions are met:
|
||||
@@ -40,7 +41,6 @@ INCLUDE += \
|
||||
-I$(BOARDS_DIR) \
|
||||
-I$(BOARD_DIR) \
|
||||
-I$(BOARD_DIR)/sm \
|
||||
- -I$(COMPONENTS_DIR)/pcal6408a \
|
||||
-I$(COMPONENTS_DIR)/pf09 \
|
||||
-I$(COMPONENTS_DIR)/pf53 \
|
||||
-I$(COMPONENTS_DIR)/pca2131
|
||||
@@ -50,7 +50,6 @@ VPATH += \
|
||||
$(BOARDS_DIR) \
|
||||
$(BOARD_DIR) \
|
||||
$(BOARD_DIR)/sm \
|
||||
- $(COMPONENTS_DIR)/pcal6408a \
|
||||
$(COMPONENTS_DIR)/pf09 \
|
||||
$(COMPONENTS_DIR)/pf53 \
|
||||
$(COMPONENTS_DIR)/pca2131
|
||||
@@ -63,7 +62,6 @@ OBJS += \
|
||||
$(OUT)/brd_sm_sensor.o \
|
||||
$(OUT)/brd_sm_voltage.o \
|
||||
$(OUT)/brd_sm_bbm.o \
|
||||
- $(OUT)/fsl_pcal6408a.o \
|
||||
$(OUT)/fsl_pf09.o \
|
||||
$(OUT)/fsl_pf53.o \
|
||||
$(OUT)/fsl_pca2131.o
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_bbm.c b/boards/ccimx95dvk/sm/brd_sm_bbm.c
|
||||
index 6103583ff69d..2c5cc953b1e2 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_bbm.c
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_bbm.c
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2025 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -432,8 +433,6 @@ int32_t BRD_SM_BbmRtcAlarmSet(uint32_t rtcId, bool enable, uint64_t val)
|
||||
/* Enable interrupt */
|
||||
if (PCA2131_IntEnable(&g_pca2131Dev, true))
|
||||
{
|
||||
- /* Enable bus expander interrupt */
|
||||
- status = BRD_SM_BusExpMaskSet(0U, BIT8(6));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -457,8 +456,6 @@ int32_t BRD_SM_BbmRtcAlarmSet(uint32_t rtcId, bool enable, uint64_t val)
|
||||
/* Disable interrupt */
|
||||
if (PCA2131_IntEnable(&g_pca2131Dev, false))
|
||||
{
|
||||
- /* Disable bus expander interrupt */
|
||||
- status = BRD_SM_BusExpMaskSet(BIT8(6), BIT8(6));
|
||||
}
|
||||
else
|
||||
{
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_control.c b/boards/ccimx95dvk/sm/brd_sm_control.c
|
||||
index fde28d939fca..76de9fad9e86 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_control.c
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_control.c
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2025 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -44,13 +45,6 @@
|
||||
|
||||
/* Local defines */
|
||||
|
||||
-/* PCAL6408A input signals */
|
||||
-#define PCAL6408A_INPUT_SD3_WAKE 0U
|
||||
-#define PCAL6408A_INPUT_PCIE1_WAKE 4U
|
||||
-#define PCAL6408A_INPUT_BT_WAKE 5U
|
||||
-#define PCAL6408A_INPUT_PCIE2_WAKE 6U
|
||||
-#define PCAL6408A_INPUT_BUTTON 7U
|
||||
-
|
||||
/* Local types */
|
||||
|
||||
/* Local variables */
|
||||
@@ -105,26 +99,7 @@ int32_t BRD_SM_ControlGet(uint32_t ctrlId, uint32_t *numRtn, uint32_t *rtn)
|
||||
}
|
||||
else if (ctrlId < BRD_SM_CTRL_TEST)
|
||||
{
|
||||
- uint8_t data;
|
||||
-
|
||||
- /* Read expander data input */
|
||||
- if (PCAL6408A_InputGet(&g_pcal6408aDev, &data))
|
||||
- {
|
||||
- uint32_t shift = ctrlId - DEV_SM_NUM_CTRL;
|
||||
-
|
||||
- /* Adjust bit position */
|
||||
- if (shift > 0U)
|
||||
- {
|
||||
- shift += 3U;
|
||||
- }
|
||||
-
|
||||
- *numRtn = 1U;
|
||||
- rtn[0] = (((uint32_t) data) >> shift) & 0x1UL;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- status = SM_ERR_HARDWARE_ERROR;
|
||||
- }
|
||||
+ status = SM_ERR_HARDWARE_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -270,41 +245,12 @@ int32_t BRD_SM_ControlFlagsSet(uint32_t ctrlId, uint32_t flags)
|
||||
}
|
||||
else
|
||||
{
|
||||
- uint8_t mask;
|
||||
- uint32_t val;
|
||||
- uint32_t enb = (flags != 0U) ? 0U : 1U;
|
||||
-
|
||||
switch (ctrlId)
|
||||
{
|
||||
- case BRD_SM_CTRL_SD3_WAKE:
|
||||
- mask = BIT8(PCAL6408A_INPUT_SD3_WAKE);
|
||||
- val = (enb & 0x1U) << PCAL6408A_INPUT_SD3_WAKE;
|
||||
- break;
|
||||
- case BRD_SM_CTRL_PCIE1_WAKE:
|
||||
- mask = BIT8(PCAL6408A_INPUT_PCIE1_WAKE);
|
||||
- val = (enb & 0x1U) << PCAL6408A_INPUT_PCIE1_WAKE;
|
||||
- break;
|
||||
- case BRD_SM_CTRL_BT_WAKE:
|
||||
- mask = BIT8(PCAL6408A_INPUT_BT_WAKE);
|
||||
- val = (enb & 0x1U) << PCAL6408A_INPUT_BT_WAKE;
|
||||
- break;
|
||||
- case BRD_SM_CTRL_PCIE2_WAKE:
|
||||
- mask = BIT8(PCAL6408A_INPUT_PCIE2_WAKE);
|
||||
- val = (enb & 0x1U) << PCAL6408A_INPUT_PCIE2_WAKE;
|
||||
- break;
|
||||
- case BRD_SM_CTRL_BUTTON:
|
||||
- mask = BIT8(PCAL6408A_INPUT_BUTTON);
|
||||
- val = (enb & 0x1U) << PCAL6408A_INPUT_BUTTON;
|
||||
- break;
|
||||
default:
|
||||
status = SM_ERR_NOT_FOUND;
|
||||
break;
|
||||
}
|
||||
-
|
||||
- if (status == SM_ERR_SUCCESS)
|
||||
- {
|
||||
- status = BRD_SM_BusExpMaskSet((uint8_t) val, mask);
|
||||
- }
|
||||
}
|
||||
|
||||
return status;
|
||||
@@ -315,42 +261,6 @@ int32_t BRD_SM_ControlFlagsSet(uint32_t ctrlId, uint32_t flags)
|
||||
/*--------------------------------------------------------------------------*/
|
||||
void BRD_SM_ControlHandler(uint8_t status, uint8_t val)
|
||||
{
|
||||
- uint32_t data = (uint32_t) val;
|
||||
-
|
||||
- /* Handle SD3 wake */
|
||||
- if ((status & BIT8(PCAL6408A_INPUT_SD3_WAKE)) != 0U)
|
||||
- {
|
||||
- LMM_MiscControlEvent(BRD_SM_CTRL_SD3_WAKE,
|
||||
- ((data >> PCAL6408A_INPUT_SD3_WAKE) & 0x1U) + 1U);
|
||||
- }
|
||||
-
|
||||
- /* Handle PCIe1 wake */
|
||||
- if ((status & BIT8(PCAL6408A_INPUT_PCIE1_WAKE)) != 0U)
|
||||
- {
|
||||
- LMM_MiscControlEvent(BRD_SM_CTRL_PCIE1_WAKE,
|
||||
- ((data >> PCAL6408A_INPUT_PCIE1_WAKE) & 0x1U) + 1U);
|
||||
- }
|
||||
-
|
||||
- /* Handle BT wake */
|
||||
- if ((status & BIT8(PCAL6408A_INPUT_BT_WAKE)) != 0U)
|
||||
- {
|
||||
- LMM_MiscControlEvent(BRD_SM_CTRL_BT_WAKE,
|
||||
- ((data >> PCAL6408A_INPUT_BT_WAKE) & 0x1U) + 1U);
|
||||
- }
|
||||
-
|
||||
- /* Handle PCIe2 wake */
|
||||
- if (((status & BIT8(PCAL6408A_INPUT_PCIE2_WAKE)) != 0U)
|
||||
- && !g_pca2131Used)
|
||||
- {
|
||||
- LMM_MiscControlEvent(BRD_SM_CTRL_PCIE2_WAKE,
|
||||
- ((data >> PCAL6408A_INPUT_PCIE2_WAKE) & 0x1U) + 1U);
|
||||
- }
|
||||
-
|
||||
- /* Handle button */
|
||||
- if ((status & BIT8(PCAL6408A_INPUT_BUTTON)) != 0U)
|
||||
- {
|
||||
- LMM_MiscControlEvent(BRD_SM_CTRL_BUTTON,
|
||||
- ((data >> PCAL6408A_INPUT_BUTTON) & 0x1U) + 1U);
|
||||
- }
|
||||
+ // Call pertinent LMM_MiscControlEvent()
|
||||
}
|
||||
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_control.h b/boards/ccimx95dvk/sm/brd_sm_control.h
|
||||
index 30ad8e67eb6f..9c61bce72f8e 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_control.h
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_control.h
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2025 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -67,7 +68,7 @@
|
||||
/** @} */
|
||||
|
||||
/*! Number of board controls */
|
||||
-#define BRD_SM_NUM_CTRL 8UL
|
||||
+#define BRD_SM_NUM_CTRL 3UL
|
||||
|
||||
/*! Total number of controls */
|
||||
#define SM_NUM_CTRL (DEV_SM_NUM_CTRL + BRD_SM_NUM_CTRL)
|
||||
@@ -76,14 +77,9 @@
|
||||
* @name BRD_SM control domain indexes
|
||||
*/
|
||||
/** @{ */
|
||||
-#define BRD_SM_CTRL_SD3_WAKE (DEV_SM_NUM_CTRL + 0U) /*!< PCAL6408A-0 */
|
||||
-#define BRD_SM_CTRL_PCIE1_WAKE (DEV_SM_NUM_CTRL + 1U) /*!< PCAL6408A-4 */
|
||||
-#define BRD_SM_CTRL_BT_WAKE (DEV_SM_NUM_CTRL + 2U) /*!< PCAL6408A-5 */
|
||||
-#define BRD_SM_CTRL_PCIE2_WAKE (DEV_SM_NUM_CTRL + 3U) /*!< PCAL6408A-6 */
|
||||
-#define BRD_SM_CTRL_BUTTON (DEV_SM_NUM_CTRL + 4U) /*!< PCAL6408A-7 */
|
||||
-#define BRD_SM_CTRL_TEST (DEV_SM_NUM_CTRL + 5U) /*!< Test */
|
||||
-#define BRD_SM_CTRL_PCA2131 (DEV_SM_NUM_CTRL + 6U) /*!< PCA2131 raw access */
|
||||
-#define BRD_SM_CTRL_TEST_A (DEV_SM_NUM_CTRL + 7U) /*!< Test action */
|
||||
+#define BRD_SM_CTRL_TEST (DEV_SM_NUM_CTRL + 0U) /*!< Test */
|
||||
+#define BRD_SM_CTRL_PCA2131 (DEV_SM_NUM_CTRL + 1U) /*!< PCA2131 raw access */
|
||||
+#define BRD_SM_CTRL_TEST_A (DEV_SM_NUM_CTRL + 2U) /*!< Test action */
|
||||
/** @} */
|
||||
|
||||
/* Types */
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_handlers.c b/boards/ccimx95dvk/sm/brd_sm_handlers.c
|
||||
index 19ee28e93134..a42359f15e8b 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_handlers.c
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_handlers.c
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2025 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -48,23 +49,16 @@
|
||||
|
||||
/* I2C device addresses */
|
||||
#define BOARD_PF09_DEV_ADDR 0x08U
|
||||
-#define BOARD_PCAL6408A_DEV_ADDR 0x20U
|
||||
#define BOARD_PF5301_DEV_ADDR 0x2AU
|
||||
#define BOARD_PF5302_DEV_ADDR 0x29U
|
||||
#define BOARD_PCA2131_DEV_ADDR 0x53U
|
||||
|
||||
-#define PCAL6408A_INPUT_PF53_ARM_PG 1U
|
||||
-#define PCAL6408A_INPUT_PF53_SOC_PG 2U
|
||||
-#define PCAL6408A_INPUT_PF09_INT 3U
|
||||
-#define PCAL6408A_INPUT_PCA2131_INT 6U
|
||||
-
|
||||
/* Local types */
|
||||
|
||||
/* Local variables */
|
||||
|
||||
/* Global variables */
|
||||
|
||||
-PCAL6408A_Type g_pcal6408aDev;
|
||||
PF09_Type g_pf09Dev;
|
||||
PF53_Type g_pf5301Dev;
|
||||
PF53_Type g_pf5302Dev;
|
||||
@@ -238,34 +232,6 @@ int32_t BRD_SM_SerialDevicesInit(void)
|
||||
return status;
|
||||
}
|
||||
|
||||
-/*--------------------------------------------------------------------------*/
|
||||
-/* Set bus expander interrupt mask */
|
||||
-/*--------------------------------------------------------------------------*/
|
||||
-int32_t BRD_SM_BusExpMaskSet(uint8_t val, uint8_t mask)
|
||||
-{
|
||||
- int32_t status = SM_ERR_SUCCESS;
|
||||
- static uint8_t cachedMask = PCAL6408A_INITIAL_MASK;
|
||||
- uint8_t newMask = (cachedMask & ~mask);
|
||||
-
|
||||
- newMask |= val;
|
||||
-
|
||||
- /* Mask changed? */
|
||||
- if (cachedMask != newMask)
|
||||
- {
|
||||
- if (PCAL6408A_IntMaskSet(&g_pcal6408aDev, newMask))
|
||||
- {
|
||||
- cachedMask = newMask;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- status = SM_ERR_HARDWARE_ERROR;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- /* Return status */
|
||||
- return status;
|
||||
-}
|
||||
-
|
||||
/*==========================================================================*/
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_handlers.h b/boards/ccimx95dvk/sm/brd_sm_handlers.h
|
||||
index e34d52b50f7a..781a443e8444 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_handlers.h
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_handlers.h
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2024 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -52,16 +53,12 @@
|
||||
|
||||
#include "sm.h"
|
||||
#include "dev_sm.h"
|
||||
-#include "fsl_pcal6408a.h"
|
||||
#include "fsl_pf09.h"
|
||||
#include "fsl_pf53.h"
|
||||
#include "fsl_pca2131.h"
|
||||
|
||||
/* Defines */
|
||||
|
||||
-/*! Initial PCAL6408A interrupt mask */
|
||||
-#define PCAL6408A_INITIAL_MASK 0xF7U
|
||||
-
|
||||
/*! Number of board IRQs participating dynamic prioritization */
|
||||
#define BOARD_NUM_IRQ_PRIO_IDX 1U
|
||||
|
||||
@@ -72,9 +69,6 @@
|
||||
|
||||
/* External variables */
|
||||
|
||||
-/*! Handle to access PCAL6408A */
|
||||
-extern PCAL6408A_Type g_pcal6408aDev;
|
||||
-
|
||||
/*! Handle to access PF09 */
|
||||
extern PF09_Type g_pf09Dev;
|
||||
|
||||
@@ -105,19 +99,6 @@ extern uint32_t g_pmicFaultFlags;
|
||||
*/
|
||||
int32_t BRD_SM_SerialDevicesInit(void);
|
||||
|
||||
-/*!
|
||||
- * Enable/disable bus expander interrupts.
|
||||
- *
|
||||
- * @param[in] val Value to write
|
||||
- * @param[in] mask Mask of bits to modify
|
||||
- *
|
||||
- * This function allows a caller to configure the bus expander.
|
||||
- * interrupts.
|
||||
- *
|
||||
- * @return Returns the status (::SM_ERR_SUCCESS = success).
|
||||
- */
|
||||
-int32_t BRD_SM_BusExpMaskSet(uint8_t val, uint8_t mask);
|
||||
-
|
||||
/*!
|
||||
* GPIO 1 interrupt 0 handler.
|
||||
*/
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index c1374d4684a9..c3c280d275b0 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -365,7 +365,6 @@ CHANNEL db=2, xport=smt, check=crc32, rpc=scmi, \
|
||||
|
||||
# API
|
||||
|
||||
-BRD_SM_CTRL_BUTTON NOTIFY
|
||||
BRD_SM_CTRL_PCA2131 ALL
|
||||
BRD_SM_CTRL_TEST ALL
|
||||
BRD_SM_CTRL_TEST_A ALL
|
||||
@@ -553,11 +552,6 @@ CHANNEL db=1, xport=smt, rpc=scmi, type=p2a_notify
|
||||
|
||||
AUDIO_PLL1 ALL
|
||||
AUDIO_PLL2 ALL
|
||||
-BRD_SM_CTRL_BT_WAKE NOTIFY
|
||||
-BRD_SM_CTRL_BUTTON NOTIFY
|
||||
-BRD_SM_CTRL_PCIE1_WAKE NOTIFY
|
||||
-BRD_SM_CTRL_PCIE2_WAKE NOTIFY
|
||||
-BRD_SM_CTRL_SD3_WAKE NOTIFY
|
||||
BRD_SM_CTRL_TEST_A ALL
|
||||
BRD_SM_RTC_PCA2131 PRIV
|
||||
BRD_SM_SENSOR_TEMP_PF09 ALL
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 45114d0002f4..83d7bd94bcd1 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -71,7 +71,6 @@
|
||||
.clkPerms[DEV_SM_CLK_M7SYSTICK] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_TSTMR2] = SM_SCMI_PERM_ALL, \
|
||||
.cpuPerms[DEV_SM_CPU_M7P] = SM_SCMI_PERM_ALL, \
|
||||
- .ctrlPerms[BRD_SM_CTRL_BUTTON] = SM_SCMI_PERM_NOTIFY, \
|
||||
.ctrlPerms[BRD_SM_CTRL_PCA2131] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[BRD_SM_CTRL_TEST] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[BRD_SM_CTRL_TEST_A] = SM_SCMI_PERM_ALL, \
|
||||
@@ -304,11 +303,6 @@
|
||||
.clkPerms[DEV_SM_CLK_VIDEOPLL1_VCO] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_VPUDSP] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_XSPISLVROOT] = SM_SCMI_PERM_ALL, \
|
||||
- .ctrlPerms[BRD_SM_CTRL_BT_WAKE] = SM_SCMI_PERM_NOTIFY, \
|
||||
- .ctrlPerms[BRD_SM_CTRL_BUTTON] = SM_SCMI_PERM_NOTIFY, \
|
||||
- .ctrlPerms[BRD_SM_CTRL_PCIE1_WAKE] = SM_SCMI_PERM_NOTIFY, \
|
||||
- .ctrlPerms[BRD_SM_CTRL_PCIE2_WAKE] = SM_SCMI_PERM_NOTIFY, \
|
||||
- .ctrlPerms[BRD_SM_CTRL_SD3_WAKE] = SM_SCMI_PERM_NOTIFY, \
|
||||
.ctrlPerms[BRD_SM_CTRL_TEST_A] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[DEV_SM_CTRL_ADC_TEST] = SM_SCMI_PERM_ALL, \
|
||||
.ctrlPerms[DEV_SM_CTRL_MQS1_SETTINGS] = SM_SCMI_PERM_ALL, \
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,276 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Mon, 29 Sep 2025 13:02:02 +0200
|
||||
Subject: [PATCH] ccimx95: change names of voltage regulators
|
||||
|
||||
Change the names of voltage regulators for easier identification.
|
||||
Use the PMIC regulator (SW1, SW2, LDO1...) and then the name of the power
|
||||
rail used in the SOM.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
---
|
||||
boards/ccimx95dvk/sm/brd_sm_voltage.c | 85 ++++++++++++++-------------
|
||||
boards/ccimx95dvk/sm/brd_sm_voltage.h | 15 ++---
|
||||
2 files changed, 51 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_voltage.c b/boards/ccimx95dvk/sm/brd_sm_voltage.c
|
||||
index b81ffd970294..d7e7c9b3ea27 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_voltage.c
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_voltage.c
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2025 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -63,13 +64,13 @@ int32_t BRD_SM_VoltageNameGet(uint32_t domainId, string *voltNameAddr,
|
||||
|
||||
static string const s_name[BRD_SM_NUM_VOLT] =
|
||||
{
|
||||
- "vdd_gpio_3p3",
|
||||
- "vdd_ana_0p8",
|
||||
- "vdd_gpio_1p8",
|
||||
- "vddq_ddr",
|
||||
- "vdd2_ddr",
|
||||
- "sd_card",
|
||||
- "nvcc_sd2"
|
||||
+ "vdd_3v3",
|
||||
+ "vdd_ana_0v8",
|
||||
+ "vdd_1v8",
|
||||
+ "lpd5_vddq",
|
||||
+ "lpd5_vdd2",
|
||||
+ "vdd_ldo1",
|
||||
+ "vdd_sdio2"
|
||||
};
|
||||
|
||||
/* Get max string width */
|
||||
@@ -117,25 +118,25 @@ int32_t BRD_SM_VoltageDescribe(uint32_t domainId,
|
||||
case DEV_SM_VOLT_ARM:
|
||||
status = DEV_SM_VoltageDescribe(domainId, range);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_3P3:
|
||||
+ case BRD_SM_VOLT_SW1_VDD_3V3:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_SW1, &info);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_ANA_0P8:
|
||||
+ case BRD_SM_VOLT_SW2_VDD_ANA_0V8:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_SW2, &info);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_1P8:
|
||||
+ case BRD_SM_VOLT_SW3_VDD_1V8:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_SW3, &info);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDDQ_DDR:
|
||||
+ case BRD_SM_VOLT_SW4_LPD5_VDDQ:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_SW4, &info);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD2_DDR:
|
||||
+ case BRD_SM_VOLT_SW5_LPD5_VDD2:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_SW5, &info);
|
||||
break;
|
||||
- case BRD_SM_VOLT_SD_CARD:
|
||||
+ case BRD_SM_VOLT_LDO1_VDD_LDO1:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_LDO1, &info);
|
||||
break;
|
||||
- case BRD_SM_VOLT_NVCC_SD2:
|
||||
+ case BRD_SM_VOLT_LDO2_VDD_SDIO2:
|
||||
rc = PF09_RegulatorInfoGet(PF09_REG_LDO2, &info);
|
||||
break;
|
||||
default:
|
||||
@@ -206,31 +207,31 @@ int32_t BRD_SM_VoltageModeSet(uint32_t domainId, uint8_t voltMode)
|
||||
s_modeArm = voltMode;
|
||||
}
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_3P3:
|
||||
+ case BRD_SM_VOLT_SW1_VDD_3V3:
|
||||
rc = PF09_SwModeSet(&g_pf09Dev, PF09_REG_SW1, PF09_STATE_VRUN,
|
||||
mode);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_ANA_0P8:
|
||||
+ case BRD_SM_VOLT_SW2_VDD_ANA_0V8:
|
||||
rc = PF09_SwModeSet(&g_pf09Dev, PF09_REG_SW2, PF09_STATE_VRUN,
|
||||
mode);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_1P8:
|
||||
+ case BRD_SM_VOLT_SW3_VDD_1V8:
|
||||
rc = PF09_SwModeSet(&g_pf09Dev, PF09_REG_SW3, PF09_STATE_VRUN,
|
||||
mode);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDDQ_DDR:
|
||||
+ case BRD_SM_VOLT_SW4_LPD5_VDDQ:
|
||||
rc = PF09_SwModeSet(&g_pf09Dev, PF09_REG_SW4, PF09_STATE_VRUN,
|
||||
mode);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD2_DDR:
|
||||
+ case BRD_SM_VOLT_SW5_LPD5_VDD2:
|
||||
rc = PF09_SwModeSet(&g_pf09Dev, PF09_REG_SW5, PF09_STATE_VRUN,
|
||||
mode);
|
||||
break;
|
||||
- case BRD_SM_VOLT_SD_CARD:
|
||||
+ case BRD_SM_VOLT_LDO1_VDD_LDO1:
|
||||
rc = PF09_LdoEnable(&g_pf09Dev, PF09_REG_LDO1, PF09_STATE_VRUN,
|
||||
enable);
|
||||
break;
|
||||
- case BRD_SM_VOLT_NVCC_SD2:
|
||||
+ case BRD_SM_VOLT_LDO2_VDD_SDIO2:
|
||||
rc = PF09_LdoEnable(&g_pf09Dev, PF09_REG_LDO2, PF09_STATE_VRUN,
|
||||
enable);
|
||||
break;
|
||||
@@ -271,36 +272,36 @@ int32_t BRD_SM_VoltageModeGet(uint32_t domainId, uint8_t *voltMode)
|
||||
rc = PF09_GpioCtrlGet(&g_pf09Dev, PF09_GPIO4, PF53_STATE_VRUN,
|
||||
&enable);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_3P3:
|
||||
+ case BRD_SM_VOLT_SW1_VDD_3V3:
|
||||
rc = PF09_SwModeGet(&g_pf09Dev, PF09_REG_SW1, PF09_STATE_VRUN,
|
||||
&mode);
|
||||
enable = (mode != PF09_SW_MODE_OFF);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_ANA_0P8:
|
||||
+ case BRD_SM_VOLT_SW2_VDD_ANA_0V8:
|
||||
rc = PF09_SwModeGet(&g_pf09Dev, PF09_REG_SW2, PF09_STATE_VRUN,
|
||||
&mode);
|
||||
enable = (mode != PF09_SW_MODE_OFF);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_1P8:
|
||||
+ case BRD_SM_VOLT_SW3_VDD_1V8:
|
||||
rc = PF09_SwModeGet(&g_pf09Dev, PF09_REG_SW3, PF09_STATE_VRUN,
|
||||
&mode);
|
||||
enable = (mode != PF09_SW_MODE_OFF);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDDQ_DDR:
|
||||
+ case BRD_SM_VOLT_SW4_LPD5_VDDQ:
|
||||
rc = PF09_SwModeGet(&g_pf09Dev, PF09_REG_SW4, PF09_STATE_VRUN,
|
||||
&mode);
|
||||
enable = (mode != PF09_SW_MODE_OFF);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD2_DDR:
|
||||
+ case BRD_SM_VOLT_SW5_LPD5_VDD2:
|
||||
rc = PF09_SwModeGet(&g_pf09Dev, PF09_REG_SW5, PF09_STATE_VRUN,
|
||||
&mode);
|
||||
enable = (mode != PF09_SW_MODE_OFF);
|
||||
break;
|
||||
- case BRD_SM_VOLT_SD_CARD:
|
||||
+ case BRD_SM_VOLT_LDO1_VDD_LDO1:
|
||||
rc = PF09_LdoIsEnabled(&g_pf09Dev, PF09_REG_LDO1, PF09_STATE_VRUN,
|
||||
&enable);
|
||||
break;
|
||||
- case BRD_SM_VOLT_NVCC_SD2:
|
||||
+ case BRD_SM_VOLT_LDO2_VDD_SDIO2:
|
||||
rc = PF09_LdoIsEnabled(&g_pf09Dev, PF09_REG_LDO2, PF09_STATE_VRUN,
|
||||
&enable);
|
||||
break;
|
||||
@@ -359,31 +360,31 @@ int32_t BRD_SM_VoltageLevelSet(uint32_t domainId, int32_t voltageLevel)
|
||||
s_levelArm = (int32_t) level;
|
||||
rc = true;
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_3P3:
|
||||
+ case BRD_SM_VOLT_SW1_VDD_3V3:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_SW1, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_ANA_0P8:
|
||||
+ case BRD_SM_VOLT_SW2_VDD_ANA_0V8:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_SW2, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_1P8:
|
||||
+ case BRD_SM_VOLT_SW3_VDD_1V8:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_SW3, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDDQ_DDR:
|
||||
+ case BRD_SM_VOLT_SW4_LPD5_VDDQ:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_SW4, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD2_DDR:
|
||||
+ case BRD_SM_VOLT_SW5_LPD5_VDD2:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_SW5, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_SD_CARD:
|
||||
+ case BRD_SM_VOLT_LDO1_VDD_LDO1:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_LDO1, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_NVCC_SD2:
|
||||
+ case BRD_SM_VOLT_LDO2_VDD_SDIO2:
|
||||
rc = PF09_VoltageSet(&g_pf09Dev, PF09_REG_LDO2, PF09_STATE_VRUN,
|
||||
level);
|
||||
break;
|
||||
@@ -458,31 +459,31 @@ int32_t BRD_SM_VoltageLevelGet(uint32_t domainId, int32_t *voltageLevel)
|
||||
}
|
||||
}
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_3P3:
|
||||
+ case BRD_SM_VOLT_SW1_VDD_3V3:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_SW1, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_ANA_0P8:
|
||||
+ case BRD_SM_VOLT_SW2_VDD_ANA_0V8:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_SW2, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD_GPIO_1P8:
|
||||
+ case BRD_SM_VOLT_SW3_VDD_1V8:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_SW3, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDDQ_DDR:
|
||||
+ case BRD_SM_VOLT_SW4_LPD5_VDDQ:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_SW4, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_VDD2_DDR:
|
||||
+ case BRD_SM_VOLT_SW5_LPD5_VDD2:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_SW5, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_SD_CARD:
|
||||
+ case BRD_SM_VOLT_LDO1_VDD_LDO1:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_LDO1, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
- case BRD_SM_VOLT_NVCC_SD2:
|
||||
+ case BRD_SM_VOLT_LDO2_VDD_SDIO2:
|
||||
rc = PF09_VoltageGet(&g_pf09Dev, PF09_REG_LDO2, PF09_STATE_VRUN,
|
||||
&level);
|
||||
break;
|
||||
diff --git a/boards/ccimx95dvk/sm/brd_sm_voltage.h b/boards/ccimx95dvk/sm/brd_sm_voltage.h
|
||||
index 6c9e01286e7e..46ddc9d89096 100755
|
||||
--- a/boards/ccimx95dvk/sm/brd_sm_voltage.h
|
||||
+++ b/boards/ccimx95dvk/sm/brd_sm_voltage.h
|
||||
@@ -2,6 +2,7 @@
|
||||
** ###################################################################
|
||||
**
|
||||
** Copyright 2023-2024 NXP
|
||||
+** Copyright 2025 Digi International Inc.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
@@ -76,13 +77,13 @@
|
||||
* @name BRD_SM voltage domains
|
||||
*/
|
||||
/** @{ */
|
||||
-#define BRD_SM_VOLT_VDD_GPIO_3P3 (DEV_SM_NUM_VOLT + 0U) /*!< VDD GPIO 3.3v */
|
||||
-#define BRD_SM_VOLT_VDD_ANA_0P8 (DEV_SM_NUM_VOLT + 1U) /*!< VDD ANA 0.8v */
|
||||
-#define BRD_SM_VOLT_VDD_GPIO_1P8 (DEV_SM_NUM_VOLT + 2U) /*!< VDD GPIO 1.8v */
|
||||
-#define BRD_SM_VOLT_VDDQ_DDR (DEV_SM_NUM_VOLT + 3U) /*!< DDR VDDQ */
|
||||
-#define BRD_SM_VOLT_VDD2_DDR (DEV_SM_NUM_VOLT + 4U) /*!< DDR VDD2 */
|
||||
-#define BRD_SM_VOLT_SD_CARD (DEV_SM_NUM_VOLT + 5U) /*!< SD1 */
|
||||
-#define BRD_SM_VOLT_NVCC_SD2 (DEV_SM_NUM_VOLT + 6U) /*!< SD2 */
|
||||
+#define BRD_SM_VOLT_SW1_VDD_3V3 (DEV_SM_NUM_VOLT + 0U) /*!< VDD 3V3 */
|
||||
+#define BRD_SM_VOLT_SW2_VDD_ANA_0V8 (DEV_SM_NUM_VOLT + 1U) /*!< VDD ANA 0V8 */
|
||||
+#define BRD_SM_VOLT_SW3_VDD_1V8 (DEV_SM_NUM_VOLT + 2U) /*!< VDD 1V8 */
|
||||
+#define BRD_SM_VOLT_SW4_LPD5_VDDQ (DEV_SM_NUM_VOLT + 3U) /*!< DDR VDDQ */
|
||||
+#define BRD_SM_VOLT_SW5_LPD5_VDD2 (DEV_SM_NUM_VOLT + 4U) /*!< DDR VDD2 */
|
||||
+#define BRD_SM_VOLT_LDO1_VDD_LDO1 (DEV_SM_NUM_VOLT + 5U) /*!< LDO1 */
|
||||
+#define BRD_SM_VOLT_LDO2_VDD_SDIO2 (DEV_SM_NUM_VOLT + 6U) /*!< LDO2 (VDD_SDIO2) */
|
||||
/** @} */
|
||||
|
||||
/* Types */
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Thu, 9 Oct 2025 13:16:00 +0200
|
||||
Subject: [PATCH] ccimx95dvk: enable full access to certain regulators from
|
||||
non-secure LVM
|
||||
|
||||
The following PMIC regulators are used by the DVK:
|
||||
- VDD_3V3 (SW1)
|
||||
- VDD_1V8 (SW3)
|
||||
- VDD_LDO1 (LDO1)
|
||||
- VDD_SDIO2 (LDO2)
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
---
|
||||
configs/ccimx95dvk.cfg | 4 ++++
|
||||
configs/ccimx95dvk/config_scmi.h | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index c160dbce0b85..d7ee4d0115fa 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -554,6 +554,10 @@ BRD_SM_CTRL_TEST_A ALL
|
||||
BRD_SM_SENSOR_TEMP_PF09 ALL
|
||||
BRD_SM_SENSOR_TEMP_PF5301 SET
|
||||
BRD_SM_SENSOR_TEMP_PF5302 SET
|
||||
+BRD_SM_VOLT_SW1_VDD_3V3 ALL
|
||||
+BRD_SM_VOLT_SW3_VDD_1V8 ALL
|
||||
+BRD_SM_VOLT_LDO1_VDD_LDO1 ALL
|
||||
+BRD_SM_VOLT_LDO2_VDD_SDIO2 ALL
|
||||
BUTTON ALL, test
|
||||
CLOCK_DISP1PIX ALL
|
||||
CLOCK_DISP2PIX ALL
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 87de1fd591ca..83084a9d1fbd 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -601,6 +601,10 @@
|
||||
.sensorPerms[DEV_SM_SENSOR_TEMP_A55] = SM_SCMI_PERM_ALL, \
|
||||
.sensorPerms[DEV_SM_SENSOR_TEMP_ANA] = SM_SCMI_PERM_SET, \
|
||||
.sysPerms = SM_SCMI_PERM_NOTIFY, \
|
||||
+ .voltPerms[BRD_SM_VOLT_LDO1_VDD_LDO1] = SM_SCMI_PERM_ALL, \
|
||||
+ .voltPerms[BRD_SM_VOLT_LDO2_VDD_SDIO2] = SM_SCMI_PERM_ALL, \
|
||||
+ .voltPerms[BRD_SM_VOLT_SW1_VDD_3V3] = SM_SCMI_PERM_ALL, \
|
||||
+ .voltPerms[BRD_SM_VOLT_SW3_VDD_1V8] = SM_SCMI_PERM_ALL, \
|
||||
}
|
||||
|
||||
/*! Config for SCMI channel 5 */
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Mon, 13 Oct 2025 08:49:57 +0200
|
||||
Subject: [PATCH] components: pf09: reduce LDOs step to 50mV
|
||||
|
||||
The voltage values that can be programmed to the LDOs are not linear.
|
||||
For low voltages, the step is 50mV, but for higher voltages it is 100mV.
|
||||
Setting the step as 100mV fools the Linux kernel regulator framework
|
||||
which does not properly calculate the selector it must call when using
|
||||
the SCMI regulator framework, resulting in -EINVAL errors.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
---
|
||||
components/pf09/fsl_pf09.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/pf09/fsl_pf09.c b/components/pf09/fsl_pf09.c
|
||||
index fc0638cbdba5..5d842c9a3062 100755
|
||||
--- a/components/pf09/fsl_pf09.c
|
||||
+++ b/components/pf09/fsl_pf09.c
|
||||
@@ -528,7 +528,7 @@ bool PF09_RegulatorInfoGet(uint8_t regulator, PF09_RegInfo *regInfo)
|
||||
/* set min/max/step in microvolts */
|
||||
regInfo->minV = 750000U;
|
||||
regInfo->maxV = 3300000U;
|
||||
- regInfo->stepV = 100000U;
|
||||
+ regInfo->stepV = 50000U;
|
||||
}
|
||||
break;
|
||||
case PF09_REG_LDO2:
|
||||
@@ -537,7 +537,7 @@ bool PF09_RegulatorInfoGet(uint8_t regulator, PF09_RegInfo *regInfo)
|
||||
/* set min/max/step in microvolts */
|
||||
regInfo->minV = 650000U;
|
||||
regInfo->maxV = 3300000U;
|
||||
- regInfo->stepV = 100000U;
|
||||
+ regInfo->stepV = 50000U;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Wed, 29 Oct 2025 16:54:45 +0100
|
||||
Subject: [PATCH] ccimx95dvk: remove access to VDD_3V3 and VDD_1V8 from
|
||||
non-secure world
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
There doesn't seem to be a clear registered handler for reboot or shutdown
|
||||
path from Linux to SM.
|
||||
When a 'reboot' is requested, Linux falls back to run the global
|
||||
device_shutdown() path.
|
||||
The SM will turn these regulators off in their shutdown path or via a
|
||||
global “disable regulators on reboot” policy. The current SM firmware
|
||||
doesn't get to know if Linux has marked these regulators as "always-on".
|
||||
|
||||
Powering these regulators off removes power to the SOM who is then not
|
||||
able to continue the reset (it is not powered).
|
||||
|
||||
By removing access to Linux, we fully rely on SM managing these regulators,
|
||||
though apparently support is incomplete (for instance they are not powered
|
||||
off on the poweroff path from Linux), so this may need to be revisited in
|
||||
future BSP upgrades.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9804
|
||||
---
|
||||
configs/ccimx95dvk.cfg | 2 --
|
||||
configs/ccimx95dvk/config_scmi.h | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index d7ee4d0115fa..b73401792592 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -554,8 +554,6 @@ BRD_SM_CTRL_TEST_A ALL
|
||||
BRD_SM_SENSOR_TEMP_PF09 ALL
|
||||
BRD_SM_SENSOR_TEMP_PF5301 SET
|
||||
BRD_SM_SENSOR_TEMP_PF5302 SET
|
||||
-BRD_SM_VOLT_SW1_VDD_3V3 ALL
|
||||
-BRD_SM_VOLT_SW3_VDD_1V8 ALL
|
||||
BRD_SM_VOLT_LDO1_VDD_LDO1 ALL
|
||||
BRD_SM_VOLT_LDO2_VDD_SDIO2 ALL
|
||||
BUTTON ALL, test
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 83084a9d1fbd..506cb750af65 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -603,8 +603,6 @@
|
||||
.sysPerms = SM_SCMI_PERM_NOTIFY, \
|
||||
.voltPerms[BRD_SM_VOLT_LDO1_VDD_LDO1] = SM_SCMI_PERM_ALL, \
|
||||
.voltPerms[BRD_SM_VOLT_LDO2_VDD_SDIO2] = SM_SCMI_PERM_ALL, \
|
||||
- .voltPerms[BRD_SM_VOLT_SW1_VDD_3V3] = SM_SCMI_PERM_ALL, \
|
||||
- .voltPerms[BRD_SM_VOLT_SW3_VDD_1V8] = SM_SCMI_PERM_ALL, \
|
||||
}
|
||||
|
||||
/*! Config for SCMI channel 5 */
|
||||
|
|
@ -1,226 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Wed, 14 Jan 2026 16:03:29 +0100
|
||||
Subject: [PATCH 13/14] ccimx95dvk: change SM console from LPUART7 to LPUART2
|
||||
|
||||
On version 2 of the SOM, the SM console has changed to LPUART2.
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9915
|
||||
---
|
||||
configs/ccimx95dvk.cfg | 18 +++++++++---------
|
||||
configs/ccimx95dvk/config_board.h | 2 +-
|
||||
configs/ccimx95dvk/config_scmi.h | 12 +++++++-----
|
||||
configs/ccimx95dvk/config_trdc.h | 7 +++----
|
||||
4 files changed, 20 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index b73401792592..53444e785270 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -1,7 +1,7 @@
|
||||
## ###################################################################
|
||||
##
|
||||
## Copyright 2023-2025 NXP
|
||||
-## Copyright 2025 Digi International Inc.
|
||||
+## Copyright 2025,2026 Digi International Inc.
|
||||
##
|
||||
## Redistribution and use in source and binary forms, with or without modification,
|
||||
## are permitted provided that the following conditions are met:
|
||||
@@ -42,7 +42,7 @@ include ../devices/MIMX95/configtool/device.cfg
|
||||
# Board #
|
||||
#==========================================================================#
|
||||
|
||||
-BOARD DEBUG_UART_INSTANCE=7
|
||||
+BOARD DEBUG_UART_INSTANCE=2
|
||||
BOARD DEBUG_UART_BAUDRATE=115200
|
||||
|
||||
BOARD I2C_INSTANCE=1
|
||||
@@ -233,7 +233,7 @@ IOMUXC OWNER
|
||||
IOMUX_GPR OWNER
|
||||
JTAG OWNER
|
||||
LPI2C1 OWNER
|
||||
-LPUART7 OWNER
|
||||
+LPUART2 OWNER
|
||||
M33_CACHE_CTRL OWNER
|
||||
M33_PCF OWNER
|
||||
M33_PSF OWNER
|
||||
@@ -306,8 +306,8 @@ L_STCU_NPUMIX OWNER
|
||||
PIN_FCCU_ERR0 OWNER
|
||||
PIN_I2C1_SCL OWNER
|
||||
PIN_I2C1_SDA OWNER
|
||||
-PIN_GPIO_IO08 OWNER # LPUART7_TX
|
||||
-PIN_GPIO_IO09 OWNER # LPUART7_RX
|
||||
+PIN_UART2_RXD OWNER
|
||||
+PIN_UART2_TXD OWNER
|
||||
PIN_WDOG_ANY OWNER
|
||||
|
||||
# Memory
|
||||
@@ -488,11 +488,11 @@ PERLPI_GPIO3 ALL
|
||||
PERLPI_GPIO4 ALL
|
||||
PERLPI_GPIO5 ALL
|
||||
PERLPI_LPUART1 ALL
|
||||
-PERLPI_LPUART2 ALL
|
||||
PERLPI_LPUART3 ALL
|
||||
PERLPI_LPUART4 ALL
|
||||
PERLPI_LPUART5 ALL
|
||||
PERLPI_LPUART6 ALL
|
||||
+PERLPI_LPUART7 ALL
|
||||
PERLPI_LPUART8 ALL
|
||||
PERLPI_GPIO1 ALL
|
||||
PERLPI_WDOG3 ALL
|
||||
@@ -772,11 +772,11 @@ LPTPM4 OWNER
|
||||
LPTPM5 OWNER
|
||||
LPTPM6 OWNER
|
||||
LPUART1 OWNER
|
||||
-LPUART2 OWNER
|
||||
LPUART3 OWNER
|
||||
LPUART4 OWNER
|
||||
LPUART5 OWNER
|
||||
LPUART6 OWNER
|
||||
+LPUART7 OWNER
|
||||
LPUART8 OWNER, test
|
||||
LVDS OWNER
|
||||
MIPI_CSI0 OWNER
|
||||
@@ -922,6 +922,8 @@ PIN_GPIO_IO04 OWNER
|
||||
PIN_GPIO_IO05 OWNER
|
||||
PIN_GPIO_IO06 OWNER
|
||||
PIN_GPIO_IO07 OWNER
|
||||
+PIN_GPIO_IO08 OWNER
|
||||
+PIN_GPIO_IO09 OWNER
|
||||
PIN_GPIO_IO10 OWNER
|
||||
PIN_GPIO_IO11 OWNER
|
||||
PIN_GPIO_IO12 OWNER
|
||||
@@ -987,8 +989,6 @@ PIN_SD3_DATA2 OWNER
|
||||
PIN_SD3_DATA3 OWNER
|
||||
PIN_UART1_RXD OWNER, test
|
||||
PIN_UART1_TXD OWNER
|
||||
-PIN_UART2_RXD OWNER
|
||||
-PIN_UART2_TXD OWNER
|
||||
PIN_XSPI1_DATA0 OWNER
|
||||
PIN_XSPI1_DATA1 OWNER
|
||||
PIN_XSPI1_DATA2 OWNER
|
||||
diff --git a/configs/ccimx95dvk/config_board.h b/configs/ccimx95dvk/config_board.h
|
||||
index 23ecae56cf78..b511a0320a68 100644
|
||||
--- a/configs/ccimx95dvk/config_board.h
|
||||
+++ b/configs/ccimx95dvk/config_board.h
|
||||
@@ -54,7 +54,7 @@
|
||||
/* Defines */
|
||||
|
||||
/*! Config for UART instance */
|
||||
-#define BOARD_DEBUG_UART_INSTANCE 7U
|
||||
+#define BOARD_DEBUG_UART_INSTANCE 2U
|
||||
/*! Config for UART baudrate */
|
||||
#define BOARD_DEBUG_UART_BAUDRATE 115200U
|
||||
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 506cb750af65..3b6899a7b9c8 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -177,11 +177,11 @@
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART1] = SM_SCMI_PERM_ALL, \
|
||||
- .perlpiPerms[DEV_SM_PERLPI_LPUART2] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART6] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_LPUART7] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART8] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_WDOG3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_WDOG4] = SM_SCMI_PERM_ALL, \
|
||||
@@ -270,11 +270,11 @@
|
||||
.clkPerms[DEV_SM_CLK_LPSPI7] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPSPI8] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART1] = SM_SCMI_PERM_ALL, \
|
||||
- .clkPerms[DEV_SM_CLK_LPUART2] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART4] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART5] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART6] = SM_SCMI_PERM_ALL, \
|
||||
+ .clkPerms[DEV_SM_CLK_LPUART7] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_LPUART8] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_MIPIPHYCFG] = SM_SCMI_PERM_ALL, \
|
||||
.clkPerms[DEV_SM_CLK_MIPIPHYPLLBYPASS] = SM_SCMI_PERM_ALL, \
|
||||
@@ -388,6 +388,8 @@
|
||||
.daisyPerms[DEV_SM_DAISY_LPUART6_CTS] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPUART6_RXD] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_LPUART6_TXD] = SM_SCMI_PERM_ALL, \
|
||||
+ .daisyPerms[DEV_SM_DAISY_LPUART7_RXD] = SM_SCMI_PERM_ALL, \
|
||||
+ .daisyPerms[DEV_SM_DAISY_LPUART7_TXD] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_NETC_EMDC] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_NETC_EMDIO] = SM_SCMI_PERM_ALL, \
|
||||
.daisyPerms[DEV_SM_DAISY_NETC_ETH0_RMII_RX_ER] = SM_SCMI_PERM_ALL, \
|
||||
@@ -463,11 +465,11 @@
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_GPIO5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART1] = SM_SCMI_PERM_ALL, \
|
||||
- .perlpiPerms[DEV_SM_PERLPI_LPUART2] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART4] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART5] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART6] = SM_SCMI_PERM_ALL, \
|
||||
+ .perlpiPerms[DEV_SM_PERLPI_LPUART7] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_LPUART8] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_WDOG3] = SM_SCMI_PERM_ALL, \
|
||||
.perlpiPerms[DEV_SM_PERLPI_WDOG4] = SM_SCMI_PERM_ALL, \
|
||||
@@ -515,6 +517,8 @@
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO05] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO06] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO07] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_GPIO_IO08] = SM_SCMI_PERM_ALL, \
|
||||
+ .pinPerms[DEV_SM_PIN_GPIO_IO09] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO10] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO11] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_GPIO_IO12] = SM_SCMI_PERM_ALL, \
|
||||
@@ -580,8 +584,6 @@
|
||||
.pinPerms[DEV_SM_PIN_SD3_DATA3] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_UART1_RXD] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_UART1_TXD] = SM_SCMI_PERM_ALL, \
|
||||
- .pinPerms[DEV_SM_PIN_UART2_RXD] = SM_SCMI_PERM_ALL, \
|
||||
- .pinPerms[DEV_SM_PIN_UART2_TXD] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_XSPI1_DATA0] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_XSPI1_DATA1] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_XSPI1_DATA2] = SM_SCMI_PERM_ALL, \
|
||||
diff --git a/configs/ccimx95dvk/config_trdc.h b/configs/ccimx95dvk/config_trdc.h
|
||||
index 12ebbc61ca64..5758f62bdef5 100644
|
||||
--- a/configs/ccimx95dvk/config_trdc.h
|
||||
+++ b/configs/ccimx95dvk/config_trdc.h
|
||||
@@ -108,7 +108,7 @@
|
||||
SM_CFG_W1(0x00010450U), 0x30003330U, \
|
||||
SM_CFG_W1(0x00010454U), 0x03333033U, \
|
||||
SM_CFG_W1(0x00010458U), 0x00030000U, \
|
||||
- SM_CFG_W1(0x0001045cU), 0x33330000U, \
|
||||
+ SM_CFG_W1(0x0001045cU), 0x33330030U, \
|
||||
SM_CFG_W1(0x00010460U), 0x33333333U, \
|
||||
SM_CFG_W1(0x00010464U), 0x30000003U, \
|
||||
SM_CFG_W1(0x00010468U), 0x33330030U, \
|
||||
@@ -123,7 +123,7 @@
|
||||
SM_CFG_W1(0x00010650U), 0x09000309U, \
|
||||
SM_CFG_W1(0x00010654U), 0x0000C900U, \
|
||||
SM_CFG_W1(0x00010658U), 0x99909900U, \
|
||||
- SM_CFG_W1(0x0001065cU), 0x00009999U, \
|
||||
+ SM_CFG_W1(0x0001065cU), 0x00009909U, \
|
||||
SM_CFG_W1(0x00010668U), 0x00009900U, \
|
||||
SM_CFG_W1(0x0001066cU), 0x90909000U, \
|
||||
SM_CFG_W1(0x00010670U), 0x00009000U, \
|
||||
@@ -1151,7 +1151,6 @@
|
||||
SM_CFG_Z1(0x00010260U), \
|
||||
SM_CFG_W1(0x00010270U), 0x00000090U, \
|
||||
SM_CFG_W1(0x00010460U), 0x33000300U, \
|
||||
- SM_CFG_W1(0x00010474U), 0x00000030U, \
|
||||
SM_CFG_W1(0x00010478U), 0x33300000U, \
|
||||
SM_CFG_W1(0x0001047cU), 0x00003333U, \
|
||||
SM_CFG_W1(0x000105d0U), 0x33333333U, \
|
||||
@@ -1170,7 +1169,7 @@
|
||||
SM_CFG_W1(0x00010668U), 0x99999999U, \
|
||||
SM_CFG_W1(0x0001066cU), 0x09999999U, \
|
||||
SM_CFG_W1(0x00010670U), 0x99900009U, \
|
||||
- SM_CFG_W1(0x00010674U), 0x99999909U, \
|
||||
+ SM_CFG_W1(0x00010674U), 0x99999999U, \
|
||||
SM_CFG_W1(0x00010678U), 0x00009999U, \
|
||||
SM_CFG_W1(0x0001067cU), 0x00990000U, \
|
||||
SM_CFG_W1(0x00010780U), 0x00000009U, \
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
From: Hector Palacios <hector.palacios@digi.com>
|
||||
Date: Wed, 14 Jan 2026 14:05:57 +0100
|
||||
Subject: [PATCH 14/14] ccimx95dvk: PF09 PMIC interrupt moved to
|
||||
PDM_BIT_STREAM1
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
|
||||
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9915
|
||||
---
|
||||
boards/ccimx95dvk/pin_mux.c | 5 +++++
|
||||
configs/ccimx95dvk.cfg | 2 +-
|
||||
configs/ccimx95dvk/config_scmi.h | 1 -
|
||||
3 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/boards/ccimx95dvk/pin_mux.c b/boards/ccimx95dvk/pin_mux.c
|
||||
index 6f5bb4a51c4c..41ad97dd4e75 100755
|
||||
--- a/boards/ccimx95dvk/pin_mux.c
|
||||
+++ b/boards/ccimx95dvk/pin_mux.c
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2023, 2025 NXP
|
||||
+ * Copyright 2025, 2026 Digi International Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
@@ -57,5 +58,9 @@ void BOARD_InitPins(void)
|
||||
IOMUXC_SetPinConfig(IOMUXC_PAD_I2C2_SDA__LPI2C2_SDA, IOMUXC_PAD_DSE(0xFU)
|
||||
| IOMUXC_PAD_FSEL1(0x3U) | IOMUXC_PAD_PU(0x1U) | IOMUXC_PAD_OD(0x1U));
|
||||
#endif
|
||||
+
|
||||
+ /* Configure GPIO1-10 (INT from PF09) */
|
||||
+ IOMUXC_SetPinMux(IOMUXC_PAD_PDM_BIT_STREAM1__GPIO1_IO_BIT10, 0U);
|
||||
+ IOMUXC_SetPinConfig(IOMUXC_PAD_PDM_BIT_STREAM1__GPIO1_IO_BIT10, 0U);
|
||||
}
|
||||
|
||||
diff --git a/configs/ccimx95dvk.cfg b/configs/ccimx95dvk.cfg
|
||||
index 53444e785270..ba7cc9e0499a 100755
|
||||
--- a/configs/ccimx95dvk.cfg
|
||||
+++ b/configs/ccimx95dvk.cfg
|
||||
@@ -306,6 +306,7 @@ L_STCU_NPUMIX OWNER
|
||||
PIN_FCCU_ERR0 OWNER
|
||||
PIN_I2C1_SCL OWNER
|
||||
PIN_I2C1_SDA OWNER
|
||||
+PIN_PDM_BIT_STREAM1 OWNER # PF09_INT_B
|
||||
PIN_UART2_RXD OWNER
|
||||
PIN_UART2_TXD OWNER
|
||||
PIN_WDOG_ANY OWNER
|
||||
@@ -955,7 +956,6 @@ PIN_GPIO_IO37 OWNER
|
||||
PIN_I2C2_SCL OWNER
|
||||
PIN_I2C2_SDA OWNER
|
||||
PIN_PDM_BIT_STREAM0 OWNER
|
||||
-PIN_PDM_BIT_STREAM1 OWNER
|
||||
PIN_PDM_CLK OWNER
|
||||
PIN_SAI1_RXD0 OWNER
|
||||
PIN_SAI1_TXC OWNER
|
||||
diff --git a/configs/ccimx95dvk/config_scmi.h b/configs/ccimx95dvk/config_scmi.h
|
||||
index 3b6899a7b9c8..20168f81df9d 100644
|
||||
--- a/configs/ccimx95dvk/config_scmi.h
|
||||
+++ b/configs/ccimx95dvk/config_scmi.h
|
||||
@@ -550,7 +550,6 @@
|
||||
.pinPerms[DEV_SM_PIN_I2C2_SCL] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_I2C2_SDA] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_PDM_BIT_STREAM0] = SM_SCMI_PERM_ALL, \
|
||||
- .pinPerms[DEV_SM_PIN_PDM_BIT_STREAM1] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_PDM_CLK] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_SAI1_RXD0] = SM_SCMI_PERM_ALL, \
|
||||
.pinPerms[DEV_SM_PIN_SAI1_TXC] = SM_SCMI_PERM_ALL, \
|
||||
|
|
@ -1,23 +1,13 @@
|
|||
# Copyright (C) 2025, 2026, Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
# Select internal or Github imx-system-manager repo
|
||||
IMX_SYSTEM_MANAGER_URI_STASH = "${DIGI_MTK_GIT}/emp/imx-sm.git;protocol=ssh"
|
||||
IMX_SYSTEM_MANAGER_URI_GITHUB = "${DIGI_GITHUB_GIT}/imx-sm.git;protocol=https"
|
||||
IMX_SYSTEM_MANAGER_SRC:dey = "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1', '${IMX_SYSTEM_MANAGER_URI_STASH}', '${IMX_SYSTEM_MANAGER_URI_GITHUB}', d)}"
|
||||
|
||||
SRC_URI:append:dey = " \
|
||||
file://0001-ccimx95dvk-add-new-platform-config-and-board.patch \
|
||||
file://0002-ccimx95dvk-configure-board-and-switch-debug-UART-to-.patch \
|
||||
file://0003-ccimx95dvk-disable-PCAL6408A-expander-and-move-GPIO1.patch \
|
||||
file://0004-ccimx95dvk-move-resources-from-M7-to-A55.patch \
|
||||
file://0005-ccimx95dvk-move-pads-to-non-secure-A55.patch \
|
||||
file://0006-ccimx95dvk-move-CAN1-to-be-used-by-A55.patch \
|
||||
file://0007-ccimx95dvk-remove-PCAL6408A-IO-expander-from-EVK.patch \
|
||||
file://0008-ccimx95dvk-remove-PCA2123-RTC-from-EVK.patch \
|
||||
file://0009-ccimx95-change-names-of-voltage-regulators.patch \
|
||||
file://0010-ccimx95dvk-enable-full-access-to-certain-regulators-.patch \
|
||||
file://0011-components-pf09-reduce-LDOs-step-to-50mV.patch \
|
||||
file://0012-ccimx95dvk-remove-access-to-VDD_3V3-and-VDD_1V8-from.patch \
|
||||
file://0013-ccimx95dvk-change-SM-console-from-LPUART7-to-LPUART2.patch \
|
||||
file://0014-ccimx95dvk-PF09-PMIC-interrupt-moved-to-PDM_BIT_STRE.patch \
|
||||
"
|
||||
SRCBRANCH:dey = "dey/scarthgap/lf-6.6.52-2.2.2"
|
||||
# NXP's 'lf-6.6.52_2.2.2' release + patches
|
||||
SRCREV:dey = "ecd89d0bc35687c7e1e19b47cf6bcdefc3a3fe68"
|
||||
|
||||
# Disable debug monitor by default
|
||||
PACKAGECONFIG ??= "m0"
|
||||
|
|
|
|||
|
|
@ -15,18 +15,6 @@ SRC_URI:append:dey = " \
|
|||
file://0008-imx95-soc.mak-capture-commands-output-into-a-log-fil.patch \
|
||||
"
|
||||
|
||||
IMX_CORTEXM_DEMOS = ""
|
||||
IMX_CORTEXM_DEMOS:ccimx95 = "imx-m7-demos:do_deploy"
|
||||
|
||||
CORTEXM_DEFAULT_IMAGE = ""
|
||||
CORTEXM_DEFAULT_IMAGE:ccimx95 = "imx95-19x19-evk_m7_TCM_power_mode_switch.bin"
|
||||
|
||||
do_compile[depends] += "${IMX_CORTEXM_DEMOS}"
|
||||
|
||||
compile_mx95:append:ccimx95() {
|
||||
cp ${DEPLOY_DIR_IMAGE}/mcore-demos/${CORTEXM_DEFAULT_IMAGE} ${BOOT_STAGING}/m7_image.bin
|
||||
}
|
||||
|
||||
# Revert compile_mx8m() to how it was in kirkstone branch of meta-freescale,
|
||||
# otherwise, a dead symlink is created in place of the dtb
|
||||
compile_mx8m() {
|
||||
|
|
@ -126,10 +114,6 @@ generate_symlinks() {
|
|||
ln -sf imx-boot-${MACHINE}.bin-${IMAGE_IMXBOOT_TARGET} ${DEPLOYDIR}/imx-boot
|
||||
}
|
||||
|
||||
deploy_mx95:append:ccimx95() {
|
||||
install -m 0644 ${DEPLOY_DIR_IMAGE}/mcore-demos/${CORTEXM_DEFAULT_IMAGE} ${DEPLOYDIR}/${BOOT_TOOLS}
|
||||
}
|
||||
|
||||
do_deploy:append:ccimx8m() {
|
||||
generate_symlinks
|
||||
for target in ${IMXBOOT_TARGETS}; do
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ TFA_URI_STASH = "${DIGI_MTK_GIT}/emp/arm-trusted-firmware.git;protocol=ssh"
|
|||
TFA_URI_GITHUB = "${DIGI_GITHUB_GIT}/arm-trusted-firmware.git;protocol=https"
|
||||
TFA_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${TFA_URI_STASH}', '${TFA_URI_GITHUB}', d)}"
|
||||
|
||||
SRCBRANCH = "v2.10/stm32mp/master"
|
||||
SRCBRANCH = "v2.10/stm32mp/maint"
|
||||
SRCREV = "${AUTOREV}"
|
||||
|
||||
SRC_URI = " \
|
||||
|
|
@ -212,7 +212,7 @@ do_compile() {
|
|||
# The encryption key is already available in hexadecimal format, so just extract it from file
|
||||
encrypt_key="$(cat ${encrypt_key})"
|
||||
else
|
||||
encrypt_key="$(hexdump -e '/1 "%02x"' ${encrypt_key})"
|
||||
encrypt_key="$(hexdump -ve '/1 "%02x"' "${encrypt_key}")"
|
||||
fi
|
||||
encrypt_extra_opt="ENC_KEY=${encrypt_key}"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
From: Javier Viguera <javier.viguera@digi.com>
|
||||
Date: Tue, 12 May 2026 14:09:40 +0200
|
||||
Subject: [PATCH] create_st_fip_binary: use verbose hexdump for encryption key
|
||||
|
||||
hexdump may collapse repeated binary data into '*'. This corrupts the
|
||||
hex string passed to encrypt_fw and makes the key size invalid. Pass -v
|
||||
so the full encryption key is always emitted.
|
||||
|
||||
Fix error:
|
||||
|
||||
CMD> encrypt_fw \
|
||||
--key 13eb911dfcc316b1b99bbbbf10a7000c3055e863*
|
||||
166d3c8c9cd6f888b720a9 \
|
||||
--nonce 1234567890abcdef12345678 \
|
||||
--fw-enc-status 0 \
|
||||
--in <abs-path>/recipe-sysroot/optee/tee-header_v2-ccmp25-dvk-optee.bin \
|
||||
--out <abs-path>/recipe-sysroot/optee/tee-header_v2-ccmp25-dvk-optee_Encrypted.bin
|
||||
ERROR: Unsupported key size: 41
|
||||
|
||||
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||
---
|
||||
create_st_fip_binary.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/create_st_fip_binary.sh b/create_st_fip_binary.sh
|
||||
index 8664b1b94093..b491c4e59356 100755
|
||||
--- a/create_st_fip_binary.sh
|
||||
+++ b/create_st_fip_binary.sh
|
||||
@@ -757,7 +757,7 @@ else
|
||||
# The encryption key is already available in hexadecimal format, so just extract it from file
|
||||
encrypt_key="$(cat ${encrypt_key})"
|
||||
else
|
||||
- encrypt_key="$(hexdump -e '/1 "%02x"' ${encrypt_key})"
|
||||
+ encrypt_key="$(hexdump -ve '/1 "%02x"' ${encrypt_key})"
|
||||
fi
|
||||
|
||||
if [ $USE_BL32 -eq 0 ]; then
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Copyright (C) 2026, Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SRC_URI:append = " \
|
||||
file://0001-create_st_fip_binary-use-verbose-hexdump-for-encrypt.patch;patchdir=${WORKDIR} \
|
||||
"
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
#
|
||||
# Copyright (C) 2026, Digi International Inc.
|
||||
#
|
||||
|
||||
do_install() {
|
||||
# Install assemble and signing firmware script
|
||||
install -d ${D}${bindir}
|
||||
install -m 755 ${WORKDIR}/scripts/create_st_m33fw_binary.sh ${D}${bindir}
|
||||
install -m 755 ${WORKDIR}/scripts/st_m33td_firmware_signature.sh ${D}${bindir}
|
||||
# Update version
|
||||
sed 's/^SIGN_VERSION=.*$/SIGN_VERSION='"${TF_M_VERSION}"'/' -i ${D}${bindir}/st_m33td_firmware_signature.sh
|
||||
# Install default MCUBOOT keys
|
||||
install -d ${D}${datadir}/tf-m/keys
|
||||
install -m 0644 ${S}/bl2/ext/mcuboot/root-EC-P256.pem ${D}${datadir}/tf-m/keys/root-ec-p256.pem
|
||||
install -m 0644 ${S}/bl2/ext/mcuboot/root-EC-P256_1.pem ${D}${datadir}/tf-m/keys/root-ec-p256_1.pem
|
||||
# Install all python scripts needed for assemble and sign
|
||||
install -d ${D}${datadir}/tf-m/scripts
|
||||
install -m 0755 ${S}/bl2/ext/mcuboot/scripts/assemble.py ${D}${datadir}/tf-m/scripts
|
||||
install -m 0755 ${S}/bl2/ext/mcuboot/scripts/macro_parser.py ${D}${datadir}/tf-m/scripts
|
||||
install -d ${D}${datadir}/tf-m/scripts/wrapper
|
||||
install -m 0755 ${S}/bl2/ext/mcuboot/scripts/wrapper/wrapper.py ${D}${datadir}/tf-m/scripts/wrapper
|
||||
# Install imgtool suite
|
||||
install -m 0755 ${WORKDIR}/${TF_M_EXTERNAL_SOURCES_ROOTDIR}/${TF_M_PATH_MCUBOOT}/scripts/imgtool.py ${D}${datadir}/tf-m/scripts/wrapper
|
||||
install -d ${D}${datadir}/tf-m/scripts/wrapper/imgtool
|
||||
cp -rf ${WORKDIR}/${TF_M_EXTERNAL_SOURCES_ROOTDIR}/${TF_M_PATH_MCUBOOT}/scripts/imgtool/* ${D}${datadir}/tf-m/scripts/wrapper/imgtool/
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
#
|
||||
# Copyright (C) 2026, Digi International Inc.
|
||||
#
|
||||
|
||||
# Inherit custom DIGI sign class to skip signing tool and key parsing restrictions
|
||||
inherit sign-stm32mp-digi
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
#
|
||||
# Copyright (C) 2026, Digi International Inc.
|
||||
#
|
||||
|
||||
# Inherit custom DIGI sign class to skip signing tool and key parsing restrictions
|
||||
inherit sign-stm32mp-digi
|
||||
|
|
@ -1,10 +1,13 @@
|
|||
# Copyright (C) 2026, Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
WESTON_BACKGROUND_PNG ?= "${WORKDIR}/background.png"
|
||||
|
||||
DEPENDS += "${@oe.utils.conditional('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}"
|
||||
|
||||
SRC_URI += " \
|
||||
file://weston.ini \
|
||||
file://digi_background.png \
|
||||
file://background.png \
|
||||
file://weston-launch.service \
|
||||
file://weston-checkgpu.service \
|
||||
file://weston_profile.sh \
|
||||
|
|
@ -42,7 +45,7 @@ do_install() {
|
|||
|
||||
install -m 0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}/xdg/weston
|
||||
|
||||
install -m 0644 ${WORKDIR}/digi_background.png ${D}${datadir}/weston/backgrounds/digi_background.png
|
||||
install -m 0644 "${WESTON_BACKGROUND_PNG}" ${D}${datadir}/weston/backgrounds/background.png
|
||||
printf "\n[launcher]\nicon=${datadir}/weston/terminal.png\npath=${bindir}/weston-terminal\n" >> ${D}${sysconfdir}/xdg/weston/weston.ini
|
||||
|
||||
install -d ${D}${systemd_system_unitdir} ${D}${sbindir}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
|
@ -13,7 +13,7 @@ remoting=remoting-plugin.so
|
|||
keymap_layout=us
|
||||
|
||||
[shell]
|
||||
background-image=/usr/share/weston/backgrounds/digi_background.png
|
||||
background-image=/usr/share/weston/backgrounds/background.png
|
||||
background-type=scale-crop
|
||||
|
||||
# HDMI connector
|
||||
|
|
|
|||
|
|
@ -1,4 +1,38 @@
|
|||
if [ "$USER" == "root" ]; then
|
||||
find_wayland_display()
|
||||
{
|
||||
if [ -e "$XDG_RUNTIME_DIR/wayland-0" ]; then
|
||||
export WAYLAND_DISPLAY=wayland-0
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -e "$XDG_RUNTIME_DIR/wayland-1" ]; then
|
||||
export WAYLAND_DISPLAY=wayland-1
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
has_connected_drm_display()
|
||||
{
|
||||
local drm_status
|
||||
local drm_status_found=false
|
||||
local drm_state
|
||||
|
||||
for drm_status in /sys/class/drm/card*-*/status; do
|
||||
[ -e "$drm_status" ] || continue
|
||||
|
||||
drm_status_found=true
|
||||
read -r drm_state < "$drm_status" || continue
|
||||
if [ "$drm_state" = "connected" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
[ "$drm_status_found" = "false" ]
|
||||
}
|
||||
|
||||
if [ "$USER" = "root" ]; then
|
||||
export XDG_RUNTIME_DIR=/run/user/`id -u root`
|
||||
|
||||
export ELM_ENGINE=wayland_shm
|
||||
|
|
@ -8,20 +42,16 @@ if [ "$USER" == "root" ]; then
|
|||
export PULSE_RUNTIME_PATH=/run/user/`id -u root`/pulse
|
||||
export USE_PLAYBIN3=1
|
||||
|
||||
# Wait for 10 seconds until a Wayland socket is available
|
||||
for i in {1..10}; do
|
||||
if [ -e $XDG_RUNTIME_DIR/wayland-0 ]; then
|
||||
export WAYLAND_DISPLAY=wayland-0
|
||||
break
|
||||
elif [ -e $XDG_RUNTIME_DIR/wayland-1 ]; then
|
||||
export WAYLAND_DISPLAY=wayland-1
|
||||
break
|
||||
else
|
||||
if ! find_wayland_display && has_connected_drm_display; then
|
||||
# Weston may still be creating its socket after the login prompt
|
||||
# appears, but do not delay headless serial logins.
|
||||
for i in {1..10}; do
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
echo "WARNING: No Wayland socket found"
|
||||
find_wayland_display && break
|
||||
done
|
||||
fi
|
||||
[ -z "$WAYLAND_DISPLAY" ] && echo "WARNING: No Wayland socket found"
|
||||
fi
|
||||
|
||||
unset -f find_wayland_display
|
||||
unset -f has_connected_drm_display
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
From: Haihua Hu <jared.hu@nxp.com>
|
||||
Date: Wed, 3 Aug 2022 16:34:47 +0800
|
||||
Subject: [PATCH] Revert "libweston/libinput-device: Enable/Set pointer
|
||||
capabilities only on pointer movement"
|
||||
|
||||
This reverts commit e825fe389ebd63470028abd828019840c1170a03.
|
||||
|
||||
This commit will cause waylandsink cannot register pointer seat.
|
||||
As a result, mouse cannot move waylandsink window
|
||||
|
||||
(cherry picked from commit 3f8f336b5d2cf7ea7aa4e047d669d093fc46dfe6)
|
||||
|
||||
Upstream-Status: Inappropriate [DEY specific]
|
||||
---
|
||||
libweston/libinput-device.c | 29 +++++------------------------
|
||||
1 file changed, 5 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/libweston/libinput-device.c b/libweston/libinput-device.c
|
||||
index 4ea89de0..2d7a7d5f 100644
|
||||
--- a/libweston/libinput-device.c
|
||||
+++ b/libweston/libinput-device.c
|
||||
@@ -60,21 +60,6 @@ evdev_led_update(struct evdev_device *device, enum weston_led weston_leds)
|
||||
libinput_device_led_update(device->device, leds);
|
||||
}
|
||||
|
||||
-static void
|
||||
-ensure_pointer_capability(struct libinput_device *libinput_device)
|
||||
-{
|
||||
- struct evdev_device *device = libinput_device_get_user_data(libinput_device);
|
||||
- struct weston_seat *seat = device->seat;
|
||||
-
|
||||
- if (!libinput_device_has_capability(libinput_device, LIBINPUT_DEVICE_CAP_POINTER))
|
||||
- return;
|
||||
-
|
||||
- if (!(device->seat_caps & EVDEV_SEAT_POINTER)) {
|
||||
- weston_seat_init_pointer(seat);
|
||||
- device->seat_caps |= EVDEV_SEAT_POINTER;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
static void
|
||||
handle_keyboard_key(struct libinput_device *libinput_device,
|
||||
struct libinput_event_keyboard *keyboard_event)
|
||||
@@ -112,8 +97,6 @@ handle_pointer_motion(struct libinput_device *libinput_device,
|
||||
struct timespec time;
|
||||
double dx_unaccel, dy_unaccel;
|
||||
|
||||
- ensure_pointer_capability(libinput_device);
|
||||
-
|
||||
timespec_from_usec(&time,
|
||||
libinput_event_pointer_get_time_usec(pointer_event));
|
||||
dx_unaccel = libinput_event_pointer_get_dx_unaccelerated(pointer_event);
|
||||
@@ -146,8 +129,6 @@ handle_pointer_motion_absolute(
|
||||
double x, y;
|
||||
uint32_t width, height;
|
||||
|
||||
- ensure_pointer_capability(libinput_device);
|
||||
-
|
||||
if (!output)
|
||||
return false;
|
||||
|
||||
@@ -179,8 +160,6 @@ handle_pointer_button(struct libinput_device *libinput_device,
|
||||
libinput_event_pointer_get_seat_button_count(pointer_event);
|
||||
struct timespec time;
|
||||
|
||||
- ensure_pointer_capability(libinput_device);
|
||||
-
|
||||
/* Ignore button events that are not seat wide state changes. */
|
||||
if ((button_state == LIBINPUT_BUTTON_STATE_PRESSED &&
|
||||
seat_button_count != 1) ||
|
||||
@@ -260,8 +239,6 @@ handle_pointer_axis(struct libinput_device *libinput_device,
|
||||
bool has_vert, has_horiz;
|
||||
struct timespec time;
|
||||
|
||||
- ensure_pointer_capability(libinput_device);
|
||||
-
|
||||
has_vert = libinput_event_pointer_has_axis(pointer_event,
|
||||
LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL);
|
||||
has_horiz = libinput_event_pointer_has_axis(pointer_event,
|
||||
@@ -738,7 +715,11 @@ evdev_device_create(struct libinput_device *libinput_device,
|
||||
|
||||
device->seat_caps |= EVDEV_SEAT_KEYBOARD;
|
||||
}
|
||||
-
|
||||
+ if (libinput_device_has_capability(libinput_device,
|
||||
+ LIBINPUT_DEVICE_CAP_POINTER)) {
|
||||
+ weston_seat_init_pointer(seat);
|
||||
+ device->seat_caps |= EVDEV_SEAT_POINTER;
|
||||
+ }
|
||||
if (libinput_device_has_capability(libinput_device,
|
||||
LIBINPUT_DEVICE_CAP_TOUCH)) {
|
||||
if (weston_seat_init_touch(seat) < 0) {
|
||||
|
|
@ -5,6 +5,7 @@ SRC_URI:append:stm32mpcommon = " \
|
|||
file://0002-Disable-request-to-EGL_DRM_RENDER_NODE_FILE_EXT.patch \
|
||||
file://0003-Revert-compositor-improve-opacity-handling-for-scale.patch \
|
||||
file://0004-Revert-compositor-set-transform.opaque-for-surfaces-.patch \
|
||||
file://0005-Revert-libweston-libinput-device-Enable-Set-pointer-.patch \
|
||||
"
|
||||
|
||||
SIMPLECLIENTS="egl,touch,dmabuf-v4l,dmabuf-egl"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
# Copyright (C) 2024, STMicroelectronics - All Rights Reserved
|
||||
SUMMARY = "evision package to install AE an AWB algorithm libraries"
|
||||
LICENSE = "SLA0044"
|
||||
LIC_FILES_CHKSUM = "file://evision-libs/LICENSE;md5=91fc08c2e8dfcd4229b69819ef52827c"
|
||||
|
||||
NO_GENERIC_LICENSE[SLA0044] = "evision-libs/LICENSE"
|
||||
LICENSE:${PN} = "SLA0044"
|
||||
|
||||
SRC_URI = "file://evision-libs/;subdir=${BPN}-${PV} \
|
||||
"
|
||||
|
||||
COMPATIBLE_MACHINE = "^(aarch64)"
|
||||
|
||||
# Configure evision output library dir
|
||||
ST_SPECIFIC_OUTPUT_LIBDIR ??= "${libdir}"
|
||||
|
||||
EVISION_LDCONF ?= "evision.conf"
|
||||
|
||||
S = "${WORKDIR}/${BPN}-${PV}"
|
||||
|
||||
do_configure[noexec] = "1"
|
||||
|
||||
do_compile() {
|
||||
# Generate specific conf file if required
|
||||
if [ "${ST_SPECIFIC_OUTPUT_LIBDIR}" = "${libdir}" ]; then
|
||||
bbnote "evision output libdir is default one (${libdir})"
|
||||
echo "" > ${B}/${EVISION_LDCONF}
|
||||
else
|
||||
bbnote "evision output libdir set to ${ST_SPECIFIC_OUTPUT_LIBDIR}: generate specific conf file for ldconfig"
|
||||
echo ${ST_SPECIFIC_OUTPUT_LIBDIR} > ${B}/${EVISION_LDCONF}
|
||||
fi
|
||||
}
|
||||
|
||||
do_install() {
|
||||
# includes
|
||||
install -m 0755 -d ${D}${includedir}/evision
|
||||
install -m 0644 ${S}/evision-libs/*.h ${D}${includedir}/evision
|
||||
install -m 0644 ${S}/evision-libs/LICENSE ${D}${includedir}/evision
|
||||
|
||||
# libraries
|
||||
install -m 0755 -d ${D}${ST_SPECIFIC_OUTPUT_LIBDIR}
|
||||
install -m 0755 ${S}/evision-libs/*.so.* ${D}${ST_SPECIFIC_OUTPUT_LIBDIR}/
|
||||
|
||||
# ldconfig file
|
||||
if [ -s "${B}/${EVISION_LDCONF}" ]; then
|
||||
install -d ${D}${sysconfdir}/ld.so.conf.d/
|
||||
install -m 0644 "${B}/${EVISION_LDCONF}" ${D}${sysconfdir}/ld.so.conf.d/
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
PACKAGES += "\
|
||||
evision-ldconf \
|
||||
"
|
||||
FILES:${PN} = "${ST_SPECIFIC_OUTPUT_LIBDIR}/*.so.*"
|
||||
FILES:evision-ldconf = "${sysconfdir}/ld.so.conf.d/*"
|
||||
ALLOW_EMPTY:${evision-ldconf} = "1"
|
||||
|
||||
RDEPENDS:${PN} += "\
|
||||
evision-ldconf \
|
||||
"
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
SLA0044 Rev5/February 2018
|
||||
|
||||
Software license agreement
|
||||
|
||||
ULTIMATE LIBERTY SOFTWARE LICENSE AGREEMENT
|
||||
|
||||
BY INSTALLING, COPYING, DOWNLOADING, ACCESSING OR OTHERWISE USING THIS SOFTWARE
|
||||
OR ANY PART THEREOF (AND THE RELATED DOCUMENTATION) FROM STMICROELECTRONICS
|
||||
INTERNATIONAL N.V, SWISS BRANCH AND/OR ITS AFFILIATED COMPANIES
|
||||
(STMICROELECTRONICS), THE RECIPIENT, ON BEHALF OF HIMSELF OR HERSELF, OR ON
|
||||
BEHALF OF ANY ENTITY BY WHICH SUCH RECIPIENT IS EMPLOYED AND/OR ENGAGED AGREES
|
||||
TO BE BOUND BY THIS SOFTWARE LICENSE AGREEMENT.
|
||||
|
||||
Under STMicroelectronics’ intellectual property rights, the redistribution,
|
||||
reproduction and use in source and binary forms of the software or any part
|
||||
thereof, with or without modification, are permitted provided that the following
|
||||
conditions are met:
|
||||
|
||||
1. Redistribution of source code (modified or not) must retain any copyright
|
||||
notice, this list of conditions and the disclaimer set forth below as items 10
|
||||
and 11.
|
||||
|
||||
2. Redistributions in binary form, except as embedded into microcontroller or
|
||||
microprocessor device manufactured by or for STMicroelectronics or a software
|
||||
update for such device, must reproduce any copyright notice provided with the
|
||||
binary code, this list of conditions, and the disclaimer set forth below as
|
||||
items 10 and 11, in documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
3. Neither the name of STMicroelectronics nor the names of other contributors to
|
||||
this software may be used to endorse or promote products derived from this
|
||||
software or part thereof without specific written permission.
|
||||
|
||||
4. This software or any part thereof, including modifications and/or derivative
|
||||
works of this software, must be used and execute solely and exclusively on or in
|
||||
combination with a microcontroller or microprocessor device manufactured by or
|
||||
for STMicroelectronics.
|
||||
|
||||
5. No use, reproduction or redistribution of this software partially or totally
|
||||
may be done in any manner that would subject this software to any Open Source
|
||||
Terms. “Open Source Terms” shall mean any open source license which requires as
|
||||
part of distribution of software that the source code of such software is
|
||||
distributed therewith or otherwise made available, or open source license that
|
||||
substantially complies with the Open Source definition specified at
|
||||
www.opensource.org and any other comparable open source license such as for
|
||||
example GNU General Public License (GPL), Eclipse Public License (EPL), Apache
|
||||
Software License, BSD license or MIT license.
|
||||
|
||||
6. STMicroelectronics has no obligation to provide any maintenance, support or
|
||||
updates for the software.
|
||||
|
||||
7. The software is and will remain the exclusive property of STMicroelectronics
|
||||
and its licensors. The recipient will not take any action that jeopardizes
|
||||
STMicroelectronics and its licensors' proprietary rights or acquire any rights
|
||||
in the software, except the limited rights specified hereunder.
|
||||
|
||||
8. The recipient shall comply with all applicable laws and regulations affecting
|
||||
the use of the software or any part thereof including any applicable export
|
||||
control law or regulation.
|
||||
|
||||
9. Redistribution and use of this software or any part thereof other than as
|
||||
permitted under this license is void and will automatically terminate your
|
||||
rights under this license.
|
||||
|
||||
10. THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY RIGHTS, WHICH ARE
|
||||
DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT SHALL
|
||||
STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
11. EXCEPT AS EXPRESSLY PERMITTED HEREUNDER, NO LICENSE OR OTHER RIGHTS, WHETHER
|
||||
EXPRESS OR IMPLIED, ARE GRANTED UNDER ANY PATENT OR OTHER INTELLECTUAL PROPERTY
|
||||
RIGHTS OF STMICROELECTRONICS OR ANY THIRD PARTY.
|
||||
|
||||
|
|
@ -0,0 +1,548 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file evision-api-awb.h
|
||||
* @author LACROIX - Impulse
|
||||
* @brief eVision Auto White Balance algorithm public header.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2023 LACROIX - Impulse.
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef EVISION_API_AWB_H_
|
||||
#define EVISION_API_AWB_H_
|
||||
|
||||
/************************************************************************
|
||||
* Includes
|
||||
************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "evision-api-utils.h"
|
||||
|
||||
/************************************************************************
|
||||
* Public Defines
|
||||
************************************************************************/
|
||||
|
||||
/*! @brief Maximum number of supported sensor configurations. */
|
||||
#define EVISION_AWB_MAX_SENSOR_CONFIGS (2u)
|
||||
/*! @brief Default sensor configuration index. */
|
||||
#define EVISION_AWB_DEFAULT_SENSOR_CONFIG_INDEX (0u)
|
||||
/*! @brief Default number of ROIs for AWB. */
|
||||
#define EVISION_AWB_DEFAULT_NB_ROI (1u)
|
||||
/*! @brief Maximum number of AWB profiles. */
|
||||
#define EVISION_AWB_MAX_PROFILE_COUNT (5u)
|
||||
|
||||
/*! @brief Number of CFA digital gains for AWB */
|
||||
#define EVISION_AWB_NB_DG_CFA_GAINS (4u)
|
||||
/*! @brief Number of rows / columns of CCM for AWB */
|
||||
#define EVISION_AWB_CCM_SIZE (3u)
|
||||
/*! @brief Size of estimated color temperatures history. Restrictions: >= 3. */
|
||||
#define EVISION_AWB_HIST_SIZE (3u)
|
||||
/*! @brief Number of components for external measurements */
|
||||
#define EVISION_AWB_EXT_MEAS_SIZE (3u)
|
||||
|
||||
/*! @brief Flag value to indicate the use of profile selection based AWB operation mode. */
|
||||
#define EVISION_AWB_USE_PROFILE_SELECTION_AWB (1u)
|
||||
|
||||
/************************************************************************
|
||||
* Public Structures
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
* @typedef evision_awb_priv_param_runtime_t
|
||||
* @brief AWB algorithm private run-time parameters, member of #evision_awb_estimator_t.
|
||||
*
|
||||
* @struct evision_awb_priv_param_runtime
|
||||
* @brief AWB algorithm private run-time parameters, member of #evision_awb_estimator_t.
|
||||
*/
|
||||
typedef struct evision_awb_priv_param_runtime {
|
||||
/*! @brief
|
||||
* Current convergence speed. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Default value:</b> 1.0
|
||||
*/
|
||||
double speed_p_value;
|
||||
/*! @brief
|
||||
* Flag to indicate change in estimated AWB color temperature. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Default value:</b> 0
|
||||
*/
|
||||
uint8_t temp_changed;
|
||||
/*! @brief
|
||||
* AWB internal color temperature. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Default value:</b> -1.0
|
||||
*/
|
||||
double int_temp;
|
||||
/*! @brief
|
||||
* T value parameter. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Default value:</b> 0.1 */
|
||||
double t_value;
|
||||
|
||||
/*! @brief
|
||||
* Flag to indicate the estimator has entered an oscillatory state. <br/>
|
||||
* <b>Restrictions:</b> >=0 AND < #EVISION_AWB_HIST_SIZE
|
||||
*/
|
||||
uint8_t oscillation;
|
||||
/*! @brief
|
||||
* History of selected profile color temperatures. <br/>
|
||||
*/
|
||||
double hist_temp_current[EVISION_AWB_HIST_SIZE];
|
||||
/*! @brief
|
||||
* History of computed color temperatures. <br/>
|
||||
*/
|
||||
double hist_temp_estim[EVISION_AWB_HIST_SIZE];
|
||||
/*! @brief
|
||||
* History of computed chromaticity stats. <br/>
|
||||
*/
|
||||
double hist_stats[EVISION_AWB_HIST_SIZE][2u];
|
||||
/*! @brief
|
||||
* Counter for the current number of items in history. <br/>
|
||||
* <b>Restrictions:</b> >=0 AND < #EVISION_AWB_HIST_SIZE
|
||||
*/
|
||||
uint16_t cnt_hist;
|
||||
|
||||
} evision_awb_priv_param_runtime_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_awb_profile_t
|
||||
* @brief AWB algorithm profile definition.
|
||||
*
|
||||
* @struct evision_awb_profile
|
||||
* @brief AWB algorithm profile definition.
|
||||
*/
|
||||
typedef struct evision_awb_profile {
|
||||
/*! @brief
|
||||
* The color temperature of the illumination for which the profile is defined.
|
||||
* Positive value, typical range of values is between 2000 and 10000 °Kelvin. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter set during initialization, must not be changed during run-time. <br/>
|
||||
*/
|
||||
float color_temperature;
|
||||
/*! @brief
|
||||
* The sensor/ISP channel gains. <br/>
|
||||
* <b>Note:</b> The individual gain values are stored using the float type.
|
||||
* The gains can be stored as ratios or as floating point representations of integer values.
|
||||
* It is up to the user to convert the values to the format expected by the sensor/ISP.
|
||||
*/
|
||||
float gain_values[EVISION_AWB_NB_DG_CFA_GAINS];
|
||||
/*! @brief
|
||||
* The ISP color correction matrix coefficients. <br/>
|
||||
* <b>Note:</b> The individual color correction matrix coefficients are stored using the float type.
|
||||
* The coefficients can be stored as ratios or as a floating point representation of integer values.
|
||||
* It is up to the user to convert the values to the format expected by the sensor/ISP.
|
||||
*/
|
||||
float ccm_coefficients[EVISION_AWB_CCM_SIZE][EVISION_AWB_CCM_SIZE];
|
||||
/*! @brief
|
||||
* The ISP color correction matrix offset coefficients. <br/>
|
||||
* <b>Note:</b> The individual color correction matrix offset coefficients are stored using the float type.
|
||||
* The coefficients can be stored as ratios or as a floating point representation of integer values.
|
||||
* It is up to the user to convert the values to the format expected by the sensor/ISP.
|
||||
*/
|
||||
float ccm_offsets[EVISION_AWB_CCM_SIZE];
|
||||
} evision_awb_profile_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_awb_calib_data_t
|
||||
* @brief Sensor specific AWB calibration data, member of #evision_awb_estimator_t.
|
||||
*
|
||||
* @struct evision_awb_calib_data
|
||||
* @brief Sensor specific AWB calibration data, member of #evision_awb_estimator_t.
|
||||
*
|
||||
* Contains sensor specific AWB calibration data for accurate color rendering.
|
||||
* Support for both continious AWB and profile selection based AWB.
|
||||
*
|
||||
*/
|
||||
typedef struct evision_awb_calib_data {
|
||||
/*! @brief
|
||||
* Minimum supported color temperature. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter, positive valued. Set during estimator initialization.
|
||||
*/
|
||||
double min_temp;
|
||||
/*! @brief
|
||||
* Maximum supported color temperature. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter, positive valued and > #min_temp. Set during estimator initialization.
|
||||
*/
|
||||
double max_temp;
|
||||
|
||||
/* ##############################
|
||||
Parameters for continuous AWB
|
||||
*/
|
||||
|
||||
/* #################################
|
||||
Parameters for profile based AWB
|
||||
*/
|
||||
|
||||
/*! @brief
|
||||
* Counter for the actual number of specified profiles. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter set during initialization. Must not be changed during runtime.
|
||||
* Range of possible values: > 0 and < #EVISION_AWB_MAX_PROFILE_COUNT
|
||||
*/
|
||||
uint16_t profiles_count;
|
||||
|
||||
/*! @brief
|
||||
* Array containing the color temperatures of the defined profiles. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter set during initialization. Must not be changed during runtime.
|
||||
*/
|
||||
float temperatures[EVISION_AWB_MAX_PROFILE_COUNT];
|
||||
|
||||
/*! @brief
|
||||
* Array containing the decision thresholds between the different profiles for profile selection. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter set during initialization. Must not be changed during runtime.
|
||||
*/
|
||||
float decision_thresholds[EVISION_AWB_MAX_PROFILE_COUNT - 1];
|
||||
|
||||
/*! @brief
|
||||
* Array containing the different AWB profiles. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter set during initialization. Must not be changed during runtime.
|
||||
*/
|
||||
evision_awb_profile_t profiles[EVISION_AWB_MAX_PROFILE_COUNT];
|
||||
|
||||
/*! @brief
|
||||
* Pointer to the active profile. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter updated during runtime. Code outside of the library must not alter its value.
|
||||
*/
|
||||
evision_awb_profile_t* active_profile;
|
||||
|
||||
} evision_awb_calib_data_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_awb_hyper_param_t
|
||||
* @brief AWB algorithm hyper-parameters, member of #evision_awb_estimator_t.
|
||||
*
|
||||
* @struct evision_awb_hyper_param
|
||||
* @brief AWB algorithm hyper-parameters, member of #evision_awb_estimator_t.
|
||||
*
|
||||
*/
|
||||
typedef struct evision_awb_hyper_param {
|
||||
/*! @brief
|
||||
* Ratio of pixels to be processed for AWB when using the SW statistics extraction block, direct impact on processing time.
|
||||
* (Ex. A value of 2 will process 1 pixel every 2*2 pixel block in the entire ROI). <br/>
|
||||
* <b>Restrictions:</b> >= 1 AND < image_size. <br/>
|
||||
* <b>Default value:</b> 1 */
|
||||
uint16_t awb_process_ratio;
|
||||
|
||||
/*! @brief
|
||||
* AWB low luminance threshold value when using the SW statistics extraction block.
|
||||
* Skip pixel from AWB stats if luminance value below the threshold. <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < #y_thresh_high. <br/>
|
||||
* <b>Default value:</b> 0 */
|
||||
double y_thresh_low;
|
||||
/*! @brief
|
||||
* AWB high luminance threshold value when using the SW statistics extraction block.
|
||||
* Skip pixel from AWB stats if luminance value above the threshold. <br/>
|
||||
* <b>Restrictions:</b> > #y_thresh_low AND <= 255. <br/>
|
||||
* <b>Default value:</b> 0 */
|
||||
double y_thresh_high;
|
||||
|
||||
/*! @brief
|
||||
* Convergence speed increment. <br/>
|
||||
* <b>Restrictions:</b> > 0 AND < #speed_p_max. <br/>
|
||||
* <b>Default value:</b> 0.1 */
|
||||
double speed_p_increment;
|
||||
/*! @brief
|
||||
* Minimum convergence speed. <br/>
|
||||
* <b>Restrictions:</b> > 0 AND < #speed_p_max. <br/>
|
||||
* <b>Default value:</b> 1.0 */
|
||||
double speed_p_min;
|
||||
/*! @brief
|
||||
* Maximum convergence speed. <br/>
|
||||
* <b>Restrictions:</b> > #speed_p_min. <br/>
|
||||
* <b>Default value:</b> 3.0 */
|
||||
double speed_p_max;
|
||||
|
||||
/*! @brief
|
||||
* AWB color temperature estimation precision. <br/>
|
||||
* <b>Default value:</b> 1 °K */
|
||||
double precision_temp;
|
||||
|
||||
/*! @brief
|
||||
* Offset around the decision threshold for hysteresis based decision for profile selection. <br/>
|
||||
* <b>Default value:</b> 50 °K */
|
||||
float hysteresis_offset;
|
||||
|
||||
/*! @brief
|
||||
* Threshold of acceptable chromatic deviation around neutrality for convergence. <br/>
|
||||
* <b>Restrictions:</b> > 0. <br/>
|
||||
* <b>Default value:</b> 1.0. */
|
||||
float conv_criterion;
|
||||
|
||||
/*! @brief
|
||||
* Threshold of acceptable chromatic deviation along the green-magenta axis.
|
||||
* Inhibit profile switch if the green or magenta component is higher than this threshold.<br/>
|
||||
* <b>Restrictions:</b> > 0. <br/>
|
||||
* <b>Default value:</b> 0.5. */
|
||||
float gm_tolerance;
|
||||
|
||||
/*! @brief
|
||||
* Tolerance parameter to assess color temperature similarity: assume same colour temperature if absolute difference smaller than this value.
|
||||
* Parameter of the profile selection oscillation detection logic.<br/>
|
||||
* <b>Restrictions:</b> > 0 and >= 2 * #hysteresis_offset <br/>
|
||||
* <b>Default value:</b> 175 K. */
|
||||
float ct_tolerance;
|
||||
|
||||
/*! @brief
|
||||
* Tolerance parameter to assess similarity of AWB statistics: assume identical statistics if euclidean norm smaller than this value.
|
||||
* Parameter of the profile selection oscillation detection logic.<br/>
|
||||
* <b>Restrictions:</b> > 0. <br/>
|
||||
* <b>Default value:</b> 1.5. */
|
||||
float stats_tolerance;
|
||||
|
||||
} evision_awb_hyper_param_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_awb_estimator_t
|
||||
* @brief AWB estimator structure.
|
||||
*
|
||||
* @struct evision_awb_estimator
|
||||
* @brief AWB estimator structure.
|
||||
*
|
||||
* Set of all data structures required for the functioning of the AWB algorithm.
|
||||
*/
|
||||
typedef struct evision_awb_estimator {
|
||||
/*! @brief
|
||||
* Indicates the state of the AWB algorithm. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* Possible values: see #evision_state_t */
|
||||
evision_state_t state;
|
||||
|
||||
/*! @brief
|
||||
* Computed sensor/ISP gain values stored as float values.
|
||||
* To be applied to the sensor/ISP after conversion to the format expected by the sensor/ISP. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Note:</b> Storing values as floats provides the required flexibility to support different sensors and ISPs.
|
||||
* Converting the float value to the specific sensor/ISP format is to be performed at application level.
|
||||
*/
|
||||
float dg_cf[EVISION_AWB_NB_DG_CFA_GAINS];
|
||||
/*! @brief
|
||||
* Computed ISP CCM coefficients stored as float values.
|
||||
* To be applied to the sensor/ISP after conversion to the format expected by the sensor/ISP. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Note:</b> Storing values as floats provides the required flexibility to support different sensors and ISPs.
|
||||
* Converting the float value to the specific sensor/ISP format is to be performed at application level.
|
||||
*/
|
||||
float ccm[EVISION_AWB_CCM_SIZE][EVISION_AWB_CCM_SIZE];
|
||||
/*! @brief
|
||||
* Computed ISP CCM offset coefficients stored as float values.
|
||||
* To be applied to the sensor/ISP after conversion to the format expected by the sensor/ISP. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Note:</b> Storing values as floats provides the required flexibility to support different sensors and ISPs.
|
||||
* Converting the float value to the specific sensor/ISP format is to be performed at application level.
|
||||
*/
|
||||
float ccm_offsets[EVISION_AWB_CCM_SIZE];
|
||||
|
||||
/*! @brief
|
||||
* Estimated color temperature. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* <b>Default value:</b> 5000 °K
|
||||
*/
|
||||
double out_temp;
|
||||
|
||||
/*! @brief
|
||||
* Select the AWB operating mode. <br/>
|
||||
* <b>Restrictions:</b> Only profile selection AWB is currently supported.
|
||||
*/
|
||||
uint8_t awb_mode;
|
||||
|
||||
/*! @brief
|
||||
* The set of run-time variables. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameters.
|
||||
* Must not be changed! */
|
||||
evision_awb_priv_param_runtime_t runtime_vars;
|
||||
|
||||
/*! @brief
|
||||
* AWB calibration data. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter.
|
||||
* Must be set during initialization using the provided functions!
|
||||
* Must not be changed during runtime! */
|
||||
evision_awb_calib_data_t calib_data;
|
||||
|
||||
/*! @brief
|
||||
* The set of AWB algorithm hyper-parameters. Set to default values during initialization! <br/>
|
||||
* As a general note, the hyper-parameters can be updated from their default values.
|
||||
* Care must be taken as in such a case there is no guarantee of proper functioning of the estimator! <br/>
|
||||
* <b>Restrictions:</b> Must not be updated during runtime!
|
||||
*/
|
||||
evision_awb_hyper_param_t hyper_params;
|
||||
|
||||
/*! @brief
|
||||
* Handler to output logs. <br/> */
|
||||
evision_api_log_callback log_cb;
|
||||
|
||||
} evision_awb_estimator_t;
|
||||
|
||||
/************************************************************************
|
||||
* Public Variables
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************************
|
||||
* Public Function Prototypes
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************************
|
||||
* Public Function Definitions
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
* @fn evision_awb_estimator_t* evision_api_awb_new(void);
|
||||
* @brief Create a new #evision_awb_estimator_t instance.
|
||||
*
|
||||
* @param[in] log_cb Callback to output logs.
|
||||
* @return The address of the created instance. NULL if it failed.
|
||||
*
|
||||
* This function performs dynamic memory allocations for the AWB estimator.
|
||||
* If the process fails, NULL is returned.
|
||||
*
|
||||
* @warning Allocates memory. Free memory with evision_api_awb_delete().
|
||||
*/
|
||||
evision_awb_estimator_t* evision_api_awb_new(evision_api_log_callback log_cb);
|
||||
|
||||
/**
|
||||
* @fn evision_return_t evision_api_awb_delete(evision_awb_estimator_t* self);
|
||||
* @brief Releases the memory allocated for the #evision_awb_estimator_t estimator instance.
|
||||
*
|
||||
* @param[in, out] self Concerned estimator instance address.
|
||||
* @return
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERR
|
||||
*
|
||||
* This function releases the memory allocated for an AWB estimator.
|
||||
* To be called when the estimator is no longer required.
|
||||
*/
|
||||
evision_return_t evision_api_awb_delete(evision_awb_estimator_t* self);
|
||||
|
||||
/**
|
||||
* @brief Set the parameters of the input AWB profile structure.
|
||||
*
|
||||
* @param[in, out] awb_profile AWB profile structure.
|
||||
* @param[in] color_temperature Color temperature of the illumination used to derive the profile parameters.
|
||||
* @param[in] cfa_gains Array containing the sensor/ISP channel gains.
|
||||
* @param[in] ccm_coefficients Matrix containing the color correction matrix coefficients.
|
||||
* @param[in] ccm_offsets Array containing the color correction matrix offsets.
|
||||
*
|
||||
*/
|
||||
void evision_api_awb_set_profile(evision_awb_profile_t* awb_profile,
|
||||
float color_temperature, const float cfa_gains[EVISION_AWB_NB_DG_CFA_GAINS],
|
||||
const float ccm_coefficients[EVISION_AWB_CCM_SIZE][EVISION_AWB_CCM_SIZE],
|
||||
const float ccm_offsets[EVISION_AWB_CCM_SIZE]);
|
||||
|
||||
/**
|
||||
* @brief Initialize the AWB profiles from user supplied data.
|
||||
* The library supports a variable number of profiles from a minimum of 1 up to a max number of #EVISION_AWB_MAX_PROFILE_COUNT.
|
||||
*
|
||||
* @param[in, out] self AWB estimator to be initialized.
|
||||
* @param[in] min_temp Minimum supported color temperature, positive value.
|
||||
* @param[in] max_temp Maximum supported color temperature, positive value and greater than min_temp.
|
||||
* @param[in] nb_profiles The number of defined profiles, between 1 and #EVISION_AWB_MAX_PROFILE_COUNT.
|
||||
* @param[in] decision_thresholds The decision thresholds between profiles in degrees Kelvin. A total of nb_profiles - 1 decision thresholds must be provided.
|
||||
* @param[in] awb_profiles Array of profile data, a total of nb_profiles must be provided.
|
||||
* @return
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERR
|
||||
* - EVISION_RET_FAILURE
|
||||
*
|
||||
* The min_temp parameter must be at most equal to the smallest color temperature of the defined profiles.
|
||||
* The max_temp parameter must be at least equal to the highest color temperature of the defined profiles.
|
||||
*
|
||||
* The profiles must be unique with respect to the color temperature of the illumination and must be specified in ascending order.
|
||||
* The choice of the actual number of profiles and the color temperature of the illumination for each profile is
|
||||
* generally dependent on the intended application and/or the available hardware equipement for generating the calibration data.
|
||||
* They must be complete in the sense that they must contain all the required fields (channel gains and color correction coefficients).
|
||||
* It is the user's responsibility to ensure that this is indeed the case.
|
||||
*
|
||||
* The decision thresholds must be unique and specified in ascending order.
|
||||
* Between each pair of adjacent profiles there must be exactly one decision threshold.
|
||||
* The exact strategy for choosing the decision thresholds between adjacent thresholds (e.g. halfway, 1/3 - 2/3, etc.)
|
||||
* is a tuning strategy which generally depends on the intended application and the choice of the profiles.
|
||||
*
|
||||
*/
|
||||
evision_return_t evision_api_awb_init_profiles(evision_awb_estimator_t* const self,
|
||||
double min_temp, double max_temp,
|
||||
uint16_t nb_profiles, float decision_thresholds[EVISION_AWB_MAX_PROFILE_COUNT - 1],
|
||||
evision_awb_profile_t awb_profiles[EVISION_AWB_MAX_PROFILE_COUNT]);
|
||||
|
||||
/**
|
||||
* @brief Run the AWB estimator on the full frame data.
|
||||
*
|
||||
* @param[in] self Concerned estimator instance address.
|
||||
* @param[in] image Current frame.
|
||||
* @param[in] use_ext_meas Flag to indicate the use of external AWB measurement: 0 - use internal AWB measurement, > 0 - use external measurement.
|
||||
* @param[in] ext_meas External measurement vector, contains average R, G, B values.
|
||||
* @return
|
||||
* - EVISION_RET_INVALID_VALUE
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERROR
|
||||
* - EVISION_RET_FAILURE
|
||||
*
|
||||
* Run an execution of the control loop on the current camera setup and frame.
|
||||
* The parameters #evision_awb_estimator_t.ccm and #evision_awb_estimator_t.dg_cf are updated to reflect the new CCMs and channel gains to apply.
|
||||
*
|
||||
* The software statistics extraction block, if used, will consider the entire data frame in the extraction of the AWB statistics.
|
||||
* The parameter #evision_awb_hyper_param_t.awb_process_ratio defines a ratio of pixels to check PER row and PER column.
|
||||
* It serves to reduce the computational requirements for AWB statistics extraction.
|
||||
* For example: a process_ratio of 4 means that for every 4 pixels per row and per column, (block of 16 pixels) only 1 is considered.
|
||||
* For small to moderate values, the loss in accuracy is mostly negligeable with non-negligeable improvements in computational time.
|
||||
*
|
||||
* The average R, G, and B values provided by the external \[hardware\] measurement block must be in the range \[0, 255\].
|
||||
* If the data is in a different range, the average values must be converted to this range before being passed as parameters to the function.
|
||||
*
|
||||
* The switch at run-time between using the internal software measurements and the external \[hardware\] measurements is not supported.
|
||||
*
|
||||
* <b>Raises:</b>
|
||||
* - EVISION_LOGSEV_INFO
|
||||
* - EVISION_LOGSEV_WARNING
|
||||
* - EVISION_LOGSEV_ERROR
|
||||
*/
|
||||
evision_return_t evision_api_awb_run_average(evision_awb_estimator_t* const self, const evision_image_t* const image,
|
||||
uint8_t use_ext_meas, double ext_meas[EVISION_AWB_EXT_MEAS_SIZE]);
|
||||
|
||||
#ifdef ALGO_SW_STATISTICS
|
||||
/**
|
||||
* @brief Run the AWB estimator on the selected ROIs.
|
||||
*
|
||||
* @param[in] self Concerned estimator instance address.
|
||||
* @param[in] image Current frame.
|
||||
* @param[in] roi_array Set of ROIs where the process will be applied, other regions will not be considered.
|
||||
* @param[in] use_ext_meas Flag to indicate the use of external AWB measurement: 0 - use internal AWB measurement, > 0 - use external measurement.
|
||||
* @param[in] ext_meas External measurement vector, contains average R, G, B values.
|
||||
* @return
|
||||
* - EVISION_RET_INVALID_VALUE
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERROR
|
||||
* - EVISION_RET_FAILURE
|
||||
*
|
||||
* Run an execution of the control loop on the current camera setup and frame.
|
||||
* The parameters #evision_awb_estimator_t.ccm and #evision_awb_estimator_t.dg_cf are updated to reflect the new CCMs and channel gains to apply.
|
||||
*
|
||||
* The software statistics extraction block, if used, will only considered the pixels within the specified ROIs.
|
||||
* The parameter #evision_awb_hyper_param_t.awb_process_ratio defines, within the ROI to check, a portion of pixels to check PER row and PER column.
|
||||
* It serves to reduce the computational requirements for AWB statistics extraction.
|
||||
* For example: a process_ratio of 4 means that for every 4 pixels per row and per column, (block of 16 pixels) only 1 is considered.
|
||||
* For small to moderate values, the loss in accuracy is mostly negligeable with non-negligeable improvements in computational time.
|
||||
*
|
||||
* The average R, G, and B values provided by the external \[hardware\] measurement block must be in the range \[0, 255\].
|
||||
* If the data is in a different range, the average values must be converted to this range before being passed as parameters to the function.
|
||||
*
|
||||
* The switch at run-time between using the internal software measurements and the external \[hardware\] measurements is not supported.
|
||||
*
|
||||
* <b>Raises:</b>
|
||||
* - EVISION_LOGSEV_INFO
|
||||
* - EVISION_LOGSEV_WARNING
|
||||
* - EVISION_LOGSEV_ERROR
|
||||
*/
|
||||
evision_return_t evision_api_awb_run_roi(evision_awb_estimator_t* const self,
|
||||
const evision_image_t* const image, const evision_roi_array_t* const roi_array,
|
||||
uint8_t use_ext_meas, double ext_meas[EVISION_AWB_EXT_MEAS_SIZE]);
|
||||
#endif
|
||||
|
||||
#endif /* EVISION_API_AWB_H_ */
|
||||
|
|
@ -0,0 +1,228 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file evision-api-st-ae.h
|
||||
* @author STMicroelectronics / LACROIX - Impulse
|
||||
* @brief ST eVision Auto Exposure algorithm public header.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* Copyright (c) 2023 LACROIX - Impulse.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef EVISION_API_ST_AE_H_
|
||||
#define EVISION_API_ST_AE_H_
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "evision-api-utils.h"
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
typedef struct evision_st_ae_hyper_param {
|
||||
/*! @brief
|
||||
* Target exposure to reach. <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < 256. <br/>
|
||||
* <b>Default value:</b> 56 */
|
||||
uint32_t target;
|
||||
/*! @brief
|
||||
* Max delta between lum stat and target in convergence region <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < 256. <br/>
|
||||
* <b>Default value:</b> 10 */
|
||||
uint32_t tolerance;
|
||||
/*! @brief
|
||||
* Factor applied to increment gain update <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < 1000. <br/>
|
||||
* <b>Default value:</b> 100 */
|
||||
uint32_t gain_increment_coeff;
|
||||
/*! @brief
|
||||
* Max delta value between lum stat and target in low delta region <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < 256. <br/>
|
||||
* <b>Default value:</b> 45 */
|
||||
uint32_t gain_low_delta;
|
||||
/*! @brief
|
||||
* Min delta value between lum stat and target in high delta region <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < 256. <br/>
|
||||
* <b>Default value:</b> 120 */
|
||||
uint32_t gain_high_delta;
|
||||
/*! @brief
|
||||
* Maximum gain update value in luminance low delta region <br/>
|
||||
* <b>Restrictions:</b> >= #gain_min AND < #gain_max. <br/>
|
||||
* <b>Default value:</b> 1500 */
|
||||
uint32_t gain_low_increment_max;
|
||||
/*! @brief
|
||||
* Maximum gain update value in luminance medium delta region <br/>
|
||||
* <b>Restrictions:</b> >= #gain_min AND < #gain_max. <br/>
|
||||
* <b>Default value:</b> 6000 */
|
||||
uint32_t gain_medium_increment_max;
|
||||
/*! @brief
|
||||
* Maximum gain update value in luminance high delta region <br/>
|
||||
* <b>Restrictions:</b> >= #gain_min AND < #gain_max. <br/>
|
||||
* <b>Default value:</b> 12000 */
|
||||
uint32_t gain_high_increment_max;
|
||||
/*! @brief
|
||||
* Factor applied to increment exposure <br/>
|
||||
* <b>Restrictions:</b> >= 0.0 AND < 1. <br/>
|
||||
* <b>Default value:</b> 0.020*/
|
||||
double exposure_up_ratio;
|
||||
/*! @brief
|
||||
* Minimum value accepted for exposure time. <br/>
|
||||
* <b>Restrictions:</b> >= 0.0 AND < 1. <br/>
|
||||
* <b>Default value:</b> 0.004*/
|
||||
double exposure_down_ratio;
|
||||
/*! @brief
|
||||
* Minimum value accepted for exposure time. <br/>
|
||||
* <b>Restrictions:</b> >= 0.0 AND < #exposure_max. <br/>
|
||||
* <b>Default value:</b> 0.0*/
|
||||
uint32_t exposure_min;
|
||||
/*! @brief
|
||||
* Maximum value accepted for exposure time. <br/>
|
||||
* <b>Restrictions:</b> > 0.0 AND >= #exposure_min. <br/>
|
||||
* <b>Default value:</b> 1.0 */
|
||||
uint32_t exposure_max;
|
||||
/*! @brief
|
||||
* Minimum possible gain value. <br/>
|
||||
* <b>Restrictions:</b> > 1 AND < #gain_max. <br/>
|
||||
* <b>Default value:</b> 1 */
|
||||
uint32_t gain_min;
|
||||
/*! @brief
|
||||
* Maximum possible gain value. <br/>
|
||||
* <b>Restrictions:</b> >= 1 AND > #gain_min. <br/>
|
||||
* <b>Default value:</b> 1 */
|
||||
uint32_t gain_max;
|
||||
/*! @brief
|
||||
* Luminance limit where we consider the frame as dark. <br/>
|
||||
* <b>Restrictions:</b> >= 0 AND < 256. <br/>
|
||||
* <b>Default value:</b> 5 */
|
||||
uint32_t dark_zone_lum_limit;
|
||||
/*! @brief
|
||||
* Compatible light frequency in Hz to avoid flickering effect. <br/>
|
||||
* <b>Restrictions:</b> >= 0 (None) AND < 256. <br/>
|
||||
* <b>Default value:</b> 0 (None) */
|
||||
uint32_t compat_freq;
|
||||
|
||||
} evision_st_ae_hyper_param_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_ae_estimator_t
|
||||
* @brief AE estimator structure.
|
||||
*
|
||||
* @struct evision_ae_estimator
|
||||
* @brief AE estimator structure.
|
||||
*
|
||||
* Set of all data structures required for the functioning of the AE algorithm.
|
||||
*/
|
||||
typedef struct evision_st_ae_process_t {
|
||||
/*! @brief
|
||||
* Indicates the state of the AE algorithm. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! <br/>
|
||||
* Possible values: see #evision_state_t */
|
||||
evision_state_t state;
|
||||
/*! @brief
|
||||
* Computed exposure time to apply to sensor. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! */
|
||||
uint32_t new_exposure;
|
||||
|
||||
/*! @brief
|
||||
* Computed gain value to apply to sensor. <br/>
|
||||
* <b>Restrictions:</b> Internal algorithm parameter. Must not be changed! */
|
||||
uint32_t new_gain;
|
||||
|
||||
/*! @brief
|
||||
* The set of AE algorithm hyper-parameters. Set to default values at creation! <br/>
|
||||
* #evision_ae_hyper_param_t.exposure_min, #evision_ae_hyper_param_t.exposure_max,
|
||||
* #evision_ae_hyper_param_t.gain_min and #evision_ae_hyper_param_t.gain_max hyper-parameters
|
||||
* <b> must be updated </b> before running the ae process with respect to the sensor in use. <br/>
|
||||
* As a general note, the hyper-parameters can be updated from their default values.
|
||||
* Care must be taken as in such a case there is no guarantee of proper functioning of the process! <br/>
|
||||
* <b>Restrictions:</b> Must not be updated during runtime!
|
||||
*/
|
||||
evision_st_ae_hyper_param_t hyper_params;
|
||||
|
||||
/*! @brief
|
||||
* Handler to output logs. <br/> */
|
||||
evision_api_log_callback log_cb;
|
||||
|
||||
} evision_st_ae_process_t;
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
#define EVISION_ST_AEC_LUM_TARGET 56 /* Default luminance value targeted by the AE algorithm */
|
||||
#define EVISION_ST_AEC_TOLERANCE 10 /* Max delta between lum stat and target in convergence region */
|
||||
#define EVISION_ST_AEC_GAIN_INCREMENT_COEFF 100 /* Factor applied to increment gain update */
|
||||
#define EVISION_ST_AEC_GAIN_LOW_DELTA 45 /* Max delta value between lum stat and target in low delta region */
|
||||
#define EVISION_ST_AEC_GAIN_HIGH_DELTA 120 /* Min delta value between lum stat and target in high delta region */
|
||||
#define EVISION_ST_AEC_GAIN_LOW_INC_MAX 1500 /* Maximum gain update value in luminance low delta region */
|
||||
#define EVISION_ST_AEC_GAIN_MEDIUM_INC_MAX 6000 /* Maximum gain update value in luminance medium delta region */
|
||||
#define EVISION_ST_AEC_GAIN_HIGH_INC_MAX 12000 /* Maximum gain update value in luminance high delta region */
|
||||
#define EVISION_ST_AEC_EXPOSURE_UP_RATIO 0.020F /* Factor applied to increment exposure */
|
||||
#define EVISION_ST_AEC_EXPOSURE_DOWN_RATIO 0.004F /* Factor applied to decrement exposure */
|
||||
#define EVISION_ST_AEC_DARKZONE_LUM_LIMIT 5 /* Default value for dark zone luminance limit */
|
||||
#define EVISION_ST_DEFAULT_EXPOSURE_MIN 0 /* Default value for exposure min */
|
||||
#define EVISION_ST_DEFAULT_EXPOSURE_MAX 33000 /* Default value for expsoure max */
|
||||
#define EVISION_ST_DEFAULT_GAIN_MIN 1 /* Default value for gain min */
|
||||
#define EVISION_ST_DEFAULT_GAIN_MAX 100 /* Default value for gain max */
|
||||
#define EVISION_ST_DEFAULT_COMPAT_FREQ 0 /* Default value for compatible frequency */
|
||||
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
/**
|
||||
* @fn evision_st_ae_process_t* evision_api_st_ae_new(void);
|
||||
* @brief Create a new #evision_st_ae_process_t instance.
|
||||
*
|
||||
* @param[in] log_cb Callback to output logs.
|
||||
* @return The address of the created instance. NULL if it failed.
|
||||
*/
|
||||
evision_st_ae_process_t* evision_api_st_ae_new(evision_api_log_callback log_cb);
|
||||
|
||||
/**
|
||||
* @fn evision_return_t evision_api_st_ae_delete(evision_st_ae_process_t* self);
|
||||
* @brief Releases the memory allocated for the #evision_st_ae_process_t ae process instance.
|
||||
*
|
||||
* @param[in, out] ae process instance address.
|
||||
* @return
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERR
|
||||
|
||||
*/
|
||||
evision_return_t evision_api_st_ae_delete(evision_st_ae_process_t* self);
|
||||
|
||||
/**
|
||||
* @fn evision_return_t evision_api_st_ae_init(evision_st_ae_process_t* const self)
|
||||
* @brief Initialize the AE process structure.
|
||||
*
|
||||
* @param[in, out] self AE process to be initialized.
|
||||
* @return
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERROR
|
||||
*
|
||||
* Initializes the AE process structure. Hyper params can later be modified.
|
||||
*/
|
||||
evision_return_t evision_api_st_ae_init(evision_st_ae_process_t* const self);
|
||||
|
||||
/**
|
||||
* @fn evision_return_t evision_api_st_ae_process(evision_st_ae_process_t* const self, uint32t_t current_gain, uint32_t current_exposure, uint8_t average_lum)
|
||||
* @brief Run the ae process to calculate new gain and expsoure
|
||||
*
|
||||
* @param[in, out] self Concerned process instance address.
|
||||
* @param[in] current_gain Current sensor gain in mdB.
|
||||
* @param[in] current_exposure Current sensor exposure microsecond.
|
||||
* @param[in] average_lum Average luminance measurement value. Range should normally be between 0 (completely dark image) and 255 (completely white image).
|
||||
*
|
||||
* @return
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_FAILURE
|
||||
*/
|
||||
evision_return_t evision_api_st_ae_process(evision_st_ae_process_t* const self, uint32_t current_gain, uint32_t current_exposure, uint8_t average_lum);
|
||||
|
||||
/* Exported variables --------------------------------------------------------*/
|
||||
|
||||
#endif /* EVISION_API_ST_AE_H_ */
|
||||
|
|
@ -0,0 +1,326 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file evision-api-utils.h
|
||||
* @author LACROIX - Impulse
|
||||
* @brief eVision utilitary public header.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2023 LACROIX - Impulse.
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef EVISION_API_UTILS_H_
|
||||
#define EVISION_API_UTILS_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/************************************************************************
|
||||
* Includes
|
||||
************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/************************************************************************
|
||||
* Public Defines
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
* @def EVISION_MIN
|
||||
* @brief Determine the lowest value between a and b
|
||||
*/
|
||||
#define EVISION_MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
|
||||
/**
|
||||
* @def EVISION_MAX
|
||||
* @brief Determine the greatest value between a and b
|
||||
*/
|
||||
#define EVISION_MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
|
||||
/**
|
||||
* @def EVISION_SIGN
|
||||
* @brief Determine the sign of a number.
|
||||
*/
|
||||
#define EVISION_SIGN(x) ((x) > 0.0f ? 1.0f : -1.0f)
|
||||
|
||||
#ifdef ALGO_SW_STATISTICS
|
||||
/* YUV parameters */
|
||||
/*! @brief Minimum of Y value due to ISP RGB 2 YUV conversion formula */
|
||||
#define EVISION_YUV_MIN_Y_VAL (16.0)
|
||||
/*! @brief Maximum of Y value due to ISP RGB 2 YUV conversion formula */
|
||||
#define EVISION_YUV_MAX_Y_VAL (235.140625)
|
||||
/*! @brief YUV factor value due to ISP RGB 2 YUV conversion formula */
|
||||
#define EVISION_YUV_FACTOR (256)
|
||||
/*! @brief YUV maximum value due to ISP RGB 2 YUV conversion formula */
|
||||
#define EVISION_YUV_MAX_VAL (255)
|
||||
/*! @brief range of Y value due to ISP RGB 2 YUV conversion formula */
|
||||
#define EVISION_YUV_RANGE_Y_VAL (EVISION_YUV_MAX_Y_VAL - EVISION_YUV_MIN_Y_VAL)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @typedef evision_return_t
|
||||
* @brief Return type for functions.
|
||||
*
|
||||
* @enum evision_return
|
||||
* @brief Return type for functions.
|
||||
*
|
||||
* Return code that must be checked to be sure the output of the function is valid.
|
||||
*/
|
||||
typedef enum evision_return {
|
||||
EVISION_RET_INVALID_VALUE = 2, /*!< The process succeeded but the output value is invalid and should not be used.*/
|
||||
EVISION_RET_SUCCESS = 1, /*!< the process succeeded. */
|
||||
EVISION_RET_FAILURE = 0, /*!< Error: There was a failure. */
|
||||
EVISION_RET_PARAM_ERR = -1, /*!< Error: A parameter is invalid. */
|
||||
EVISION_RET_DIMENSION_ERR = -2, /*!< Error: A dimension is incompatible with the process. */
|
||||
EVISION_RET_MEMORY_ERR = -3, /*!< Error: Could not allocate memory. */
|
||||
EVISION_RET_FILE_ERR = -4, /*!< Error: A file could not be opened */
|
||||
EVISION_RET_FORMAT_ERR = -5, /*!< Error: the specified format is invalid. */
|
||||
} evision_return_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_state_t
|
||||
* @brief Describes the state of the estimator.
|
||||
*
|
||||
* @enum evision_state
|
||||
* @brief Describes the state of the estimator.
|
||||
*/
|
||||
typedef enum evision_state {
|
||||
/*! @brief
|
||||
* The estimator exists.
|
||||
*/
|
||||
EVISION_STATE_NONE = 0u,
|
||||
/*! @brief
|
||||
* The estimator was initialized and is ready to run.
|
||||
*/
|
||||
EVISION_STATE_INIT = 1u,
|
||||
/*! @brief
|
||||
* The estimator is running.
|
||||
*/
|
||||
EVISION_STATE_RUN = 2u,
|
||||
} evision_state_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_image_format_t
|
||||
* @brief Specify the format under which the image is stored.
|
||||
*
|
||||
* @enum evision_image_format
|
||||
* @brief Specify the format under which the image is stored.
|
||||
*
|
||||
* Those formats are as the ones defined by V4L2.
|
||||
*/
|
||||
typedef enum evision_image_format {
|
||||
/*! @brief
|
||||
* 8 bit gray-level.
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_GRAY8 = 0u,
|
||||
/*! @brief
|
||||
* 8 bit gray-level.
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_GREY8 = 1u,
|
||||
/*! @brief
|
||||
* RGB interleaved, 8 bit per channel, 24 bit per pixel..
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_RGB8 = 2u,
|
||||
/*! @brief
|
||||
* BGR interleaved, 8 bit per channel, 24 bit per pixel..
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_BGR8 = 3u,
|
||||
/*! @brief
|
||||
* 8 bit YUV 422 SP format.
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_YUV422SP = 4u,
|
||||
/*! @brief
|
||||
* RGGB Bayer format, 8 bit per channel, Red compound first.
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_RGGB8 = 5u,
|
||||
/*! @brief
|
||||
* BGGR Bayer format, 8 bit per channel, Blue compound first.
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_BGGR8 = 6u,
|
||||
/*! @brief
|
||||
* GRBG Bayer format, 16 bit per channel, each coded on 16 bits inverted (0xFF, 0x0F).
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_GRBG12 = 7u,
|
||||
/*! @brief
|
||||
* RGGB Bayer format, 16 bit per channel, each coded on 16 bits inverted (0xFF, 0x0F).
|
||||
*/
|
||||
EVISION_IMAGE_FORMAT_RGGB12 = 8u
|
||||
} evision_image_format_t;
|
||||
|
||||
/************************************************************************
|
||||
* Public Functions Signatures
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief Callback function to output logs.
|
||||
*
|
||||
* @param[in] msg Received message.
|
||||
*
|
||||
* If the user wants to handle the log and messages yielded by the estimator,
|
||||
* a function with this signature must be specified.
|
||||
*
|
||||
*/
|
||||
typedef void (*evision_api_log_callback)(const char* const msg);
|
||||
|
||||
/************************************************************************
|
||||
* Public Structures
|
||||
************************************************************************/
|
||||
|
||||
/**
|
||||
* @typedef evision_image_t
|
||||
* @brief Structure to hold frame data and metadata for eVision AE and AWB algorithms.
|
||||
*
|
||||
* @struct evision_image
|
||||
* @brief Structure to hold frame data and metadata for eVision AE and AWB algorithms.
|
||||
*
|
||||
*/
|
||||
typedef struct evision_image {
|
||||
/*! @brief
|
||||
* Frame data.
|
||||
*/
|
||||
uint8_t* pdata;
|
||||
/*! @brief
|
||||
* Number of pixels columns in the image.
|
||||
*/
|
||||
uint16_t width;
|
||||
/*! @brief
|
||||
* Number of pixels rows in the image.
|
||||
*/
|
||||
uint16_t height;
|
||||
/*! @brief
|
||||
* The format of the image.
|
||||
*/
|
||||
evision_image_format_t format;
|
||||
} evision_image_t;
|
||||
|
||||
#ifdef ALGO_SW_STATISTICS
|
||||
/**
|
||||
* @typedef evision_roi_t
|
||||
* @brief Represents a Region Of Interest (aka a rectangle of pixels in an image).
|
||||
*
|
||||
* @struct evision_roi
|
||||
* @brief Represents a Region Of Interest (aka a rectangle of pixels in an image).
|
||||
*
|
||||
* A ROI serves to limit the statistics extraction to a specific zone inside the frame.
|
||||
* Several ROIs can be defined and for each ROI a weight must be defined.
|
||||
* The aggregated statistic is the weighted average of individual ROI statistics.
|
||||
* Setting all weights equal results in the aggregated statistic to be the arithmetic average of the individual statistics.
|
||||
*
|
||||
*/
|
||||
typedef struct evision_roi {
|
||||
/*! @brief
|
||||
* Horizontal pixel coordinate of the Top-Left corner of the ROI.
|
||||
*/
|
||||
uint16_t x0;
|
||||
/*! @brief
|
||||
* Vertical pixel coordinate of the Top-Left corner of the ROI.
|
||||
*/
|
||||
uint16_t y0;
|
||||
/*! @brief
|
||||
* Horizontal pixel coordinate of the Bottom-Right corner of the ROI.
|
||||
*/
|
||||
uint16_t x1;
|
||||
/*! @brief
|
||||
* Vertical pixel coordinate of the Bottom-Right corner of the ROI.
|
||||
*/
|
||||
uint16_t y1;
|
||||
/*! @brief
|
||||
* Weight associated to the ROI.
|
||||
*/
|
||||
double weight;
|
||||
} evision_roi_t;
|
||||
|
||||
/**
|
||||
* @typedef evision_roi_array_t
|
||||
* @brief Represents an array of evision_roi.
|
||||
*
|
||||
* @struct evision_roi_array
|
||||
* @brief Represents an array of evision_roi.
|
||||
*
|
||||
* Represents the collection of all the defined ROIs for the estimator. Must contain at least one ROI.
|
||||
*
|
||||
*/
|
||||
typedef struct evision_roi_array {
|
||||
/*! @brief
|
||||
* Pointer to the beginning of the array.
|
||||
*/
|
||||
evision_roi_t* parray;
|
||||
/*! @brief
|
||||
* Number of elements in the array.
|
||||
*/
|
||||
uint16_t len;
|
||||
} evision_roi_array_t;
|
||||
#endif
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* Private Structure Declaration
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************************
|
||||
* Public Variables
|
||||
************************************************************************/
|
||||
|
||||
/************************************************************************
|
||||
* Public Function Prototypes
|
||||
************************************************************************/
|
||||
|
||||
/* Library management functions */
|
||||
#ifdef ALGO_SW_STATISTICS
|
||||
/* ROI array management */
|
||||
|
||||
/**
|
||||
* @fn evision_roi_array_t* evision_api_roi_array_new(const uint16_t length)
|
||||
* @brief Create and allocate the memory for a new array of #evision_roi_array_t elements.
|
||||
*
|
||||
* @param[in] length Size of the array to create
|
||||
* @return Address of the created #evision_roi_array_t. NULL if something went wrong.
|
||||
*/
|
||||
evision_roi_array_t* evision_api_roi_array_new(const uint16_t length);
|
||||
|
||||
/**
|
||||
* @fn evision_roi_array_t* evision_api_roi_array_new_grid(const uint16_t frame_width, const uint16_t frame_height, const uint16_t roi_width, const uint16_t roi_height, const uint16_t nb_roi_col, const uint16_t nb_roi_row)
|
||||
* @brief Create and allocate the memory for a new array of #evision_roi_array_t with pre filled ROIs positioned as a grid.
|
||||
*
|
||||
* In the end, the number of ROIs will be nb_roi_col * nb_roi_row
|
||||
*
|
||||
* @param[in] frame_width Number of pixels column in the frame where the ROIs will be placed.
|
||||
* @param[in] frame_height Number of pixels rows in the frame where the ROIs will be placed.
|
||||
* @param[in] roi_width Size (columns) of each ROI.
|
||||
* @param[in] roi_height Size (rows) of each ROI.
|
||||
* @param[in] nb_roi_col Number of ROIs to be placed in the horizontal dimension.
|
||||
* @param[in] nb_roi_row Number of ROIs to be placed in the vertical dimension.
|
||||
* @return Address of the created #evision_roi_array_t. NULL if something went wrong.
|
||||
*/
|
||||
evision_roi_array_t* evision_api_roi_array_new_grid(const uint16_t frame_width, const uint16_t frame_height, const uint16_t roi_width, const uint16_t roi_height, const uint16_t nb_roi_col, const uint16_t nb_roi_row);
|
||||
|
||||
/**
|
||||
* @fn evision_return_t evision_api_roi_array_delete(evision_roi_array_t* self)
|
||||
* @brief Free the memory allocated to an #evision_roi_array_t.
|
||||
*
|
||||
* @param[in, out] self Address of the concerned ROI array instance to be deleted, cannot be used after.
|
||||
* @return
|
||||
* - EVISION_RET_SUCCESS
|
||||
* - EVISION_RET_PARAM_ERR
|
||||
*/
|
||||
evision_return_t evision_api_roi_array_delete(evision_roi_array_t* self);
|
||||
#endif
|
||||
|
||||
/************************************************************************
|
||||
* Public Function Definitions
|
||||
************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EVISION_API_UTILS_H_ */
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
|
@ -1,33 +0,0 @@
|
|||
From: Arturo Buzarra <arturo.buzarra@digi.com>
|
||||
Date: Wed, 19 Nov 2025 11:58:43 +0100
|
||||
Subject: [PATCH] dcmipp: Fix configureAwbAlgo() encapsulation under
|
||||
EVISION_ALGO_ENABLED
|
||||
|
||||
Awb::queueRequest() unconditionally calls configureAwbAlgo(), but it is
|
||||
compiled only when EVISION_ALGO_ENABLED is defined. With EVISION_ALGO_ENABLED
|
||||
disabled, this leads to an undefined symbol at runtime when loading the DCMIPP
|
||||
IPA. This commit guards the call under EVISION_ALGO_ENABLED so that non-EVISION
|
||||
builds no longer reference the helper.
|
||||
|
||||
Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
|
||||
---
|
||||
src/ipa/dcmipp/algorithms/awb.cpp | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/ipa/dcmipp/algorithms/awb.cpp b/src/ipa/dcmipp/algorithms/awb.cpp
|
||||
index 006ad4b8..4444ac98 100644
|
||||
--- a/src/ipa/dcmipp/algorithms/awb.cpp
|
||||
+++ b/src/ipa/dcmipp/algorithms/awb.cpp
|
||||
@@ -652,10 +652,12 @@ void Awb::queueRequest([[maybe_unused]] IPAContext &context,
|
||||
LOG(DcmippAwb, Debug) << "Updating AwbColourConv to " << (*cconv)[0] << "...";
|
||||
}
|
||||
|
||||
+#ifdef EVISION_ALGO_ENABLED
|
||||
if (internal_.profileDirty && !configureAwbAlgo()) {
|
||||
LOG(DcmippAwb, Error) << "Cannot reconfigure awb algorithm";
|
||||
return;
|
||||
}
|
||||
+#endif /* EVISION_ALGO_ENABLED */
|
||||
|
||||
/* Static config: update params_ and if applicable force config_ update now */
|
||||
const auto &customColorTemp = controls.get(controls::draft::AwbCustomColorTemperature);
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
FILESEXTRAPATHS:prepend := "${THISDIR}/libcamera-stm32mp:"
|
||||
|
||||
PROVIDES += "libcamera"
|
||||
|
||||
PE = "1"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
DEPENDS = "python3-pyyaml-native python3-jinja2-native python3-ply-native python3-jinja2-native udev gnutls chrpath-native libevent libyaml"
|
||||
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'qt', 'qtbase qtbase-native', '', d)}"
|
||||
DEPENDS:append:aarch64 = " evision-libs "
|
||||
|
||||
PACKAGES =+ "${PN}-gst"
|
||||
|
||||
PACKAGECONFIG ??= "gst python"
|
||||
PACKAGECONFIG[gst] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0 gstreamer1.0-plugins-base"
|
||||
PACKAGECONFIG[python] = "-Dpycamera=enabled,-Dpycamera=disabled,python3-pybind11"
|
||||
|
||||
LIBCAMERA_PIPELINES ??= "dcmipp"
|
||||
LIBCAMERA_IPAS = "dcmipp"
|
||||
|
||||
EXTRA_OEMESON = " \
|
||||
-Dpipelines=${LIBCAMERA_PIPELINES} \
|
||||
-Dv4l2=true \
|
||||
-Dcam=enabled \
|
||||
-Dlc-compliance=disabled \
|
||||
-Dtest=false \
|
||||
-Ddocumentation=disabled \
|
||||
"
|
||||
EXTRA_OEMESON += " \
|
||||
-Dipas=${LIBCAMERA_IPAS} \
|
||||
"
|
||||
EXTRA_OEMESON:append:aarch64 = " \
|
||||
-Devision_algo=true \
|
||||
-Devision_algo_inc_dir=${RECIPE_SYSROOT}/usr/include/evision \
|
||||
"
|
||||
|
||||
RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland qt', 'qtwayland', '', d)}"
|
||||
RDEPENDS:${PN}:append:aarch64 = " evision-libs "
|
||||
|
||||
inherit meson pkgconfig python3native python3-dir
|
||||
|
||||
do_configure:prepend() {
|
||||
sed -i -e 's|py_compile=True,||' ${S}/utils/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py
|
||||
}
|
||||
|
||||
do_install:append() {
|
||||
chrpath -d ${D}${libdir}/libcamera.so
|
||||
chrpath -d ${D}${libexecdir}/libcamera/v4l2-compat.so
|
||||
}
|
||||
|
||||
do_package:append() {
|
||||
bb.build.exec_func("do_package_recalculate_ipa_signatures", d)
|
||||
}
|
||||
|
||||
do_package_recalculate_ipa_signatures() {
|
||||
local modules
|
||||
for module in $(find ${PKGD}/usr/lib/libcamera -name "*.so.sign"); do
|
||||
module="${module%.sign}"
|
||||
if [ -f "${module}" ] ; then
|
||||
modules="${modules} ${module}"
|
||||
fi
|
||||
done
|
||||
|
||||
${S}/src/ipa/ipa-sign-install.sh ${B}/src/ipa-priv-key.pem "${modules}"
|
||||
}
|
||||
|
||||
FILES:${PN} += " ${libexecdir}/libcamera/v4l2-compat.so"
|
||||
FILES:${PN} += "${datadir} ${libdir} ${PYTHON_SITEPACKAGES_DIR}"
|
||||
FILES:${PN}-gst = "${libdir}/gstreamer-1.0"
|
||||
|
||||
# libcamera-v4l2 explicitly sets _FILE_OFFSET_BITS=32 to get access to
|
||||
# both 32 and 64 bit file APIs.
|
||||
GLIBC_64BIT_TIME_FLAGS = ""
|
||||
|
|
@ -8,85 +8,18 @@ LIC_FILES_CHKSUM = "\
|
|||
file://LICENSES/LGPL-2.1-or-later.txt;md5=2a4f4fd2128ea2f65047ee63fbca9f68 \
|
||||
"
|
||||
|
||||
include libcamera-stm32mp.inc
|
||||
|
||||
# 0.3.0
|
||||
SRC_URI = " \
|
||||
git://git.libcamera.org/libcamera/libcamera.git;protocol=https;branch=master \
|
||||
file://0001-media_device-Add-bool-return-type-to-unlock.patch \
|
||||
file://0002-options-Replace-use-of-VLAs-in-C.patch \
|
||||
file://0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch \
|
||||
"
|
||||
SRC_URI = "git://git.libcamera.org/libcamera/libcamera.git;protocol=https;branch=master"
|
||||
SRCREV = "aee16c06913422a0ac84ee3217f87a9795e3c2d9"
|
||||
|
||||
SRC_URI += " \
|
||||
file://0001-0.3.0-stm32mp-add-dcmipp-ipa.patch \
|
||||
file://0002-dcmipp-Fix-configureAwbAlgo-encapsulation-under-EVIS.patch \
|
||||
"
|
||||
PV = "v0.3.0-stm32mp"
|
||||
file://0001-media_device-Add-bool-return-type-to-unlock.patch \
|
||||
file://0002-options-Replace-use-of-VLAs-in-C.patch \
|
||||
file://0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch \
|
||||
\
|
||||
file://0001-v0.3.0-stm32mp.patch \
|
||||
"
|
||||
|
||||
PROVIDES += "libcamera"
|
||||
|
||||
PE = "1"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
DEPENDS = "python3-pyyaml-native python3-jinja2-native python3-ply-native python3-jinja2-native udev gnutls chrpath-native libevent libyaml"
|
||||
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'qt', 'qtbase qtbase-native', '', d)}"
|
||||
|
||||
PACKAGES =+ "${PN}-gst"
|
||||
|
||||
PACKAGECONFIG ??= "gst python"
|
||||
PACKAGECONFIG[gst] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0 gstreamer1.0-plugins-base"
|
||||
PACKAGECONFIG[python] = "-Dpycamera=enabled,-Dpycamera=disabled,python3-pybind11"
|
||||
|
||||
LIBCAMERA_PIPELINES ??= "dcmipp"
|
||||
LIBCAMERA_IPAS = "dcmipp"
|
||||
|
||||
EXTRA_OEMESON = " \
|
||||
-Dpipelines=${LIBCAMERA_PIPELINES} \
|
||||
-Dv4l2=true \
|
||||
-Dcam=enabled \
|
||||
-Dlc-compliance=disabled \
|
||||
-Dtest=false \
|
||||
-Ddocumentation=disabled \
|
||||
"
|
||||
EXTRA_OEMESON += " \
|
||||
-Dipas=${LIBCAMERA_IPAS} \
|
||||
"
|
||||
|
||||
|
||||
RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland qt', 'qtwayland', '', d)}"
|
||||
|
||||
inherit meson pkgconfig python3native python3-dir
|
||||
|
||||
do_configure:prepend() {
|
||||
sed -i -e 's|py_compile=True,||' ${S}/utils/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py
|
||||
}
|
||||
|
||||
do_install:append() {
|
||||
chrpath -d ${D}${libdir}/libcamera.so
|
||||
chrpath -d ${D}${libexecdir}/libcamera/v4l2-compat.so
|
||||
}
|
||||
|
||||
do_package:append() {
|
||||
bb.build.exec_func("do_package_recalculate_ipa_signatures", d)
|
||||
}
|
||||
|
||||
do_package_recalculate_ipa_signatures() {
|
||||
local modules
|
||||
for module in $(find ${PKGD}/usr/lib/libcamera -name "*.so.sign"); do
|
||||
module="${module%.sign}"
|
||||
if [ -f "${module}" ] ; then
|
||||
modules="${modules} ${module}"
|
||||
fi
|
||||
done
|
||||
|
||||
${S}/src/ipa/ipa-sign-install.sh ${B}/src/ipa-priv-key.pem "${modules}"
|
||||
}
|
||||
|
||||
FILES:${PN} += " ${libexecdir}/libcamera/v4l2-compat.so"
|
||||
FILES:${PN} += "${datadir} ${libdir} ${PYTHON_SITEPACKAGES_DIR}"
|
||||
FILES:${PN}-gst = "${libdir}/gstreamer-1.0"
|
||||
|
||||
# libcamera-v4l2 explicitly sets _FILE_OFFSET_BITS=32 to get access to
|
||||
# both 32 and 64 bit file APIs.
|
||||
GLIBC_64BIT_TIME_FLAGS = ""
|
||||
PV = "0.3.0"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
From: Arturo Buzarra <arturo.buzarra@digi.com>
|
||||
Date: Mon, 3 Nov 2025 23:00:27 +0100
|
||||
Date: Wed, 18 Mar 2026 22:07:56 +0100
|
||||
Subject: [PATCH] ARM: dts: ccmp15: add signed firmware support for RPROC
|
||||
|
||||
Enable the Cortex-M4 inter-processor communication node so remoteproc can
|
||||
|
|
@ -9,24 +9,19 @@ https://onedigi.atlassian.net/browse/DEL-9920
|
|||
|
||||
Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
|
||||
---
|
||||
core/arch/arm/dts/ccmp15-dvk.dtsi | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
core/arch/arm/dts/ccmp15-dvk.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/core/arch/arm/dts/ccmp15-dvk.dtsi b/core/arch/arm/dts/ccmp15-dvk.dtsi
|
||||
index 7ea04b659..53533bd36 100644
|
||||
index ff7ee6504..ea88e3e1e 100644
|
||||
--- a/core/arch/arm/dts/ccmp15-dvk.dtsi
|
||||
+++ b/core/arch/arm/dts/ccmp15-dvk.dtsi
|
||||
@@ -263,9 +263,12 @@
|
||||
@@ -259,7 +259,7 @@
|
||||
|
||||
&m4_rproc {
|
||||
memory-region = <&retram>, <&mcusram1>, <&mcusram2>, <&mcusram3>;
|
||||
mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
|
||||
mbox-names = "vq0", "vq1", "shutdown", "detach";
|
||||
+ resets = <&rcc MCU_R>, <&rcc MCU_HOLD_BOOT_R>;
|
||||
+ reset-names = "mcu_rst", "hold_boot";
|
||||
+ #reset-cells = <1>;
|
||||
interrupt-parent = <&exti>;
|
||||
interrupts = <68 1>;
|
||||
- status = "disabled";
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
|
||||
&mcusram1 {
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
From: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
|
||||
Date: Wed, 7 Jan 2026 14:10:13 +0100
|
||||
Subject: [PATCH] Revert "drivers: remoteproc: stm32mp15: check Cortex-M
|
||||
isolation"
|
||||
|
||||
This reverts commit b9f1c0820783436d45646fa50a62702f85d8fd62.
|
||||
|
||||
The MCKPROT is a system configuration that protects MCUSS clocks.
|
||||
This must not be managed in remoteproc, as some peripherals use PLL3
|
||||
as the parent clock.
|
||||
Some SCMI services must first be implemented to manage the MCUSS clocks
|
||||
before allowing the enabling of MCKPROT.
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9920
|
||||
|
||||
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
|
||||
Change-Id: I78214e4c482c3947fa36c0bde7cd2fe2eee133d4
|
||||
---
|
||||
core/drivers/remoteproc/stm32_remoteproc.c | 16 ----------------
|
||||
1 file changed, 16 deletions(-)
|
||||
|
||||
diff --git a/core/drivers/remoteproc/stm32_remoteproc.c b/core/drivers/remoteproc/stm32_remoteproc.c
|
||||
index c99a47fe3..914474035 100644
|
||||
--- a/core/drivers/remoteproc/stm32_remoteproc.c
|
||||
+++ b/core/drivers/remoteproc/stm32_remoteproc.c
|
||||
@@ -8,9 +8,6 @@
|
||||
#include <drivers/firewall_device.h>
|
||||
#include <drivers/rstctrl.h>
|
||||
#include <drivers/stm32_remoteproc.h>
|
||||
-#ifdef CFG_STM32MP15
|
||||
-#include <drivers/stm32mp1_rcc.h>
|
||||
-#endif
|
||||
#include <keep.h>
|
||||
#include <kernel/cache_helpers.h>
|
||||
#include <kernel/dt_driver.h>
|
||||
@@ -904,19 +901,6 @@ static TEE_Result stm32_rproc_probe(const void *fdt, int node,
|
||||
stm32_rproc_a35ss_cfg(rproc);
|
||||
#endif
|
||||
|
||||
-#ifdef CFG_STM32MP15
|
||||
- if (!rproc->cdata->ns_loading) {
|
||||
- if (!stm32_rcc_is_secure()) {
|
||||
- if (IS_ENABLED(CFG_INSECURE))
|
||||
- IMSG("WARNING: insecure rproc support regarding RCC hardening");
|
||||
- else
|
||||
- panic("RCC secure hardening issue");
|
||||
- } else {
|
||||
- stm32_rcc_set_mckprot(true);
|
||||
- }
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
if (!rproc->cdata->ns_loading)
|
||||
SLIST_INSERT_HEAD(&rproc_list, rproc, link);
|
||||
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From: Patrick Delaunay <patrick.delaunay@foss.st.com>
|
||||
Date: Thu, 8 Jan 2026 10:20:20 +0100
|
||||
Subject: [PATCH] drivers: firewall: stm32_etzpc: remove trace when rcc mckprot
|
||||
is not activated
|
||||
|
||||
The RCC MCKPROT is deactivated even for remoteproc with secure loading
|
||||
embedded in the platform, so stm32_rcc_is_mckprot always returns false
|
||||
and a WARNING traces are displayed.
|
||||
|
||||
I/TC: WARNING: RCC tzen:1 mckprot:0, insecure ETZPC hardening
|
||||
81:ETZPC_DECPROT_MCU_ISOLATION
|
||||
|
||||
This patch temporarily removes this trace in OpenSTLinux V6.X
|
||||
as mckprot is not managed.
|
||||
|
||||
NOT_UPSTREAMABLE only avoid warning message.
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9920
|
||||
|
||||
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
|
||||
Change-Id: If8cbec0bc2d5ad65b2f5e716c561f9598728d4e0
|
||||
---
|
||||
core/drivers/firewall/stm32_etzpc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/core/drivers/firewall/stm32_etzpc.c b/core/drivers/firewall/stm32_etzpc.c
|
||||
index 257bcd76e..9d588b1c3 100644
|
||||
--- a/core/drivers/firewall/stm32_etzpc.c
|
||||
+++ b/core/drivers/firewall/stm32_etzpc.c
|
||||
@@ -184,7 +184,7 @@ sanitize_decprot_config(uint32_t decprot_id __maybe_unused,
|
||||
}
|
||||
break;
|
||||
case ETZPC_DECPROT_MCU_ISOLATION:
|
||||
- if (!stm32_rcc_is_secure() || !stm32_rcc_is_mckprot()) {
|
||||
+ if (!stm32_rcc_is_secure()) {
|
||||
IMSG("WARNING: RCC tzen:%u mckprot:%u, insecure ETZPC hardening %"PRIu32":%s",
|
||||
stm32_rcc_is_secure(), stm32_rcc_is_mckprot(),
|
||||
decprot_id, etzpc_decprot_strings[attr]);
|
||||
|
|
@ -12,7 +12,7 @@ OPTEE_URI_STASH = "${DIGI_MTK_GIT}/emp/optee_os.git;protocol=ssh"
|
|||
OPTEE_URI_GITHUB = "${DIGI_GITHUB_GIT}/optee_os.git;protocol=https"
|
||||
OPTEE_GIT_URI ?= "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${OPTEE_URI_STASH}', '${OPTEE_URI_GITHUB}', d)}"
|
||||
|
||||
SRCBRANCH = "4.0.0/stm/master"
|
||||
SRCBRANCH = "4.0.0/stm/maint"
|
||||
SRCREV = "${AUTOREV}"
|
||||
|
||||
SRC_URI = " \
|
||||
|
|
@ -21,9 +21,7 @@ SRC_URI = " \
|
|||
"
|
||||
|
||||
SRC_URI:append:ccmp15 = " \
|
||||
${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'file://0001-ARM-dts-ccmp15-add-signed-firmware-support-for-RPROC.patch \
|
||||
file://0002-Revert-drivers-remoteproc-stm32mp15-check-Cortex-M-i.patch \
|
||||
file://0003-drivers-firewall-stm32_etzpc-remove-trace-when-rcc-m.patch', '', d)} \
|
||||
${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'file://0001-ARM-dts-ccmp15-add-signed-firmware-support-for-RPROC.patch', '', d)} \
|
||||
"
|
||||
|
||||
SRC_URI:append:ccmp25 = " \
|
||||
|
|
@ -34,3 +32,4 @@ SRC_URI:append:ccmp25 = " \
|
|||
EXTRA_OEMAKE:append:ccmp25 = " ${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1', 'CFG_REMOTEPROC_PUB_KEY_VERIFY=y', '', d)}"
|
||||
# Enable remoteproc custom public key verification for signed firmware support
|
||||
EXTRA_OEMAKE:append:ccmp15 = " ${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'CFG_STM32MP_REMOTEPROC=y RPROC_SIGN_KEY=%s' % (d.getVar('TRUSTFENCE_COPRO_SIGN_KEY') or ''), '', d)}"
|
||||
EXTRA_OEMAKE:remove:ccmp15 = " ${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'CFG_REMOTEPROC_PUB_KEY_VERIFY=y', '', d)}"
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@ LICENSE = "CYPRESS-EULA"
|
|||
LIC_FILES_CHKSUM = "file://${S}/cyw-bt-patch/LICENCE.cypress;md5=cbc5f665d04f741f1e006d2096236ba7"
|
||||
|
||||
SRC_URI = " \
|
||||
https://github.com/Infineon/ifx-linux-firmware/archive/refs/tags/release-v6.1.145-2026_0108.tar.gz;destsuffix=cyw-fmac-fw-ifx;name=cyw-fmac-fw-ifx \
|
||||
git://github.com/Infineon/ifx-linux-firmware;protocol=http;branch=master;destsuffix=ifx-linux-firmware-longma;name=ifx-linux-firmware-longma \
|
||||
git://github.com/murata-wireless/cyw-fmac-fw;protocol=http;branch=longma;destsuffix=cyw-fmac-fw;name=cyw-fmac-fw \
|
||||
git://github.com/murata-wireless/cyw-fmac-nvram;protocol=http;branch=longma;destsuffix=cyw-fmac-nvram;name=cyw-fmac-nvram \
|
||||
git://github.com/murata-wireless/cyw-bt-patch;protocol=http;branch=master;destsuffix=cyw-bt-patch;name=cyw-bt-patch \
|
||||
git://github.com/murata-wireless/cyw-fmac-utils-imx32;protocol=http;branch=master;destsuffix=cyw-fmac-utils-imx32;name=cyw-fmac-utils-imx32 \
|
||||
git://github.com/murata-wireless/cyw-fmac-utils-imx64;protocol=http;branch=master;destsuffix=cyw-fmac-utils-imx64;name=cyw-fmac-utils-imx64 \
|
||||
file://cyw4373-autocountry \
|
||||
file://cyw4373-autocountry.service \
|
||||
file://autocountry \
|
||||
file://autocountry.service \
|
||||
"
|
||||
|
||||
SRC_URI:append:ccmp1 = " \
|
||||
|
|
@ -22,11 +22,19 @@ SRC_URI:append:ccmp1 = " \
|
|||
"
|
||||
|
||||
SRC_URI:append:ccmp2 = " \
|
||||
file://cyfmac55500-sdio_US.APIndoor.clm_blob \
|
||||
file://cyfmac55500-sdio_US.APOutdoor.clm_blob \
|
||||
file://cyfmac55500-sdio_US.STAIndoor.clm_blob \
|
||||
file://cyfmac55500-sdio_US.STAOutdoor.clm_blob \
|
||||
file://cyfmac55500-sdio_World.APIndoor.clm_blob \
|
||||
file://cyfmac55500-sdio_World.APOutdoor.clm_blob \
|
||||
file://cyfmac55500-sdio_World.STAIndoor.clm_blob \
|
||||
file://cyfmac55500-sdio_World.STAOutdoor.clm_blob \
|
||||
file://mbt \
|
||||
"
|
||||
|
||||
SRC_URI[cyw-fmac-fw-ifx.sha256sum]="54928426f0b060ed680d649cc3a4db0643f82f8c33810ee8a3359322e1e5e565"
|
||||
SRCREV_cyw-fmac-fw="f2884c410d7d60f5283e05c4549abc35633b60e0"
|
||||
SRCREV_ifx-linux-firmware-longma="f24790e6fa2f05a0f974236bed7da7fa493b9ad2"
|
||||
SRCREV_cyw-fmac-fw="8cdb1886852e0b5f9876654619a8371b952bf248"
|
||||
SRCREV_cyw-fmac-nvram="411c87d4cf924a1a5415273265fd54d7d7d4044f"
|
||||
SRCREV_cyw-bt-patch="64ac86708253e12d7089cf75ef8dcc9b30594958"
|
||||
SRCREV_cyw-fmac-utils-imx32="dad9ed86bf6691910197bc91d42a45ea8175180c"
|
||||
|
|
@ -49,14 +57,14 @@ do_install () {
|
|||
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
|
||||
# Install systemd unit files
|
||||
install -d ${D}${systemd_unitdir}/system/
|
||||
install -m 0644 ${WORKDIR}/cyw4373-autocountry.service ${D}${systemd_unitdir}/system/cyw4373-autocountry.service
|
||||
install -m 0644 ${WORKDIR}/autocountry.service ${D}${systemd_unitdir}/system/autocountry.service
|
||||
fi
|
||||
|
||||
install -d ${D}${sysconfdir}/init.d/
|
||||
|
||||
# Install autocountry service
|
||||
install -m 0755 ${WORKDIR}/cyw4373-autocountry ${D}${sysconfdir}/cyw4373-autocountry
|
||||
ln -sf /etc/cyw4373-autocountry ${D}${sysconfdir}/init.d/cyw4373-autocountry
|
||||
install -m 0755 ${WORKDIR}/autocountry ${D}${sysconfdir}/autocountry
|
||||
ln -sf /etc/autocountry ${D}${sysconfdir}/init.d/autocountry
|
||||
|
||||
# Install WLAN client utility binary based on 32-bit/64-bit arch
|
||||
if [ ${TARGET_ARCH} = "aarch64" ]; then
|
||||
|
|
@ -80,7 +88,7 @@ do_install:append:ccmp1 () {
|
|||
|
||||
# Install WLAN firmware file (*.bin) and Regulatory binary file (*.clm_blob)
|
||||
# For Murata 2AE (LBEE5PK2AE-564)
|
||||
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.145-2026_0108/firmware/cyfmac4373-sdio.industrial.bin ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio.bin
|
||||
install -m 444 ${S}/ifx-linux-firmware-longma/firmware/cyfmac4373-sdio.industrial.bin ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio.bin
|
||||
install -m 444 cyfmac4373-sdio_US.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio_US.clm_blob
|
||||
install -m 444 cyfmac4373-sdio_World.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio_World.clm_blob
|
||||
|
||||
|
|
@ -103,9 +111,11 @@ do_install:append:ccmp2 () {
|
|||
|
||||
# Install WLAN firmware file (*.bin) and Regulatory binary file (*.clm_blob)
|
||||
# For Murata 2FY (LBEE5HY2FY)
|
||||
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.145-2026_0108/firmware/cyfmac55500-sdio.trxse ${D}${base_libdir}/firmware/cypress/cyfmac55500-sdio.trxse
|
||||
install -m 444 ${S}/cyw-fmac-fw/cyfmac55500-sdio.2FY.STAIndoor.clm_blob ${D}/${base_libdir}/firmware/cypress/
|
||||
ln -sf cyfmac55500-sdio.2FY.STAIndoor.clm_blob ${D}/${base_libdir}/firmware/cypress/cyfmac55500-sdio_US.clm_blob
|
||||
install -m 444 ${S}/ifx-linux-firmware-longma/firmware/cyfmac55500-sdio.trxse ${D}${base_libdir}/firmware/cypress/cyfmac55500-sdio.trxse
|
||||
install -m 444 cyfmac55500-sdio_US.*.clm_blob ${D}${base_libdir}/firmware/cypress/
|
||||
install -m 444 cyfmac55500-sdio_World.*.clm_blob ${D}${base_libdir}/firmware/cypress/
|
||||
ln -sf cyfmac55500-sdio_US.STAIndoor.clm_blob ${D}/${base_libdir}/firmware/cypress/cyfmac55500-sdio_US.clm_blob
|
||||
ln -sf cyfmac55500-sdio_World.STAIndoor.clm_blob ${D}/${base_libdir}/firmware/cypress/cyfmac55500-sdio_World.clm_blob
|
||||
|
||||
# Install NVRAM files (*.txt)
|
||||
# For Murata 2FY (LBEE5HY2FY)
|
||||
|
|
@ -129,7 +139,7 @@ do_install:append:ccimx95 () {
|
|||
|
||||
# Install WLAN firmware file (*.bin) and Regulatory binary file (*.clm_blob)
|
||||
# For Murata 2EC (LBEE5XV2EC)
|
||||
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.145-2026_0108/firmware/cyfmac55572-sdio.trxse ${D}${base_libdir}/firmware/cypress/cyfmac55572-sdio.trxse
|
||||
install -m 444 ${S}/ifx-linux-firmware-longma/firmware/cyfmac55572-sdio.trxse ${D}${base_libdir}/firmware/cypress/cyfmac55572-sdio.trxse
|
||||
install -m 444 ${S}/cyw-fmac-fw/cyfmac55572-sdio.2EA.clm_blob_STAIndoor ${D}/${base_libdir}/firmware/cypress/
|
||||
ln -sf cyfmac55572-sdio.2EA.clm_blob_STAIndoor ${D}/${base_libdir}/firmware/cypress/cyfmac55572-sdio_US.clm_blob
|
||||
|
||||
|
|
@ -141,10 +151,10 @@ do_install:append:ccimx95 () {
|
|||
inherit update-rc.d systemd
|
||||
|
||||
INITSCRIPT_PACKAGES += "${PN}-autocountry"
|
||||
INITSCRIPT_NAME:${PN}-autocountry = "cyw4373-autocountry"
|
||||
INITSCRIPT_NAME:${PN}-autocountry = "autocountry"
|
||||
INITSCRIPT_PARAMS:${PN}-autocountry = "start 19 2 3 4 5 . stop 21 0 1 6 ."
|
||||
|
||||
SYSTEMD_SERVICE:${PN}-autocountry = "cyw4373-autocountry.service"
|
||||
SYSTEMD_SERVICE:${PN}-autocountry = "autocountry.service"
|
||||
SYSTEMD_PACKAGES = "${PN}-autocountry"
|
||||
|
||||
PACKAGES =+ " \
|
||||
|
|
@ -161,16 +171,16 @@ FILES:${PN}-mfgtest = " \
|
|||
"
|
||||
|
||||
FILES:${PN}-autocountry = " \
|
||||
${sysconfdir}/cyw4373-autocountry \
|
||||
${sysconfdir}/init.d/cyw4373-autocountry \
|
||||
${systemd_unitdir}/system/cyw4373-autocountry.service \
|
||||
${sysconfdir}/autocountry \
|
||||
${sysconfdir}/init.d/autocountry \
|
||||
${systemd_unitdir}/system/autocountry.service \
|
||||
"
|
||||
|
||||
FILES:${PN}:append:ccmp2 = " \
|
||||
${sbindir}/mbt \
|
||||
"
|
||||
|
||||
RDEPENDS:${PN}:append:ccmp1 = " ${PN}-autocountry"
|
||||
RDEPENDS:${PN}:append = " ${PN}-autocountry"
|
||||
RDEPENDS:${PN}-autocountry:append = " ${PN}-mfgtest"
|
||||
|
||||
INSANE_SKIP:${PN} += "build-deps"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
#===============================================================================
|
||||
#
|
||||
# Copyright (C) 2024 by Digi International Inc.
|
||||
# Copyright (C) 2024-2026, Digi International Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
# the Free Software Foundation.
|
||||
#
|
||||
#
|
||||
# !Description: Enable Wireless autocountry feature (802.11d)
|
||||
# !Description: Enable Infineon Wireless autocountry feature (802.11d)
|
||||
#
|
||||
#===============================================================================
|
||||
|
||||
|
|
@ -23,9 +23,30 @@ log() {
|
|||
fi
|
||||
}
|
||||
|
||||
wait_for_wifi() {
|
||||
timeout="${1:-30}"
|
||||
count=0
|
||||
|
||||
while [ "${count}" -lt "${timeout}" ]; do
|
||||
if wl country list >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
count=$((count + 1))
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
# Only for Wireless variants
|
||||
if [ -d "/proc/device-tree/wireless" ]; then
|
||||
# Check if WorldWide regulatory domain is available
|
||||
if ! wait_for_wifi 30; then
|
||||
log warning "Wireless device not ready after waiting 30 seconds"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if 'XZ' WorldWide regulatory domain is available
|
||||
if wl country list | grep -qs ^XZ; then
|
||||
# Select WorldWide Country Code as driver operational region
|
||||
wl country XZ/0 agg
|
||||
|
|
@ -35,4 +56,14 @@ if [ -d "/proc/device-tree/wireless" ]; then
|
|||
wl autocountry 1
|
||||
log info "Set WorldWide regulatory domain"
|
||||
fi
|
||||
# Check if 'WW' WorldWide regulatory domain is available
|
||||
if wl country list | grep -qs ^WW; then
|
||||
# Select WorldWide Country Code as driver operational region
|
||||
wl country WW/0 agg
|
||||
# Select WorldWide Country Code for use with Auto Contry Discovery
|
||||
wl autocountry_default WW
|
||||
# Enable 802.11d
|
||||
wl autocountry 1
|
||||
log info "Set WorldWide regulatory domain"
|
||||
fi
|
||||
fi
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
[Unit]
|
||||
Description=Infineon autocountry (802.11d)
|
||||
Wants=systemd-udev-settle.service
|
||||
After=systemd-udev-settle.service network.target suspend.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/etc/autocountry
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target suspend.target
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,10 +0,0 @@
|
|||
[Unit]
|
||||
Description=CYW4373 autocountry (802.11d)
|
||||
After=network.target suspend.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/etc/cyw4373-autocountry
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target suspend.target
|
||||
Binary file not shown.
|
|
@ -49,15 +49,35 @@ Generalize the code to make room for Optee-based encryption.
|
|||
Optee) implementation.
|
||||
|
||||
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
|
||||
|
||||
# This is the commit message #4:
|
||||
|
||||
crypt: read HWID from 'digi,hwid_fuse_n' dt properties
|
||||
|
||||
Now that U-Boot supports overriding the HWID, it inserts the local,
|
||||
variable HWID into the 'digi,hwid_n' properties and the fused,
|
||||
stable HWID into the 'digi,hwid_fuse_n' properties.
|
||||
|
||||
Read the HWID to compute the key modifier from 'digi,hwid_fuse_n'
|
||||
as a preferred method. If those properties do not exist, fall back
|
||||
to the previous method, 'digi,hwid_n'.
|
||||
|
||||
An outdated U-Boot that does not create the 'digi,hwid_fuse_n'
|
||||
properties does not support HWID overriding either, so we can trust
|
||||
'digi,hwid_n' to have the contents from the fuses.
|
||||
|
||||
https://onedigi.atlassian.net/browse/DEL-9123
|
||||
|
||||
Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
|
||||
---
|
||||
src/CMakeLists.txt | 4 +
|
||||
src/caam_keyblob.h | 42 +++++++
|
||||
src/crypt.c | 179 +++++++++++++++++++++++++++++
|
||||
src/crypt.c | 194 ++++++++++++++++++++++++++++++++
|
||||
src/crypt.h | 10 ++
|
||||
src/md5.c | 275 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
src/md5.h | 24 ++++
|
||||
src/uboot_env.c | 18 +++
|
||||
7 files changed, 552 insertions(+)
|
||||
7 files changed, 567 insertions(+)
|
||||
create mode 100644 src/caam_keyblob.h
|
||||
create mode 100644 src/crypt.c
|
||||
create mode 100644 src/crypt.h
|
||||
|
|
@ -129,10 +149,10 @@ index 0000000..e313e87
|
|||
+#endif /* CAAM_KEYBLOB_H */
|
||||
diff --git a/src/crypt.c b/src/crypt.c
|
||||
new file mode 100644
|
||||
index 0000000..213cffd
|
||||
index 0000000..565d13d
|
||||
--- /dev/null
|
||||
+++ b/src/crypt.c
|
||||
@@ -0,0 +1,179 @@
|
||||
@@ -0,0 +1,194 @@
|
||||
+/*
|
||||
+ * Copyright 2024 Digi International Inc
|
||||
+ *
|
||||
|
|
@ -192,10 +212,25 @@ index 0000000..213cffd
|
|||
+ int len;
|
||||
+ int fd;
|
||||
+ uint32_t ocotp_hwid[MAX_HWID_WORDS];
|
||||
+ char dt_prop[32];
|
||||
+ char dt_prop[40];
|
||||
+ char buf[sizeof(uint32_t)];
|
||||
+
|
||||
+ for (i = 0; i < MAX_HWID_WORDS; i++) {
|
||||
+ sprintf(dt_prop, "/proc/device-tree/digi,hwid_fuse_%d", i);
|
||||
+ if (access(dt_prop, F_OK) != -1) {
|
||||
+ fd = open(dt_prop, O_RDONLY);
|
||||
+ if (fd < 0)
|
||||
+ return fd;
|
||||
+ len = read(fd, buf, sizeof(uint32_t));
|
||||
+ if (len < 0) {
|
||||
+ close(fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ ocotp_hwid[i] = ntohl(*(uint32_t *) buf);
|
||||
+ close(fd);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ sprintf(dt_prop, "/proc/device-tree/digi,hwid_%d", i);
|
||||
+ if (access(dt_prop, F_OK) != -1) {
|
||||
+ fd = open(dt_prop, O_RDONLY);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2021-2024, Digi International Inc.
|
||||
# Copyright (C) 2021-2026, Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
|
|
@ -23,6 +23,7 @@ DEPENDS += "${@oe.utils.conditional('OPTEE_PATCHES', '', '', 'optee-client', d)}
|
|||
OPTEE_PATCHES = ""
|
||||
OPTEE_PATCHES:ccimx9 = "file://0004-Implement-support-for-environment-encryption-using-O.patch"
|
||||
OPTEE_PATCHES:ccmp1 = "file://0004-Implement-support-for-environment-encryption-using-O.patch"
|
||||
OPTEE_PATCHES:ccmp2 = "file://0004-Implement-support-for-environment-encryption-using-O.patch"
|
||||
|
||||
SRC_URI += " \
|
||||
file://${FW_CONFIG_FILE} \
|
||||
|
|
|
|||
|
|
@ -35,10 +35,13 @@ SRC_URI = " \
|
|||
"
|
||||
|
||||
BUILD_UBOOT_SCRIPTS ?= "true"
|
||||
UBOOT_LOGO_BMP ?= ""
|
||||
|
||||
LOCALVERSION ?= ""
|
||||
inherit ${@oe.utils.conditional('DEY_SOC_VENDOR', 'NXP', 'fsl-u-boot-localversion uuu_bootloader_tag', '', d)}
|
||||
|
||||
EXTRA_OEMAKE:append = "${@' LOGO_BMP=%s' % d.getVar('UBOOT_LOGO_BMP') if d.getVar('UBOOT_LOGO_BMP') else ''}"
|
||||
|
||||
# Disable u-boot tagging for imx8/9, as the boot image is imx-boot
|
||||
UUU_BOOTLOADER:mx8-generic-bsp = ""
|
||||
UUU_BOOTLOADER:mx9-generic-bsp = ""
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot update verification
|
||||
if test "${dualboot}" = "yes"; then
|
||||
# Dual boot update verification (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${upgrade_available}" = "1"; then
|
||||
echo "Update detected; Booting new system in ${active_system} ${bootattempt}"
|
||||
else
|
||||
|
|
@ -52,7 +52,7 @@ else
|
|||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# We are booting from the SD card.
|
||||
# SD boot (MBR partition table)
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
fi
|
||||
if test "${upgrade_available}" = "1"; then
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot update verification
|
||||
if test "${dualboot}" = "yes"; then
|
||||
# Dual boot update verification (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${upgrade_available}" = "1"; then
|
||||
echo "Update detected; Booting new system in ${active_system} ${bootattempt}"
|
||||
else
|
||||
|
|
@ -52,7 +52,7 @@ else
|
|||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# We are booting from the SD card.
|
||||
# SD boot (MBR partition table)
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
fi
|
||||
if test "${upgrade_available}" = "1"; then
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot verification
|
||||
if test "${dualboot}" = "yes"; then
|
||||
# Dual boot (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${active_system}" = "linux_a"; then
|
||||
echo "Booting from system A ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_a tmp_mmcpart
|
||||
|
|
@ -48,12 +48,11 @@ else
|
|||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# We are booting from the SD card.
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
# SD boot (use SD specific rootfs partition uuid)
|
||||
setenv mmcroot PARTUUID=b74d3700-a3c2-4806-8cb6-4e0fed784c7f
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Back up environment variables
|
||||
setenv ORIG_overlays ${overlays}
|
||||
setenv ORIG_extra_bootargs ${extra_bootargs}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot verification
|
||||
if test "${dualboot}" = "yes"; then
|
||||
# Dual boot (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${active_system}" = "linux_a"; then
|
||||
echo "Booting from system A ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_a tmp_mmcpart
|
||||
|
|
@ -48,8 +48,8 @@ else
|
|||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# We are booting from the SD card.
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
# SD boot (use SD specific rootfs partition uuid)
|
||||
setenv mmcroot PARTUUID=b74d3700-a3c2-4806-8cb6-4e0fed784c7f
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot verification
|
||||
if test "${dualboot}" = "yes"; then
|
||||
# Dual boot (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${active_system}" = "linux_a"; then
|
||||
echo "Booting from system A ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_a tmp_mmcpart
|
||||
|
|
@ -48,8 +48,8 @@ else
|
|||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# We are booting from the SD card.
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
# SD boot (use SD specific rootfs partition uuid)
|
||||
setenv mmcroot PARTUUID=b74d3700-a3c2-4806-8cb6-4e0fed784c7f
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot verification
|
||||
if test "${dualboot}" = "yes"; then
|
||||
# Dual boot (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${active_system}" = "linux_a"; then
|
||||
echo "Booting from system A ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_a tmp_mmcpart
|
||||
|
|
@ -48,8 +48,8 @@ else
|
|||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# We are booting from the SD card.
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
# SD boot (use SD specific rootfs partition uuid)
|
||||
setenv mmcroot PARTUUID=b74d3700-a3c2-4806-8cb6-4e0fed784c7f
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,8 @@ if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
|||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Pre step: check if we boot from uSD.
|
||||
if test "${mmcbootdev}" = "1"; then
|
||||
# We are booting from the SD card.
|
||||
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
|
||||
elif test "${dualboot}" = "yes"; then
|
||||
# Dual boot (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${active_system}" = "linux_a"; then
|
||||
echo "Booting from system A ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_a tmp_mmcpart
|
||||
|
|
@ -50,6 +47,9 @@ else
|
|||
# We are booting from the eMMC using 'recovery'.
|
||||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# SD boot (use SD specific rootfs partition uuid)
|
||||
setenv mmcroot PARTUUID=b74d3700-a3c2-4806-8cb6-4e0fed784c7f
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
#
|
||||
# U-Boot bootscript for EMMC/SD images created by Yocto.
|
||||
#
|
||||
|
||||
# As the first step in the boot script, check if we are using DualBoot. This
|
||||
# requires the script to change some variables and save them, while the rest
|
||||
# of the script changes variables only temporarily without saving them.
|
||||
|
||||
# Build boot attempt message string
|
||||
if test "${bootlimit}" -gt 0 && test "${bootcount}" -gt 0; then
|
||||
bootattempt="(boot attempt ${bootcount}/${bootlimit})"
|
||||
fi
|
||||
|
||||
# Dual boot (only on EMMC)
|
||||
if test "${mmcbootdev}" = "${emmc_dev}" && test "${dualboot}" = "yes"; then
|
||||
if test "${active_system}" = "linux_a"; then
|
||||
echo "Booting from system A ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_a tmp_mmcpart
|
||||
part number mmc ${mmcbootdev} rootfs_a tmp_rootfs_index
|
||||
else
|
||||
echo "Booting from system B ${bootattempt}"
|
||||
part number mmc ${mmcbootdev} linux_b tmp_mmcpart
|
||||
part number mmc ${mmcbootdev} rootfs_b tmp_rootfs_index
|
||||
fi
|
||||
part uuid mmc ${mmcbootdev}:${tmp_rootfs_index} tmp_mmcroot
|
||||
if test "${mmcpart}" -ne "${tmp_mmcpart}"; then
|
||||
setexpr mmcpart ${tmp_mmcpart}
|
||||
env_save_needed="1"
|
||||
fi
|
||||
if test "${mmcroot}" != "PARTUUID=${tmp_mmcroot}"; then
|
||||
setenv mmcroot PARTUUID=${tmp_mmcroot}
|
||||
env_save_needed="1"
|
||||
fi
|
||||
if test "${env_save_needed}" = "1"; then
|
||||
env delete tmp_mmcpart tmp_rootfs_index tmp_mmcroot
|
||||
env save
|
||||
fi
|
||||
else
|
||||
echo "Booting system ${bootattempt}"
|
||||
# Get the UUID of the configured boot partition.
|
||||
part uuid mmc ${mmcbootdev}:${mmcpart} bootpart
|
||||
# Check the boot source.
|
||||
if test "${bootpart}" = "${part1_uuid}"; then
|
||||
# We are booting from the eMMC using 'linux'.
|
||||
true
|
||||
elif test "${bootpart}" = "${part2_uuid}"; then
|
||||
# We are booting from the eMMC using 'recovery'.
|
||||
setenv boot_initrd true
|
||||
setenv initrd_file uramdisk-recovery.img
|
||||
else
|
||||
# SD boot (use SD specific rootfs partition uuid)
|
||||
setenv mmcroot PARTUUID=b74d3700-a3c2-4806-8cb6-4e0fed784c7f
|
||||
fi
|
||||
fi
|
||||
|
||||
# Back up environment variables
|
||||
setenv ORIG_overlays ${overlays}
|
||||
|
||||
#
|
||||
# Determine overlays to apply depending on the hardware capabilities
|
||||
# described by the HWID, SOM version, and carrier board version.
|
||||
#
|
||||
setexpr module_has_wifi ${hwid_2} \& 20000
|
||||
setexpr module_has_wifi ${module_has_wifi} / 20000
|
||||
setexpr module_has_bt ${hwid_2} \& 40000
|
||||
setexpr module_has_bt ${module_has_bt} / 40000
|
||||
|
||||
if test "${module_has_bt}" = "1" && test -z "${disable_bt}"; then
|
||||
setenv overlays ccimx95_bt.dtbo,${overlays}
|
||||
fi
|
||||
|
||||
if test "${module_has_wifi}" = "1" && test -z "${disable_wifi}"; then
|
||||
setenv overlays ccimx95_wifi.dtbo,${overlays}
|
||||
fi
|
||||
|
||||
if test -z "${disable_npu}"; then
|
||||
setenv overlays ccimx95_npu.dtbo,${overlays}
|
||||
fi
|
||||
|
||||
if test "${dboot_kernel_var}" = "fitimage" && test -z "${temp-fitimg-loaded}"; then
|
||||
# Set temp var to avoid re-loading fitimage
|
||||
setenv temp-fitimg-loaded yes
|
||||
fi
|
||||
dboot linux mmc ${mmcbootdev}:${mmcpart}
|
||||
|
||||
#
|
||||
# Undo changes to environment variables
|
||||
#
|
||||
# (we only get here in case of an error on the dboot command)
|
||||
#
|
||||
setenv overlays ${ORIG_overlays}
|
||||
setenv ORIG_overlays
|
||||
|
|
@ -179,7 +179,6 @@ fi
|
|||
# - Erase the 'update' partition
|
||||
# - Configure recovery to wipe 'update' partition
|
||||
# - Run 'recovery' and let the system boot after
|
||||
# NOTE: insert some 'usb reset' commands to avoid EHCI timeouts
|
||||
setenv bootcmd "
|
||||
env default -a;
|
||||
setenv dualboot ${dualboot};
|
||||
|
|
@ -228,9 +227,6 @@ setenv bootcmd "
|
|||
exit;
|
||||
fi;
|
||||
fi;
|
||||
if test "${INSTALL_MEDIA}" = "usb"; then
|
||||
usb reset;
|
||||
fi;
|
||||
echo \"\";
|
||||
echo \"\";
|
||||
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
From: Arturo Buzarra <arturo.buzarra@digi.com>
|
||||
Date: Thu, 30 Oct 2025 14:35:29 +0100
|
||||
Date: Wed, 18 Mar 2026 15:26:07 +0100
|
||||
Subject: [PATCH] ARM: dts: ccmp25: add signed firmware support for RPROC
|
||||
|
||||
Declare only the shared memory used for inter-processor communication
|
||||
|
|
@ -14,7 +14,7 @@ Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
|
|||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/ccmp25.dtsi b/arch/arm/dts/ccmp25.dtsi
|
||||
index 913eac366b9..51b65f2408a 100644
|
||||
index cdbc26efabc..b0a91cb0180 100644
|
||||
--- a/arch/arm/dts/ccmp25.dtsi
|
||||
+++ b/arch/arm/dts/ccmp25.dtsi
|
||||
@@ -246,11 +246,8 @@
|
||||
|
|
@ -25,7 +25,7 @@ index 913eac366b9..51b65f2408a 100644
|
|||
- <&ipc_shmem_1>, <&vdev0vring0>,
|
||||
- <&vdev0vring1>, <&vdev0buffer>,
|
||||
- <&cm33_sram2>;
|
||||
- st,syscfg-nsvtor = <&a35ss_syscfg 0xa8 0xffffff80>;
|
||||
- st,syscfg-nsvtor = <&a35ss_syscfg 0x20a8 0xffffff80>;
|
||||
+ compatible = "st,stm32mp2-m33-tee";
|
||||
+ memory-region = <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>, <&ipc_shmem_1>;
|
||||
status = "okay";
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1"
|
|||
DEPENDS += "flex-native bison-native"
|
||||
DEPENDS += "python3-setuptools-native"
|
||||
|
||||
SRCBRANCH = "v2023.10/master"
|
||||
SRCBRANCH = "v2023.10/maint"
|
||||
SRCREV = "${AUTOREV}"
|
||||
|
||||
SRC_URI += " \
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1"
|
|||
|
||||
DEPENDS += "flex-native bison-native"
|
||||
|
||||
SRCBRANCH = "v2024.04/master"
|
||||
SRCBRANCH = "v2024.04/maint"
|
||||
SRCREV = "${AUTOREV}"
|
||||
|
||||
COMPATIBLE_MACHINE = "(ccimx6$|ccimx6ul|ccimx8m|ccimx8x|ccimx9)"
|
||||
|
|
|
|||
|
|
@ -17,10 +17,61 @@
|
|||
BASE_INIT="$(readlink -f "@base_sbindir@/init")"
|
||||
BASE_INIT_ORIG="$(readlink -f "@base_sbindir@/init.orig")"
|
||||
INIT_SYSTEMD="@systemd_unitdir@/systemd"
|
||||
EMMCROOTFS="$(grep -qs 'root=PARTUUID.*' /proc/cmdline 2>/dev/null && echo 1)"
|
||||
|
||||
get_block_disk() {
|
||||
local dev
|
||||
local syspath
|
||||
|
||||
dev="${1##*/}"
|
||||
syspath="$(readlink -f "/sys/class/block/${dev}")"
|
||||
[ -n "${syspath}" ] || return
|
||||
|
||||
if [ -f "${syspath}/partition" ]; then
|
||||
basename "$(dirname "${syspath}")"
|
||||
else
|
||||
basename "${syspath}"
|
||||
fi
|
||||
}
|
||||
|
||||
get_root_disk() {
|
||||
local ROOT_DEV
|
||||
local devname
|
||||
local uevent
|
||||
|
||||
ROOT_DEV="$(stat -c%D /)"
|
||||
|
||||
for uevent in /sys/class/block/*/uevent; do
|
||||
devname="$(sed -ne 's/^DEVNAME=//p' "${uevent}")"
|
||||
[ -n "${devname}" ] || continue
|
||||
|
||||
if [ "$(stat -c"%02t%02T" "/dev/${devname}")" = "${ROOT_DEV}" ]; then
|
||||
get_block_disk "${devname}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
get_active_system() {
|
||||
if [ -z "${EMMCROOTFS}" ]; then
|
||||
local ROOT_DEV
|
||||
local devname
|
||||
local label
|
||||
local uevent
|
||||
|
||||
ROOT_DEV="$(stat -c%D /)"
|
||||
|
||||
for uevent in /sys/class/block/*/uevent; do
|
||||
devname="$(sed -ne 's/^DEVNAME=//p' "${uevent}")"
|
||||
label="$(sed -ne 's/^PARTNAME=//p' "${uevent}")"
|
||||
[ -n "${devname}" ] || continue
|
||||
[ -n "${label}" ] || continue
|
||||
|
||||
if [ "$(stat -c"%02t%02T" "/dev/${devname}")" = "${ROOT_DEV}" ]; then
|
||||
ACTIVE_SYSTEM="${label}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "${ACTIVE_SYSTEM}" ]; then
|
||||
# For a read-only filesystem this will be /dev/ubiblock0_X
|
||||
# For an ubifs filesystem this will be ubiX:rootfs_X
|
||||
ACTIVE_SYSTEM="$(sed -e 's/^.*root=\([^ ]*\) .*$/\1/' /proc/cmdline 2>/dev/null)"
|
||||
|
|
@ -36,17 +87,6 @@ get_active_system() {
|
|||
#Character device major/minor: 242:6
|
||||
ACTIVE_SYSTEM="$(ubinfo "${ACTIVE_SYSTEM}" | sed -ne '/^Name/s,.* \([^[:blank:]]\+\)$,\1,g;T;p')"
|
||||
fi
|
||||
else
|
||||
local MMCROOT_DEV
|
||||
|
||||
MMCROOT_DEV="$(stat -c%D /)"
|
||||
|
||||
for label in /dev/disk/by-partlabel/*; do
|
||||
if [ "$(stat -c"%02t%02T" "$(realpath "${label}")")" = "${MMCROOT_DEV}" ]; then
|
||||
ACTIVE_SYSTEM="$(basename "${label}")"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -z "${ACTIVE_SYSTEM}" ]; then
|
||||
|
|
@ -74,6 +114,17 @@ elif [ "${SUBSYSTEM}" = "ubi" ]; then
|
|||
[ -n "${result}" ] && exit 0
|
||||
fi
|
||||
|
||||
if [ "${SUBSYSTEM}" = "block" ]; then
|
||||
ROOT_DISK="$(get_root_disk)"
|
||||
DEV_DISK="$(get_block_disk "${DEVNAME}")"
|
||||
|
||||
if [ -n "${ROOT_DISK}" ] && [ -n "${DEV_DISK}" ] &&
|
||||
[ "${ROOT_DISK}" != "${DEV_DISK}" ]; then
|
||||
logger "Skip mounting partition '${PARTNAME}', because it does not belong to the root disk"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
MOUNT_FOLDER=${PARTNAME}
|
||||
MOUNT_PARAMS="-o silent"
|
||||
# Mount 'linux' partition as read-only
|
||||
|
|
@ -89,10 +140,10 @@ if grep -qs "${MOUNTPOINT}" /proc/mounts; then
|
|||
exit 0
|
||||
fi
|
||||
|
||||
# Get from proc/cmdline the active system "a" or "b"
|
||||
get_active_system || exit
|
||||
|
||||
if [ "${PARTNAME}" = "linux_a" ] || [ "${PARTNAME}" = "linux_b" ]; then
|
||||
# Get from proc/cmdline the active system "a" or "b"
|
||||
get_active_system || exit
|
||||
|
||||
PARTINDEX="${PARTNAME#linux_}"
|
||||
if [ "${ACTIVE_SYSTEM}" != "${PARTINDEX}" ]; then
|
||||
logger "Skip mount partition '${PARTNAME}', because it is not the active system"
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
# Copyright (C) 2016-2026, Digi International Inc.
|
||||
|
||||
SUMMARY = "MCA firmware management tool"
|
||||
SECTION = "console/tools"
|
||||
LICENSE = "CLOSED"
|
||||
|
||||
PKGNAME = "mca_tool"
|
||||
|
||||
# ARM tarball
|
||||
SRC_URI:arm = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}-${TUNE_ARCH}.tar.gz;name=arm"
|
||||
SRC_URI[arm.md5sum] = "ffa8967cb9b684f3846b641a5d57b8f6"
|
||||
SRC_URI[arm.sha256sum] = "057c289990d79f0b749e9d0d7af2570332e9215e697de75dc6851d89bdd61dff"
|
||||
|
||||
# AARCH64 tarball
|
||||
SRC_URI:aarch64 = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}-${TUNE_ARCH}.tar.gz;name=aarch64"
|
||||
SRC_URI[aarch64.md5sum] = "12033830965f2861628461c612a7604e"
|
||||
SRC_URI[aarch64.sha256sum] = "2467e426c6a4e6b89f4aaced846c1f52787e130f16ffb62e6f046bea7bc4f21f"
|
||||
|
||||
S = "${WORKDIR}/${PKGNAME}-${PV}"
|
||||
|
||||
inherit bin_package
|
||||
|
||||
HAS_USRMERGE = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '1', '0', d)}"
|
||||
|
||||
do_install:append() {
|
||||
# Move binaries from /sbin to /usr/sbin to avoid usrmerge QA error.
|
||||
if [ "${HAS_USRMERGE}" = "1" ]; then
|
||||
install -d ${D}${base_sbindir}
|
||||
mv ${D}/sbin/* ${D}${base_sbindir} && rmdir ${D}/sbin
|
||||
fi
|
||||
}
|
||||
|
||||
INSANE_SKIP:${PN} = "already-stripped"
|
||||
|
||||
COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8m|ccimx8x|ccmp1|ccimx95)"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue