QSPI for ATSAME51 #flash


Bolivar, Marti
 

Hi Theo,

"Theo Hussey via lists.zephyrproject.org"
<theo=open-cosmos.com@lists.zephyrproject.org> writes:

Hi,

I am trying to develop an out of tree QSPI driver for the ATSAME51 micro controller.

I have added my entries to the device tree:

soc {
qspi0 : qspi@42003400 {
compatible = "atmel,sam0-qspi" ;
reg = < 0x42003400 0x40 >;
interrupts = < 134 0 >;
status = "okay" ;
label = "QSPI_0" ;
clocks = < &mclk 0x10 13 >, < &mclk 0x10 21 >, < &mclk 0x1C 13 >;
clock-names = "QSPI_AHB_Clock" , "QSPI_2X_AHB_Clock" , "QSPI_APB_Clock" ;
#address-cells = < 1 >;
#size-cells = < 0 >;
};
};
};
There is an extra unmatched "};" here. I'm assuming that is just a
copy/paste issue in this email? It looks like a syntax error.


&qspi0 {
gd25q16 : gd25q16c@0 {
compatible = "jedec,spi-nor" ;
label = "GD25Q16C" ;
reg = < 0 >;
spi-max-frequency = < 80000000 >;
size = < 0x200000 >;
has-be32k;
has-dpd;
t-enter-dpd = < 20000 >;
t-exit-dpd = < 100000 >;
jedec-id = [c8 40 15] ;
};
};

But I receive the following errors when trying to build, in comparison if I add the nor flash as an child of a sercom spi peripheral it builds fine. Does anyone have any suggestions on what could be causing this?
[snip]

zephyr/include/generated/devicetree_unfixed.h:4014:35: error: 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_BUS_P_label' undeclared (first use in this function); did you mean 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_label'?
I'm going to explain what this mess means for the sake of the list
archives before getting to what I am guessing the problem is.

'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_BUS_P_label'

The 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0' part is the 'node
identifier' for the gd25q16c@0 node.

'Node identifiers' are introduced here:

https://docs.zephyrproject.org/latest/guides/dts/api-usage.html#node-identifiers

The secret decoder ring for unpacking node identifiers is:

- 'DT_N' -> 'devicetree node'
- '_S_' -> '/'
- all special characters become '_'

So that:

DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_BUS_P_label

becomes:

devicetree node /soc/qspi@42003400/gd25q16c@0 _BUS_P_label

The trailing '_BUS_P_label' is just the devicetree API trying to figure
out what the 'label' property of the bus node for
/soc/qspi@42003400/gd25q16c@0 is.

I also see:

- 'qspi@42003400' does have a label property in your DTS, "QSPI_0"
- its compatible, 'atmel,sam0-qspi', is not upstream

So I'm guessing that the problem is:

- you've got a custom binding for 'atmel,sam0-qspi',
- it is a missing a 'bus: qspi' line

Example binding with a 'bus: qspi' line:

https://github.com/zephyrproject-rtos/zephyr/blob/master/dts/bindings/qspi/st%2Cstm32-qspi.yaml#L23

If that line is missing, please add it and try again.

Otherwise please provide more details on your binding.

Thanks and HTH,
Martí


Theo Hussey
 

Hi,

I am trying to develop an out of tree QSPI driver for the ATSAME51 micro controller.

I have added my entries to the device tree:

soc {
qspi0: qspi@42003400 {
compatible = "atmel,sam0-qspi";
reg = <0x42003400 0x40>;
interrupts = <134 0>;
status = "okay";
label = "QSPI_0";
clocks = <&mclk 0x10 13>, <&mclk 0x10 21>, <&mclk 0x1C 13>;
clock-names = "QSPI_AHB_Clock", "QSPI_2X_AHB_Clock", "QSPI_APB_Clock";
#address-cells = <1>;
#size-cells = <0>;
};
};
};

