Dear all,

I have 4 different topics on which I can't find a correct answer on internet.

I am developing a new system base on the Raspberrypi CM3+ with our custom 
board. I am using Yocto with the meta-raspberrypi and the dunfell branch (for 
LTS)

Here is what I would like to achieve:
* Get UART0 or UART1 as the standard console for u-boot and the linux kernel on 
pins 32 and 33
* Make u-boot pass my device tree (stored in the boot partition) to the kernel 
and not the device tree generated by the first stage bootloader
* U-boot message ?
* Patch kernel which sources are in work-shared

--------------------------------------------------------------------------------------------------------------------------------------
Regarding the first point, I already created a new device tree within u-boot 
and set it as the default bootloader in my default config. I have some troubles 
to understand how everything works between the first stage bootloader, u-boot, 
u-boot internal device tree and the kernel device tree.

Here is the different things I tried:

* Use UART0 on pins 32 and 33

* In the u-boot device tree:

> 
> chosen {
> stdout-path = "serial0:115200n8";
> }
> ...
> &uart0 {
> pinctrl-names= "default";
> pinctrl-0 = <&uart0_gpio32>;
> status = "okay";
> }
> 

* In the config.txt:

> 
> enable_uart=1

> 
> dtoverlay=uart0,txd0_pin=32,rxd0_pin=33,pin_func=7

* This works but only for the kernel, I don't get any output from u-boot and 
can't stop the boot process.

* Use UART1 on pins 32 and 33: more or less the same modification but with 
different values (uart1_gpio32, serial1, etc..) and same results

I would like to know if there is an other file I should modify to get this 
working. When I use the uart0 or uart1 on pin 14 and 15 everything works 
perfectly.

Here is my device tree patch for u-boot:

> 
> diff --git a/arch/arm/dts/bcm2837-rpi-cm3-digisens.dts
> b/arch/arm/dts/bcm2837-rpi-cm3-digisens.dts
> index e69de29bb2..f6c0efd18d 100644
> --- a/arch/arm/dts/bcm2837-rpi-cm3-digisens.dts
> +++ b/arch/arm/dts/bcm2837-rpi-cm3-digisens.dts
> @@ -0,0 +1,175 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/dts-v1/;
> +#include "bcm2837.dtsi"
> +#include "bcm2836-rpi.dtsi"
> +#include "bcm283x-rpi-smsc9514.dtsi"
> +#include "bcm283x-rpi-usb-host.dtsi"
> +
> +/ {
> +     compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
> +     model = "Raspberry Pi Compute Module 3 DIGI-SENS baseboard";
> +
> +     memory@0 {
> +     reg = <0 0x40000000>;
> + };
> +
> + leds {
> +     act {
> +         gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
> +     };
> + };
> +
> + chosen {
> +     /* 8250 auxiliary UART instead of pl011 */
> +     stdout-path = "serial1:115200n8";
> + };
> +
> + reg_3v3: fixed-regulator {
> +     compatible = "regulator-fixed";
> +     regulator-name = "3V3";
> +     regulator-min-microvolt = <3300000>;
> +     regulator-max-microvolt = <3300000>;
> +     regulator-always-on;
> + };
> +
> + reg_1v8: fixed-regulator {
> +     compatible = "regulator-fixed";
> +     regulator-name = "1V8";
> +     regulator-min-microvolt = <1800000>;
> +     regulator-max-microvolt = <1800000>;
> +     regulator-always-on;
> +     };
> +};
> +
> +&firmware {
> +     expgpio: gpio {
> +         compatible = "raspberrypi,firmware-gpio";
> +         gpio-controller;
> +         #gpio-cells = <2>;
> +         gpio-line-names = "HDMI_HPD_N",
> + "EMMC_EN_N",
> +             "NC",
> +             "NC",
> +             "NC",
> +             "NC",
> +             "NC",
> +             "NC";
> +         status = "okay";
> + };
> +};
> +
> +&hdmi {
> +     hpd-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
> +};
> +
> +&uart1 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&uart0_gpio32>;
> +     status = "okay";
> +};
> +
> +
> +&sdhost {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&sdhost_gpio48>;
> +     bus-width = <4>;
> +     vmmc-supply = <&reg_3v3>;
> +     vqmmc-supply = <&reg_1v8>;
> +     status = "okay";
> +};
> 

(in my defconfig for u-boot I have the following default device tree parameter: 
+CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-cm3-digisens")

--------------------------------------------------------------------------------------------------------------------------------------
The second point seems pretty clear to me. I will change the bootscript and 
load the file with the fatload command and pass it to the kernel. However I 
wonder if it might create some problems if the first stage bootloader has 
already reserved the pins.

--------------------------------------------------------------------------------------------------------------------------------------
When u-boot is starting correctly (for the moment only on pin 14 and 15) I have 
the following warning and I was not able to find any explanation about it:

> 
> U-Boot 2020.01 (Jan 06 2020 - 20:56:31 +0000)
> 
> DRAM:  948 MiB
> RPI Compute Module 3+ (0xa02100)
> MMC:   mmc@7e202000: 0
> Loading Environment from FAT... WARNING at
> drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!
> *WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!*
> *** Warning - bad CRC, using default environment
> 
> In:    serial
> Out:   vidconsole
> Err:   vidconsole
> Net:   No ethernet found.
> starting USB...
> Bus usb@7e980000: scanning bus usb@7e980000 for devices... 1 USB Device(s)
> found
> scanning usb for storage devices... 0 Storage Device(s) found
> Hit any key to stop autoboot:  0
> *WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!*
> *WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!*
> switch to partitions #0, OK
> mmc0(part 0) is current device
> Scanning mmc 0:1...
> Found U-Boot script /boot.scr
> 

Should I simply ignore it ?

--------------------------------------------------------------------------------------------------------------------------------------
Finally I have some troubles when I try to patch the kernel. I have always been 
working with IMX SOC and (Karo-electronics bsp). With the meta-raspberry, the 
kernel sources are in the work-shared directory. When I create a patch with for 
example this command:

> 
> git diff arch/arm/boot/dts/overlays/uart0-cm3-overlay.dts >
> /.../0001-uart0.patch
> 

I have the following error when I run bitbake: "Patch failures can be resolved 
in the linux source directory"
--------------------------------------------------------------------------------------------------------------------------------------

Thank you in advance for your time. Let me know if you need more information.

Best regards
Romain
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#51558): https://lists.yoctoproject.org/g/yocto/message/51558
Mute This Topic: https://lists.yoctoproject.org/mt/78501072/21656
Mute #raspberrypi:https://lists.yoctoproject.org/g/yocto/mutehashtag/raspberrypi
Mute #rpi:https://lists.yoctoproject.org/g/yocto/mutehashtag/rpi
Mute #cm3:https://lists.yoctoproject.org/g/yocto/mutehashtag/cm3
Mute #dunfell:https://lists.yoctoproject.org/g/yocto/mutehashtag/dunfell
Mute #kernel:https://lists.yoctoproject.org/g/yocto/mutehashtag/kernel
Mute #yocto:https://lists.yoctoproject.org/g/yocto/mutehashtag/yocto
Mute #uboot:https://lists.yoctoproject.org/g/yocto/mutehashtag/uboot
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to