The MCA implements a watchdog timer in its firmware. Any internal CPU watchdog timer on the ConnectCore 95 is disabled by default because the MCA is responsible for the power/reset initialization of the SOM as a whole.
Features
You can configure the following MCA watchdog features:
-
Set the timeout to a value between 1 and 255 seconds.
-
Initiate interrupt or system reset.
-
Initiate full-system reset (including the MCA itself) or CPU-only reset.
Kernel configuration
You can manage the MCA watchdog driver support through the following kernel configuration option:
-
Digi ConnectCore SOMs Micro Controller Assist Watchdog (
CONFIG_MCA_WATCHDOG)
This option is enabled as built-in on the default ConnectCore 95 kernel configuration file.
Kernel driver
The MCA watchdog driver is located at:
| File | Description |
|---|---|
MCA watchdog driver |
Device tree bindings and customization
The MCA watchdog device tree binding is documented at Documentation/devicetree/bindings/watchdog/digi,mca-wdt.yaml.
Watchdog inside the MCA
mca_cc95_smarc: mca@20 {
[...]
wdt {
compatible = "digi,mca-wdt";
digi,full-reset;
};
};
Using the watchdog
The watchdog is accessible via the file descriptor /dev/watchdog0.
For information about the watchdog API, see the Linux kernel documentation at Documentation/watchdog/watchdog-api.rst.
| When a device enters suspend mode, the watchdog timer is suspended as well. The timer resumes when the device resumes operation. |
Sample application
An example application called apix-watchdog-example is included in the dey-examples-digiapix recipe (part of dey-examples package) of the meta-digi layer.
This application uses the Digi APIx library to enable a watchdog device on the ConnectCore 95.
Go to GitHub to see the application instructions and source code.
See Watchdog API for more information about the watchdog APIx.
Enabling the watchdog in U-Boot
In a typical use case, a user space application or service starts the watchdog. However, if the system hangs before reaching this point, the watchdog is not able to reset the device. To avoid this situation, you may want to start the watchdog as early as possible, such as at the bootloader stage. Since the default U-Boot cannot start the watchdog, you must change the configuration and recompile U-Boot to add this functionality. To enable the MCA watchdog in U-Boot, add the following configuration options in the defconfig file that corresponds to your ConnectCore 95 variant (see U-Boot files by variant):
CONFIG_WDT=y
CONFIG_WDT_MCA=y
| U-Boot not only enables but also starts the watchdog when compiled with these entries. |
The default timeout for MCA watchdog is 128000 milliseconds. You can override that value by setting the following entry to a timeout in ms on the defconfig file:
CONFIG_WATCHDOG_TIMEOUT_MSECS=50000
Recompile U-Boot with the new configuration options, then program it on the device.
See Program images from U-Boot for more information.
The new U-Boot banner displays a new WDT line showing the watchdog started with the configured timeout:
U-Boot SPL dub-2024.04-r5.2+g25c8faec2f83+p0 (May 27 2026 - 10:40:43 +0000)
SOC: 0xb0009500
LC: 0x40010
SYS Boot reason: por, origin: -1, errid: -1
SYS shutdown reason: por, origin: -1, errid: -1
DDRMIX is powered UP
Normal Boot
Trying to boot from MMC1
Primary set selected
Load image from MMC/SD 0xc9400
NOTICE: BL31: v2.10.0 (release):lf-6.6.52-2.2.2-dirty
NOTICE: BL31: Built : 09:57:54, Oct 17 2025
U-Boot dub-2024.04-r5.2+g25c8faec2f83+p0 (May 27 2026 - 10:40:43 +0000)
CPU: i.MX95 rev2.0 at 1800MHz
CPU: Extended Industrial temperature grade (-40C to 125C) at 28C
LM Boot reason: por, origin: -1, errid: -1
LM shutdown reason: por, origin: -1, errid: -1
DRAM: 1.8 GiB
Error: ele_read_common_fuse: ret -5, fuse_id 0x139, response 0xbc29
ahab read fuse failed -5, 0xbc29
Cannot read HWID
MCA: HW_VER=1 FW_VER=0.09
cfg name not match mx95alt:ccimx95dvk, ignore
Core: 303 devices, 36 uclasses, devicetree: separate
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
[*]-Video Link 0clk disp1pix already disabled
(1280 x 800)
[0] display-controller@4b400000, video
[1] channel@0, video_bridge
[2] bridge@8, video_bridge
[3] channel@0, display
[4] lvds0_panel, panel
In: serial
Out: serial
Err: serial
Model: Digi International ConnectCore 95 DVK
ConnectCore 95 SOM variant 0x03: 1.8 GiB LPDDR5, Wi-Fi, Bluetooth
ConnectCore 95 SMARC variant 0x03: Dual Ethernet, MCA
Board version 2, ID undefined
Boot: MMC0
BuildInfo:
- SM firmware Build 733, Commit ecd89d0b, May 05 2026 00:00:18
- ELE firmware version 2.0.3-5f1204b7
Error: ele_read_common_fuse: ret -5, fuse_id 0x139, response 0xbc29
ahab read fuse failed -5, 0xbc29
flash target is MMC:0
Net: eth0: enetc-0 [PRIME], eth1: enetc-1
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
=>
| Your application must refresh the MCA watchdog as soon as Linux starts; otherwise the system reboots after the configured timeout. See Using the watchdog. |