DTS/Binding Issue migrating from 2.0.0 to 2.1.0 #nrf52832

matt@...
 

Hello Zephyr Users,

I have inherited a Zephyr project using nRF52832 from another developer and am having an issue migrating from 2.0.0 to 2.1.0. Its probably something simple but I'm fairly new to the devicetree system and can't seem to wrap my head around whats wrong here.

In my custom board .dts file I have the following i2c configuration (note that the lis3dh is a zephyr-supported sensor driver and I have custom drivers/bindings for tca6507 and mcp47cvb12):

&i2c0 {
        status = "okay";
        sda-pin = <7>;
        scl-pin = <5>;
        clock-frequency = <I2C_BITRATE_FAST>;
 
        lis3dh@19 {
                compatible = "st,lis2dh", "st,lis3dh";
                reg = <0x19>;
                irq-gpios = <&gpio0 19 0>;
                label = "LIS3DH";
        };
 
        tca6507@45 {
                compatible = "ti,tca6507";
                reg = <0x45>;
                enable-gpios = <&gpio0 26 GPIO_DIR_OUT>;
                label = "TCA6507";
        };
 
        mcp47cvb12@60 {
                compatible = "mcp,mcp47cvb12";
                reg = <0x60>;
                label = "MCP47CVB12";
        };
};
Using OS v2.0.0 this built properly. After upgrading the OS to v2.1.0, I get the following error from `zephyr/scripts/dts/extract_dts_includes.py` on build: 

Exception: /soc/i2c@40003000/lis3dh@19 defines parent /soc/i2c@40003000 as bus master, but /soc/i2c@40003000 is not configured as bus master in binding
By changing `compatible = "st,lis2dh", "st,lis3dh";` to `compatible = "st,lis2dh-i2c", "st,lis3dh-i2c";` in the .dts file this gets rid of the error for the lis3dh, but i get a similar error for `mcp47cvb12` and `tca6507`. For completeness, here are my .yaml files for these two bindings:

mcp,mcp47cvb12.yaml:
title: Microchip MCP47CVB12 Driver
 
description: Microchip MCP47CVB12 DAC binding
 
compatible: "mcp,mcp47cvb12"
 
include: i2c-device.yaml
ti,tca6507.yaml:
title: TI TCA6507 LED Driver
 
description: TI TCA6507 LED binding
 
compatible: "ti,tca6507"
 
include: i2c-device.yaml
 
properties:
    enable-gpios:
      type: compound
      required: true
Alright so onto direct questions:

  1. What does the error message `but /soc/i2c@40003000 is not configured as bus master in binding` mean? It seems to me that `i2c-device.yaml` correctly sets `parent-bus: i2c`
  2. Why does adding the `-i2c` to the .dts file `compatible` field for the lis3dh fix this error? I never had to add this in the past.
  3. What do I need to change, if anything, in my custom device bindings to fix this error?
Thank you for your help,

Matt

Join users@lists.zephyrproject.org to automatically receive all group messages.