Device Tree, proj.conf and strange uart behaviour

What is going on here?

I'm trying to get the central_uart example to run on the xiao ble sense nrf52840 board but uart_init() fails when trying to set the callback:

uart_callback_set(uart, uart_cb, NULL);  // This fails since no set function
If I select to build for ntf52840 DK nrf52840, same code but different Device Tree, uart_init works.
I've tried to compare the two Trees by diffing the zephyr.dts files but find them same for the uart0 setup:
uart0: xiao_serial: uart@40002000 {
compatible = "nordic,nrf-uarte";
reg = < 0x40002000 0x1000 >;
interrupts = < 0x2 0x1 >;
status = "okay";
current-speed = < 0x1c200 >;
pinctrl-0 = < &uart0_default >;
pinctrl-1 = < &uart0_sleep >;
pinctrl-names = "default", "sleep";
};
uart0_default: uart0_default {
phandle = < 0x2 >;
group1 {
psels = < 0x6 >, < 0x20005 >;
};
group2 {
psels = < 0x10008 >, < 0x30007 >;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
phandle = < 0x3 >;
group1 {
psels = < 0x6 >, < 0x10008 >, < 0x20005 >, < 0x30007 >;
low-power-enable;
};
};
The proj.conf file sets
CONFIG_UART_NRFX=y
CONFIG_UART_NRFX_UARTE_LEGACY_SHIM=y
CONFIG_UART_0_ASYNC=y
CONFIG_UART_0_ENHANCED_POLL_OUT=y
When I compare the two different .config files I find that the xiao boards has
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_UART_CONSOLE=y
CONFIG_UART_EXCLUSIVE_API_CALLBACKS=y
CONFIG_UART_0_INTERRUPT_DRIVEN=y
Whereas the nrf52840 DK has
CONFIG_UART_0_ASYNC=y
Is there anyone with a better understanding of the build system that can advice where/why this difference arise?
Related