&qspi0 {
gd25q16: gd25q16c@0 {
compatible = "jedec,spi-nor";
label = "GD25Q16C";
reg = <0>;
spi-max-frequency = <80000000>;
size = <0x200000>;
has-be32k;
has-dpd;
t-enter-dpd = <20000>;
t-exit-dpd = <100000>;
jedec-id = [c8 40 15];
};
};


But I receive the following errors when trying to build, in comparison if I add the nor flash as an child of a sercom spi peripheral it builds fine. Does anyone have any suggestions on what could be causing this?

92/128] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj

FAILED: zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj 

/home/theo/zephyr-sdk-0.11.4/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc -DBUILD_VERSION=zephyr-v2.4.0 -DKERNEL -D_FORTIFY_SOURCE=2 -D__PROGRAM_START -D__ZEPHYR_SUPERVISOR__ -D__ZEPHYR__=1 -I/home/theo/source/zephyr/zephyrproject/zephyr/include -Izephyr/include/generated -I/home/theo/source/zephyr/zephyrproject/zephyr/soc/arm/atmel_sam0/same54 -I/home/theo/source/zephyr/zephyrproject/zephyr/drivers -I/home/theo/source/zephyr/zephyrproject/zephyr/soc/arm/atmel_sam0/common/. -I/home/theo/source/zephyr/zephyrproject/modules/hal/cmsis/CMSIS/Core/Include -I/home/theo/source/zephyr/zephyrproject/modules/hal/atmel/asf/sam0/include/same54 -I/home/theo/source/zephyr/zephyrproject/zephyr/drivers/spi -isystem /home/theo/source/zephyr/zephyrproject/zephyr/lib/libc/minimal/include -isystem /home/theo/zephyr-sdk-0.11.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/9.2.0/include -isystem /home/theo/zephyr-sdk-0.11.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/9.2.0/include-fixed -Os -imacros /home/theo/source/zephyr/obc-watchdog/build/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -g -mcpu=cortex-m4 -mthumb -mabi=aapcs -imacros /home/theo/source/zephyr/zephyrproject/zephyr/include/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -fmacro-prefix-map=/home/theo/source/zephyr/obc-watchdog=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/theo/source/zephyr/zephyrproject/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/theo/source/zephyr/zephyrproject=WEST_TOPDIR -ffunction-sections -fdata-sections -std=c99 -nostdinc -MD -MT zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj -MF zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj.d -o zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj   -c /home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c

In file included from /home/theo/source/zephyr/zephyrproject/zephyr/include/arch/arm/aarch32/arch.h:20,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/arch/cpu.h:19,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/kernel_includes.h:38,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/kernel.h:17,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/init.h:11,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/device.h:22,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/drivers/flash.h:26,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:13:

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c: In function 'spi_nor_configure':

zephyr/include/generated/devicetree_unfixed.h:4014:35: error: 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_BUS_P_label' undeclared (first use in this function); did you mean 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_label'?

 4014 | #define DT_N_INST_0_jedec_spi_nor DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0

      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1911:38: note: in definition of macro 'DT_CAT'

 1911 | #define DT_CAT(node_id, prop_suffix) node_id##prop_suffix

      |                                      ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1382:31: note: in expansion of macro 'DT_PROP'

 1382 | #define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label)

      |                               ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1375:25: note: in expansion of macro 'DT_CAT'

 1375 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)

      |                         ^~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1382:39: note: in expansion of macro 'DT_BUS'

 1382 | #define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label)

      |                                       ^~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1721:33: note: in expansion of macro 'DT_BUS_LABEL'

 1721 | #define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst))

      |                                 ^~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:106:36: note: in expansion of macro 'DT_N_INST_0_jedec_spi_nor'

  106 | #define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__

      |                                    ^

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:105:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'

  105 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)

      |                          ^~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:297:31: note: in expansion of macro 'UTIL_CAT'

  297 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))

      |                               ^~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1426:27: note: in expansion of macro 'DT_INST'

 1426 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)

      |                           ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1721:46: note: in expansion of macro 'DT_DRV_INST'

 1721 | #define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst))

      |                                              ^~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:838:33: note: in expansion of macro 'DT_INST_BUS_LABEL'

  838 |  data->spi = device_get_binding(DT_INST_BUS_LABEL(0));

      |                                 ^~~~~~~~~~~~~~~~~

