On Tue, 9 Jan 2024 at 17:03, Caleb Connolly <caleb.conno...@linaro.org> wrote: > > > > On 09/01/2024 06:07, Sumit Garg wrote: > > On Fri, 5 Jan 2024 at 19:15, Caleb Connolly <caleb.conno...@linaro.org> > > wrote: > >> > >> > >> > >> On 05/01/2024 13:14, Sumit Garg wrote: > >>> Hi Caleb, > >> > >> Hi Sumit, > >> > >> [snip] > >> > >>>> --- > >>>> I have tested this series on the Dragonboard410c, Dragonboard820c, and > >>> > >>> This series fails to boot (without any U-Boot console print) on > >>> db410c. I even added below pinctrl change but without any success: > >> > >> Are you chainloading from aboot? Or flashing over it? > >> > > > > I am using the default mode where U-Boot acts as the first stage > > bootloader. I suppose it worked for you since LK enabled drivers which > > were just reused by U-Boot. > > + Stephan, could you maybe give this a try at some point? > > Right, although the lack of any output probably indicates that U-Boot > code isn't getting run for some reason. Could you check if disabling > LINUX_KERNEL_IMAGE_HEADER (remove the select in arch/arm/Kconfig) helps? > It was *theorised* that this shouldn't cause any issues but not tested.
So I did: diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5ed9cbf378f..61192fb4a43 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1077,8 +1077,6 @@ config ARCH_SNAPDRAGON select SPMI select BOARD_LATE_INIT select OF_BOARD - select SAVE_PREV_BL_FDT_ADDR - select LINUX_KERNEL_IMAGE_HEADER imply CMD_DM config ARCH_SOCFPGA But it didn't help. > > Oh yeah, you should also hardcode the memory layout in DTS, this got > lost when moving to upstream DT and it's needed for the case where we > don't have ABL/LK to fill it in for us. I see you have still preserved arch/arm/dts/dragonboard410c.dts with memory layout. I switched to it via: diff --git a/configs/dragonboard410c_defconfig b/configs/dragonboard410c_defconfig index a9a48c2212d..600d614643f 100644 --- a/configs/dragonboard410c_defconfig +++ b/configs/dragonboard410c_defconfig @@ -9,7 +9,7 @@ CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x8007fff0 CONFIG_ENV_SIZE=0x2000 CONFIG_ENV_OFFSET=0x0 -CONFIG_DEFAULT_DEVICE_TREE="apq8016-sbc" +CONFIG_DEFAULT_DEVICE_TREE="dragonboard410c" CONFIG_OF_LIBFDT_OVERLAY=y CONFIG_IDENT_STRING="\nQualcomm-DragonBoard 410C" CONFIG_SYS_LOAD_ADDR=0x80080000 But that didn't help it to boot, still no U-Boot console log. > > > >> I have only been able to validate the chainloading method, following the > >> steps in doc/board/qualcomm/board.rst and generating the config with > >> > >> make dragonboard410c_defconfig chainloaded.config > >> > >> do you get any output at all? > > > > No output from U-Boot. Last prints from SBL1: > > > > <snip> > > D - 299022 - SBL1, Delta > > S - Flash Throughput, 81000 KB/s (1537656 Bytes, 18940 us) > > S - DDR Frequency, 400 MHz > > > >> Can you try enabling debug UART output as > >> documented in doc/board/qualcomm/debugging.rst? > > > > I did but it didn't help. > > Hmm, I doubt SBL turns off the UART clock, so the DEBUG_UART ought to > work - but this has not been tested so there could be something missing. > Maybe you can try calling msm_uart_clk_init() from _debug_uart_init(). The driver model isn't available for DEBUG_UART, so it can directly invoke msm_uart_clk_init(). > > > >> > >> The pinctrl fix shouldn't be needed to boot to a shell. > > > > While at it, I noticed another pinctrl issue which should be fixed by > > following diff: > > > > diff --git a/drivers/serial/serial_msm.c b/drivers/serial/serial_msm.c > > index 0148ddb54df..6fe7bdd1dca 100644 > > --- a/drivers/serial/serial_msm.c > > +++ b/drivers/serial/serial_msm.c > > @@ -204,7 +204,7 @@ static int msm_serial_probe(struct udevice *dev) > > if (ret) > > return ret; > > > > - pinctrl_select_state(dev, "uart"); > > + pinctrl_select_state(dev, "default"); > > uart_dm_init(priv); > > > > return 0; > > > > But this still didn't fix the boot problem. As you have the board in > > your hand, I would suggest you to debug to avoid this back and forth. > > I don't have the board unfortunately, only remote access - hence I can > only debug the chainloaded U-Boot and not "u-boot1st" (or however we > call it :P). Sorry. I can help keep digging in but since this series overhauls db410c support I expected it to be at least tested. -Sumit > > > > -Sumit > > > >> > >> Thanks, > >>> > >>> diff --git a/drivers/pinctrl/qcom/pinctrl-apq8016.c > >>> b/drivers/pinctrl/qcom/pinctrl-apq8016.c > >>> index 8e698085d78..88518845952 100644 > >>> --- a/drivers/pinctrl/qcom/pinctrl-apq8016.c > >>> +++ b/drivers/pinctrl/qcom/pinctrl-apq8016.c > >>> @@ -42,7 +42,7 @@ static const char *apq8016_get_pin_name(struct udevice > >>> *dev, > >>> unsigned int selector) > >>> { > >>> if (selector < 122) { > >>> - snprintf(pin_name, MAX_PIN_NAME_LEN, "GPIO_%u", selector); > >>> + snprintf(pin_name, MAX_PIN_NAME_LEN, "gpio%u", selector); > >>> return pin_name; > >>> } else { > >>> return msm_pinctrl_pins[selector - 122]; > >>> > >>> > >>>> Dragonboard845c. I unfortunately don't have access to a QCS404 EVB board > >>>> to test. > >>> > >>> db820c and qcs404 require a similar pinctrl change though. > >>> > >>> -Sumit > >>> > >>>> > >>>> This series is based on the qcom-next branch [1] and depends on my PMIC > >>>> fixes series [2], an integration branch for testing can be found at [3]. > >>>> The non-qualcomm-specific changes (patches 1 and 2) don't have any > >>>> dependencies. > >>>> > >>>> [1]: https://source.denx.de/u-boot/custodians/u-boot-snapdragon > >>>> [2]: > >>>> https://lore.kernel.org/u-boot/20231114-b4-qcom-dt-compat-v3-0-88a92f8f0...@linaro.org/ > >>>> [3]: > >>>> https://source.denx.de/u-boot/custodians/u-boot-snapdragon/-/tree/b4/qcom-common-target > >>>> > >>>> --- > >>>> Changes in v2: > >>>> - Split DTS changes to reduce patch size. > >>>> - Import full board DTS files from Linux too, and introduce -u-boot.dtsi > >>>> files where necessary to make any U-Boot specific changes. > >>>> - Add a pinctrl driver for qcom PMIC GPIOs > >>>> - Always enable LINUX_KERNEL_IMAGE_HEADER > >>>> - Link to v1: > >>>> https://lore.kernel.org/r/20231121-b4-qcom-common-target-v1-0-9492198e0...@linaro.org > >>>> > >>>> To: Neil Armstrong <neil.armstr...@linaro.org> > >>>> To: Sumit Garg <sumit.g...@linaro.org> > >>>> To: Ramon Fried <rfried....@gmail.com> > >>>> Cc: Marek Vasut <ma...@denx.de> > >>>> To: Dzmitry Sankouski <dsankou...@gmail.com> > >>>> To: Caleb Connolly <caleb.conno...@linaro.org> > >>>> To: Peng Fan <peng....@nxp.com> > >>>> To: Jaehoon Chung <jh80.ch...@samsung.com> > >>>> To: Rayagonda Kokatanur <rayagonda.kokata...@broadcom.com> > >>>> To: Lukasz Majewski <lu...@denx.de> > >>>> To: Sean Anderson <sean...@gmail.com> > >>>> To: Jorge Ramirez-Ortiz <jorge.ramirez.or...@gmail.com> > >>>> To: Stephan Gerhold <step...@gerhold.net> > >>>> Cc: <u-boot@lists.denx.de> > >>>> > >>>> --- > >>>> Caleb Connolly (32): > >>>> arm: init: export prev_bl_fdt_addr > >>>> usb: dwc3-generic: support external vbus regulator > >>>> mmc: msm_sdhci: use modern clock handling > >>>> dt-bindings: drop msm_sdhci binding > >>>> clk/qcom: use upstream compatible properties > >>>> serial: msm: add debug UART > >>>> serial: msm: fix clock handling > >>>> gpio: qcom_pmic: 1-based GPIOs > >>>> gpio: qcom_pmic: add a quirk to skip GPIO configuration > >>>> gpio: qcom_pmic: add pinctrl driver > >>>> board: dragonboard410c: add chainloaded config fragment > >>>> board: dragonboard410c: upstream DT compat > >>>> board: dragonboard410c: import board code from mach-snapdragon > >>>> board: dragonboard820c: use LINUX_KERNEL_IMAGE_HEADER > >>>> mach-snapdragon: generalise board support > >>>> mach-snapdragon: dynamic load addresses > >>>> mach-snapdragon: generate fdtfile automatically > >>>> doc: board/qualcomm: document generic targets > >>>> dt-bindings: import headers for SDM845 > >>>> dts: sdm845: import supporting dtsi files > >>>> dts: sdm845: replace with upstream DTS > >>>> dt-bindings: import headers for MSM8916 > >>>> dts: msm8916: import PMIC dtsi files > >>>> dts: msm8916: replace with upstream DTS > >>>> dt-bindings: import headers for MSM8996 > >>>> dts: msm8996: import PMIC dtsi files > >>>> dts: dragonboard820c: use correct bindings for clocks > >>>> dts: msm8996: replace with upstream DTS > >>>> dt-bindings: import headers for qcs404 > >>>> dts: qcs404-evb: replace with upstream DT > >>>> board: qcs404-evb: drop board code > >>>> MAINTAINERS: Qualcomm: add some missing paths > >>>> > >>>> MAINTAINERS | 12 +- > >>>> arch/arm/Kconfig | 4 + > >>>> arch/arm/dts/Makefile | 9 +- > >>>> arch/arm/dts/apq8016-sbc.dts | 729 +++ > >>>> arch/arm/dts/apq8096-db820c-u-boot.dtsi | 10 + > >>>> arch/arm/dts/apq8096-db820c.dts | 1137 ++++ > >>>> arch/arm/dts/dragonboard410c-uboot.dtsi | 44 - > >>>> arch/arm/dts/dragonboard410c.dts | 199 +- > >>>> arch/arm/dts/dragonboard820c-uboot.dtsi | 32 - > >>>> arch/arm/dts/dragonboard820c.dts | 151 - > >>>> arch/arm/dts/dragonboard845c-uboot.dtsi | 26 - > >>>> arch/arm/dts/dragonboard845c.dts | 48 - > >>>> arch/arm/dts/msm8916-pm8916.dtsi | 157 + > >>>> arch/arm/dts/msm8916.dtsi | 2702 +++++++++ > >>>> arch/arm/dts/msm8996.dtsi | 3884 +++++++++++++ > >>>> arch/arm/dts/pm8916.dtsi | 178 + > >>>> arch/arm/dts/pm8994.dtsi | 152 + > >>>> arch/arm/dts/pm8998.dtsi | 130 + > >>>> arch/arm/dts/pmi8994.dtsi | 65 + > >>>> arch/arm/dts/pmi8998.dtsi | 98 + > >>>> arch/arm/dts/pms405.dtsi | 149 + > >>>> arch/arm/dts/qcs404-evb-4000-u-boot.dtsi | 26 + > >>>> arch/arm/dts/qcs404-evb-4000.dts | 96 + > >>>> arch/arm/dts/qcs404-evb-uboot.dtsi | 30 - > >>>> arch/arm/dts/qcs404-evb.dts | 390 -- > >>>> arch/arm/dts/qcs404-evb.dtsi | 389 ++ > >>>> arch/arm/dts/qcs404.dtsi | 1829 ++++++ > >>>> arch/arm/dts/sdm845-db845c.dts | 1190 ++++ > >>>> .../arm/dts/sdm845-samsung-starqltechn-u-boot.dtsi | 16 + > >>>> arch/arm/dts/sdm845-samsung-starqltechn.dts | 624 +++ > >>>> arch/arm/dts/sdm845-wcd9340.dtsi | 86 + > >>>> arch/arm/dts/sdm845.dtsi | 5801 > >>>> +++++++++++++++++++- > >>>> arch/arm/dts/starqltechn-uboot.dtsi | 27 - > >>>> arch/arm/dts/starqltechn.dts | 68 - > >>>> arch/arm/lib/save_prev_bl_data.c | 5 + > >>>> arch/arm/mach-snapdragon/Kconfig | 95 +- > >>>> arch/arm/mach-snapdragon/Makefile | 8 +- > >>>> arch/arm/mach-snapdragon/board.c | 304 + > >>>> arch/arm/mach-snapdragon/include/mach/dram.h | 12 - > >>>> arch/arm/mach-snapdragon/init_sdm845.c | 73 - > >>>> arch/arm/mach-snapdragon/misc.c | 55 - > >>>> arch/arm/mach-snapdragon/sysmap-apq8016.c | 31 - > >>>> arch/arm/mach-snapdragon/sysmap-apq8096.c | 31 - > >>>> arch/arm/mach-snapdragon/sysmap-qcs404.c | 43 - > >>>> arch/arm/mach-snapdragon/sysmap-sdm845.c | 31 - > >>>> board/qualcomm/dragonboard410c/Kconfig | 15 - > >>>> board/qualcomm/dragonboard410c/Makefile | 3 +- > >>>> .../dragonboard410c/configs/chainloaded.config | 7 + > >>>> board/qualcomm/dragonboard410c/dragonboard410c.c | 109 +- > >>>> .../qualcomm/dragonboard410c/misc.c | 51 +- > >>>> .../mach => board/qualcomm/dragonboard410c}/misc.h | 1 + > >>>> board/qualcomm/dragonboard820c/Kconfig | 15 - > >>>> board/qualcomm/dragonboard820c/Makefile | 1 - > >>>> board/qualcomm/dragonboard820c/dragonboard820c.c | 39 +- > >>>> board/qualcomm/dragonboard820c/head.S | 33 - > >>>> board/qualcomm/dragonboard820c/u-boot.lds | 111 - > >>>> board/qualcomm/dragonboard845c/Kconfig | 12 - > >>>> board/qualcomm/qcs404-evb/Kconfig | 15 - > >>>> board/qualcomm/qcs404-evb/Makefile | 6 - > >>>> board/qualcomm/qcs404-evb/qcs404-evb.c | 62 - > >>>> configs/dragonboard410c_defconfig | 8 +- > >>>> configs/dragonboard820c_defconfig | 8 +- > >>>> configs/dragonboard845c_defconfig | 29 - > >>>> configs/qcom_defconfig | 73 + > >>>> configs/qcs404evb_defconfig | 55 - > >>>> configs/starqltechn_defconfig | 41 - > >>>> doc/board/qualcomm/board.rst | 119 + > >>>> doc/board/qualcomm/debugging.rst | 61 + > >>>> doc/board/qualcomm/index.rst | 4 +- > >>>> doc/board/qualcomm/qcs404.rst | 79 - > >>>> doc/board/qualcomm/sdm845.rst | 162 - > >>>> doc/device-tree-bindings/mmc/msm_sdhci.txt | 25 - > >>>> doc/device-tree-bindings/usb/ehci-msm.txt | 10 - > >>>> drivers/clk/qcom/clock-apq8016.c | 9 +- > >>>> drivers/clk/qcom/clock-apq8096.c | 7 +- > >>>> drivers/gpio/qcom_pmic_gpio.c | 232 +- > >>>> drivers/mmc/msm_sdhci.c | 69 +- > >>>> drivers/phy/qcom/msm8916-usbh-phy.c | 4 +- > >>>> drivers/pinctrl/qcom/pinctrl-apq8016.c | 2 +- > >>>> drivers/serial/Kconfig | 8 + > >>>> drivers/serial/serial_msm.c | 56 +- > >>>> drivers/usb/dwc3/dwc3-generic.c | 12 + > >>>> drivers/usb/host/ehci-msm.c | 24 +- > >>>> include/configs/dragonboard845c.h | 20 - > >>>> include/configs/qcom.h | 21 + > >>>> include/configs/qcs404-evb.h | 20 - > >>>> include/configs/sdm845.h | 26 - > >>>> include/dt-bindings/arm/coresight-cti-dt.h | 37 + > >>>> include/dt-bindings/clock/qcom,camcc-sdm845.h | 116 + > >>>> include/dt-bindings/clock/qcom,dispcc-sdm845.h | 56 + > >>>> include/dt-bindings/clock/qcom,gcc-msm8916.h | 179 + > >>>> include/dt-bindings/clock/qcom,gcc-msm8996.h | 360 ++ > >>>> include/dt-bindings/clock/qcom,gpucc-sdm845.h | 24 + > >>>> include/dt-bindings/clock/qcom,lpass-sdm845.h | 15 + > >>>> include/dt-bindings/clock/qcom,mmcc-msm8996.h | 295 + > >>>> include/dt-bindings/clock/qcom,rpmcc.h | 174 + > >>>> include/dt-bindings/clock/qcom,rpmh.h | 37 + > >>>> include/dt-bindings/clock/qcom,turingcc-qcs404.h | 15 + > >>>> include/dt-bindings/clock/qcom,videocc-sdm845.h | 35 + > >>>> include/dt-bindings/dma/qcom-gpi.h | 11 + > >>>> include/dt-bindings/firmware/qcom,scm.h | 18 + > >>>> include/dt-bindings/iio/qcom,spmi-vadc.h | 300 + > >>>> include/dt-bindings/interconnect/qcom,msm8916.h | 100 + > >>>> .../dt-bindings/interconnect/qcom,msm8996-cbf.h | 12 + > >>>> include/dt-bindings/interconnect/qcom,msm8996.h | 163 + > >>>> include/dt-bindings/interconnect/qcom,osm-l3.h | 15 + > >>>> include/dt-bindings/interconnect/qcom,sdm845.h | 150 + > >>>> include/dt-bindings/phy/phy-qcom-qmp.h | 20 + > >>>> include/dt-bindings/phy/phy-qcom-qusb2.h | 37 + > >>>> include/dt-bindings/pinctrl/qcom,pmic-gpio.h | 164 + > >>>> include/dt-bindings/pinctrl/qcom,pmic-mpp.h | 106 + > >>>> include/dt-bindings/power/qcom-rpmpd.h | 412 ++ > >>>> include/dt-bindings/qcom,q6asm.h | 26 + > >>>> .../dt-bindings/regulator/qcom,rpmh-regulator.h | 36 + > >>>> include/dt-bindings/reset/qcom,gcc-msm8916.h | 100 + > >>>> include/dt-bindings/reset/qcom,sdm845-aoss.h | 17 + > >>>> include/dt-bindings/reset/qcom,sdm845-pdc.h | 22 + > >>>> include/dt-bindings/soc/qcom,apr.h | 28 + > >>>> include/dt-bindings/soc/qcom,rpmh-rsc.h | 14 + > >>>> include/dt-bindings/sound/apq8016-lpass.h | 9 + > >>>> include/dt-bindings/sound/qcom,lpass.h | 46 + > >>>> include/dt-bindings/sound/qcom,q6afe.h | 9 + > >>>> include/dt-bindings/sound/qcom,q6asm.h | 26 + > >>>> include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h | 234 + > >>>> include/dt-bindings/sound/qcom,wcd9335.h | 15 + > >>>> include/init.h | 11 + > >>>> 126 files changed, 23909 insertions(+), 2375 deletions(-) > >>>> --- > >>>> base-commit: bcb4a9ddbd21a61b5b421ba374a785757bd28c80 > >>>> > >>>> // Caleb (they/them) > >>>> > >> > >> -- > >> // Caleb (they/them) > > -- > // Caleb (they/them)