[PATCH v2 00/32] Qualcomm generic board support

Caleb Connolly caleb.connolly at linaro.org
Tue Jan 9 12:33:03 CET 2024



On 09/01/2024 06:07, Sumit Garg wrote:
> On Fri, 5 Jan 2024 at 19:15, Caleb Connolly <caleb.connolly at 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.

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 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 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.
> 
> -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-88a92f8f00ba@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-9492198e0c15@linaro.org
>>>>
>>>> To: Neil Armstrong <neil.armstrong at linaro.org>
>>>> To: Sumit Garg <sumit.garg at linaro.org>
>>>> To: Ramon Fried <rfried.dev at gmail.com>
>>>> Cc: Marek Vasut <marex at denx.de>
>>>> To: Dzmitry Sankouski <dsankouski at gmail.com>
>>>> To: Caleb Connolly <caleb.connolly at linaro.org>
>>>> To: Peng Fan <peng.fan at nxp.com>
>>>> To: Jaehoon Chung <jh80.chung at samsung.com>
>>>> To: Rayagonda Kokatanur <rayagonda.kokatanur at broadcom.com>
>>>> To: Lukasz Majewski <lukma at denx.de>
>>>> To: Sean Anderson <seanga2 at gmail.com>
>>>> To: Jorge Ramirez-Ortiz <jorge.ramirez.ortiz at gmail.com>
>>>> To: Stephan Gerhold <stephan at gerhold.net>
>>>> Cc:  <u-boot at 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)


More information about the U-Boot mailing list