zephyr/include/generated/devicetree_unfixed.h:4014:35: note: each undeclared identifier is reported only once for each function it appears in

 4014 | #define DT_N_INST_0_jedec_spi_nor DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0

      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1911:38: note: in definition of macro 'DT_CAT'

 1911 | #define DT_CAT(node_id, prop_suffix) node_id##prop_suffix

      |                                      ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1382:31: note: in expansion of macro 'DT_PROP'

 1382 | #define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label)

      |                               ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1375:25: note: in expansion of macro 'DT_CAT'

 1375 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)

      |                         ^~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1382:39: note: in expansion of macro 'DT_BUS'

 1382 | #define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label)

      |                                       ^~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1721:33: note: in expansion of macro 'DT_BUS_LABEL'

 1721 | #define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst))

      |                                 ^~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:106:36: note: in expansion of macro 'DT_N_INST_0_jedec_spi_nor'

  106 | #define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__

      |                                    ^

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:105:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'

  105 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)

      |                          ^~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:297:31: note: in expansion of macro 'UTIL_CAT'

  297 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))

      |                               ^~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1426:27: note: in expansion of macro 'DT_INST'

 1426 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)

      |                           ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1721:46: note: in expansion of macro 'DT_DRV_INST'

 1721 | #define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst))

      |                                              ^~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:838:33: note: in expansion of macro 'DT_INST_BUS_LABEL'

  838 |  data->spi = device_get_binding(DT_INST_BUS_LABEL(0));

      |                                 ^~~~~~~~~~~~~~~~~

zephyr/include/generated/devicetree_unfixed.h:4014:35: error: 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_spi_max_frequency' undeclared (first use in this function); did you mean 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_reg_IDX_0'?

 4014 | #define DT_N_INST_0_jedec_spi_nor DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0

      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1911:38: note: in definition of macro 'DT_CAT'

 1911 | #define DT_CAT(node_id, prop_suffix) node_id##prop_suffix

      |                                      ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1448:34: note: in expansion of macro 'DT_PROP'

 1448 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)

      |                                  ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:106:36: note: in expansion of macro 'DT_N_INST_0_jedec_spi_nor'

  106 | #define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__

      |                                    ^

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:105:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'

  105 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)

      |                          ^~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:297:31: note: in expansion of macro 'UTIL_CAT'

  297 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))

      |                               ^~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1426:27: note: in expansion of macro 'DT_INST'

 1426 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)

      |                           ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1448:42: note: in expansion of macro 'DT_DRV_INST'

 1448 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)

      |                                          ^~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:843:28: note: in expansion of macro 'DT_INST_PROP'

  843 |  data->spi_cfg.frequency = DT_INST_PROP(0, spi_max_frequency);

      |                            ^~~~~~~~~~~~

