Hi Simon, Hi Peter, First of all, thanks a lot for your answers.
1. When I enable the i2c bus in the config.txt (which is parsed by the rpi first stage bootloader), the overlay put this as compatible:"brcm,bcm2835". I checked in the source of U-Boot and the driver is not available. 2. One solution could be to use the i2c-gpio driver instead of the default i2c controller. U-Boot has this driver. 3. Since the device tree passed by the rpi bootloader is stored in the variable fw_dtb_pointer (see the lowlevel_init.S) would I be able to do the following: 3.1 remove the automatic selection for the device tree passed by the rpi bootload 3.2 system starts and use the default device tree where the i2c bus is defined with i2c-gpio, access the device I need and store the information needed 3.3 get the device tree address from fw_dtb_pointer, set fdt address fdt addr with the new device tree and then start the kernel I have another question, what triggers the DM to check for the device (with dm tree command there is a X under the column probed). Because here we could have a really simple device tree with the minimum configuration for just the i2c and load it from U-Boot, perform the action needed and then boot the kernel by passing the device tree provided by the first stage bootloder. Regards Romain Le sam. 17 août 2024 à 17:57, Simon Glass <s...@chromium.org> a écrit : > +Peter Robinson > +Matthias Brugger > > Hi Romain, > > On Sat, 17 Aug 2024 at 07:01, Romain Crausaz <crausaz.rom...@gmail.com> > wrote: > > > > Hi all, > > > > > > > > I am currently facing an issue with U-Boot and a raspberry pi CM4. Here > is > > the setup: > > > > > > > > 1. Yocto Scarthgap > > > > 2. U-Boot 2024.01 > > > > 3. rpi_arm64_defconfig > > > > > > > > I am trying to access the i2c bus from U-Boot. I have been trying to > modify > > the device tree which is referenced as > > “CONFIG_DEFAULT_DEVICE_TREE="bcm2711-rpi-4-b”” in the defconfig without > > success. I can remove everything, set all nodes to disabled and I see no > > change in U-Boot (I am using dm commands to check the status of the > > peripherals). > > > > > > > > It seems that with the rpi, U-Boot will only configure itself against the > > device tree passed by the bootloader of RPI. Could someone confirm this ? > > Yes. It isn't quite obvious, but this is a clue: > > Core: 211 devices, 16 uclasses, devicetree: board > > 'board' means that the board can do whatever it wants. > > > > > > > > > Is there a way to configure / modify U-Boot to use its own devicetree and > > simply pass the device tree generated by the rpi bootloader to the > kernel ? > > > > > > > > Because the second issue is that the i2c driver defined in the device > tree > > passed to u-boot is not available in u-boot. > > > > > > > > Thanks for your help > > Since OF_HAS_PRIOR_STAGE is a hidden option, you cannot disable it in > the defconfig. The only way I know of is to comment out the 'imply > OF_HAS_PRIOR_STAGE' in ARCH_BCM283X in arch/arm/Kconfig > > For me, that stops the rpi_4 booting, so perhaps the devicetree is > out-of-date or ft_board_setup() is doing something strange, or > something else. The in-tree devicetree may have got out-of-date, so > perhaps use the Linux one. > > Regards, > Simon >