In file included from /home/theo/source/zephyr/zephyrproject/zephyr/include/toolchain.h:41,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/sys/errno_private.h:10,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/lib/libc/minimal/include/errno.h:20,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:12:

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c: At top level:

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:982:1: error: static assertion failed: "jedec,spi-nor jedec-id required for non-runtime SFDP"

  982 | BUILD_ASSERT(DT_INST_NODE_HAS_PROP(0, jedec_id),

      | ^~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:991:1: error: static assertion failed: "jedec,spi-nor size required for non-runtime SFDP page layout"

  991 | BUILD_ASSERT(DT_INST_NODE_HAS_PROP(0, size),

      | ^~~~~~~~~~~~

zephyr/include/generated/devicetree_unfixed.h:4014:35: error: 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_size' undeclared here (not in a function); did you mean 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_reg'?

 4014 | #define DT_N_INST_0_jedec_spi_nor DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0

      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:393:32: note: in expansion of macro 'DT_CAT'

  393 | #define DT_PROP(node_id, prop) DT_CAT(node_id, _P_##prop)

      |                                ^~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1448:34: note: in expansion of macro 'DT_PROP'

 1448 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)

      |                                  ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:106:36: note: in expansion of macro 'DT_N_INST_0_jedec_spi_nor'

  106 | #define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__

      |                                    ^

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:105:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'

  105 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)

      |                          ^~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:297:31: note: in expansion of macro 'UTIL_CAT'

  297 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))

      |                               ^~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1426:27: note: in expansion of macro 'DT_INST'

 1426 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)

      |                           ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1448:42: note: in expansion of macro 'DT_DRV_INST'

 1448 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)

      |                                          ^~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:995:23: note: in expansion of macro 'DT_INST_PROP'

  995 | #define INST_0_BYTES (DT_INST_PROP(0, size) / 8)

      |                       ^~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:1001:29: note: in expansion of macro 'INST_0_BYTES'

 1001 | #define LAYOUT_PAGES_COUNT (INST_0_BYTES / CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE)

      |                             ^~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:1003:55: note: in expansion of macro 'LAYOUT_PAGES_COUNT'

 1003 | BUILD_ASSERT((CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE * LAYOUT_PAGES_COUNT)

      |                                                       ^~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:1003:14: error: expression in static assertion is not an integer

 1003 | BUILD_ASSERT((CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE * LAYOUT_PAGES_COUNT)

      |              ^

In file included from /home/theo/source/zephyr/zephyrproject/zephyr/include/arch/arm/aarch32/arch.h:20,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/arch/cpu.h:19,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/kernel_includes.h:38,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/kernel.h:17,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/init.h:11,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/device.h:22,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/include/drivers/flash.h:26,

                 from /home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:13:

zephyr/include/generated/devicetree_unfixed.h:4014:35: error: 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_jedec_id' undeclared here (not in a function); did you mean 'DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0_P_reg'?

 4014 | #define DT_N_INST_0_jedec_spi_nor DT_N_S_soc_S_qspi_42003400_S_gd25q16c_0

      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1911:38: note: in definition of macro 'DT_CAT'

 1911 | #define DT_CAT(node_id, prop_suffix) node_id##prop_suffix

      |                                      ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1448:34: note: in expansion of macro 'DT_PROP'

 1448 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)

      |                                  ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:106:36: note: in expansion of macro 'DT_N_INST_0_jedec_spi_nor'

  106 | #define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__

      |                                    ^

/home/theo/source/zephyr/zephyrproject/zephyr/include/sys/util_internal.h:105:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'

  105 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)

      |                          ^~~~~~~~~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:297:31: note: in expansion of macro 'UTIL_CAT'

  297 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))

      |                               ^~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1426:27: note: in expansion of macro 'DT_INST'

 1426 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)

      |                           ^~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/include/devicetree.h:1448:42: note: in expansion of macro 'DT_DRV_INST'

 1448 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)

      |                                          ^~~~~~~~~~~

/home/theo/source/zephyr/zephyrproject/zephyr/drivers/flash/spi_nor.c:1030:14: note: in expansion of macro 'DT_INST_PROP'

 1030 |  .jedec_id = DT_INST_PROP(0, jedec_id),

      |              ^~~~~~~~~~~~

[93/128] Building C object modules/qspi/CMakeFiles/..__..__obc-watchdog__drivers__qspi.dir/qspi_sam0.c.obj

../drivers/qspi/qspi_sam0.c:53:12: warning: 'qspi_sam0_configure' defined but not used [-Wunused-function]

   53 | static int qspi_sam0_configure(const struct device *dev, const struct spi_config *config)

      |            ^~~~~~~~~~~~~~~~~~~

[101/128] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj

ninja: build stopped: subcommand failed.