From: Thomas Fitzsimmons <fitzsim@fitzsim.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 1/1] board: arm: Add support for Broadcom BCM7445
Date: Tue, 27 Aug 2019 18:31:33 -0400 [thread overview]
Message-ID: <m336hm8cl6.fsf@fitzsim.org> (raw)
In-Reply-To: <CAEUhbmUYSh_Fh1=qz98z-3SoGV5=ZqckvX3-eoqnimDTU6ZTDg@mail.gmail.com> (Bin Meng's message of "Mon, 26 Aug 2019 23:54:35 +0800")
Hi Bin,
Bin Meng <bmeng.cn@gmail.com> writes:
> Hi Thomas,
>
> On Sat, Jun 9, 2018 at 6:06 AM Thomas Fitzsimmons <fitzsim@fitzsim.org> wrote:
>>
>> Add support for loading U-Boot on the Broadcom 7445 SoC. This port
>> assumes Broadcom's BOLT bootloader is acting as the second stage
>> bootloader, and U-Boot is acting as the third stage bootloader, loaded
>> as an ELF program by BOLT.
>>
>> Signed-off-by: Thomas Fitzsimmons <fitzsim@fitzsim.org>
>> Cc: Stefan Roese <sr@denx.de>
>> Cc: Tom Rini <trini@konsulko.com>
>> Cc: Florian Fainelli <f.fainelli@gmail.com>
>> ---
>> Changes for v4:
>> - Use high timer register for get_ticks
>> - Move hard-coded register addresses from Kconfig to header
>> - Document I-cache/D-cache expectation
>>
>> MAINTAINERS | 10 +
>> arch/arm/Kconfig | 12 +
>> arch/arm/Makefile | 1 +
>> arch/arm/mach-bcmstb/Kconfig | 36 ++
>> arch/arm/mach-bcmstb/Makefile | 8 +
>> arch/arm/mach-bcmstb/include/mach/gpio.h | 11 +
>> arch/arm/mach-bcmstb/include/mach/hardware.h | 11 +
>> arch/arm/mach-bcmstb/include/mach/prior_stage.h | 30 ++
>> arch/arm/mach-bcmstb/include/mach/sdhci.h | 15 +
>> arch/arm/mach-bcmstb/include/mach/timer.h | 13 +
>> arch/arm/mach-bcmstb/lowlevel_init.S | 21 ++
>> board/broadcom/bcmstb/MAINTAINERS | 7 +
>> board/broadcom/bcmstb/Makefile | 8 +
>> board/broadcom/bcmstb/bcmstb.c | 194 +++++++++++
>> configs/bcm7445_defconfig | 27 ++
>> doc/README.bcm7xxx | 150 ++++++++
>> drivers/mmc/Kconfig | 11 +
>> drivers/mmc/Makefile | 1 +
>> drivers/mmc/bcmstb_sdhci.c | 67 ++++
>> drivers/spi/Kconfig | 7 +
>> drivers/spi/Makefile | 1 +
>> drivers/spi/bcmstb_spi.c | 439 ++++++++++++++++++++++++
>> drivers/spi/spi-uclass.c | 2 +-
>> dts/Kconfig | 7 +
>> include/configs/bcm7445.h | 26 ++
>> include/configs/bcmstb.h | 183 ++++++++++
>> include/fdtdec.h | 4 +
>> lib/fdtdec.c | 4 +
>> 28 files changed, 1305 insertions(+), 1 deletion(-)
>> create mode 100644 arch/arm/mach-bcmstb/Kconfig
>> create mode 100644 arch/arm/mach-bcmstb/Makefile
>> create mode 100644 arch/arm/mach-bcmstb/include/mach/gpio.h
>> create mode 100644 arch/arm/mach-bcmstb/include/mach/hardware.h
>> create mode 100644 arch/arm/mach-bcmstb/include/mach/prior_stage.h
>> create mode 100644 arch/arm/mach-bcmstb/include/mach/sdhci.h
>> create mode 100644 arch/arm/mach-bcmstb/include/mach/timer.h
>> create mode 100644 arch/arm/mach-bcmstb/lowlevel_init.S
>> create mode 100644 board/broadcom/bcmstb/MAINTAINERS
>> create mode 100644 board/broadcom/bcmstb/Makefile
>> create mode 100644 board/broadcom/bcmstb/bcmstb.c
>> create mode 100644 configs/bcm7445_defconfig
>> create mode 100644 doc/README.bcm7xxx
>> create mode 100644 drivers/mmc/bcmstb_sdhci.c
>> create mode 100644 drivers/spi/bcmstb_spi.c
>> create mode 100644 include/configs/bcm7445.h
>> create mode 100644 include/configs/bcmstb.h
>>
>
> [snip]
>
>> diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
>> index d2d091f..c517d06 100644
>> --- a/drivers/spi/spi-uclass.c
>> +++ b/drivers/spi/spi-uclass.c
>> @@ -273,7 +273,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
>> bool created = false;
>> int ret;
>>
>> -#if CONFIG_IS_ENABLED(OF_PLATDATA)
>> +#if CONFIG_IS_ENABLED(OF_PLATDATA) || CONFIG_IS_ENABLED(OF_PRIOR_STAGE)
>
> Could you please explain this change a little bit? Why should we call
> uclass_first_device_err() for OF_PRIOR_STAGE?
>
>> ret = uclass_first_device_err(UCLASS_SPI, &bus);
>> #else
>> ret = uclass_get_device_by_seq(UCLASS_SPI, busnum, &bus);
On the BCM7445 eval board, the prior-stage-provided device tree does not
have an alias for spi0, though it has aliases for other device types; I
don't know why this is the case, but I don't have control over what the
prior stage bootloader (Broadcom's BOLT) provides. Without that alias,
uclass_get_device_by_seq fails to find the SPI bus (and so U-Boot can't
find the SPI flash device that stores its environment).
At the time, I checked other ARM device trees in the Linux kernel and
not many set an alias for spi0, so I wrote the patch to choose the first
SPI bus. Doing so was in line with what CONFIG_OF_PLATDATA did on
boards that wanted to avoid device tree accesses.
I see that since I introduced CONFIG_OF_PRIOR_STAGE, several other ports
have started using it, so there's probably a need to generalize this; if
other prior stage bootloaders provide SPI aliases then there should be a
way for this code to use them.
>> diff --git a/dts/Kconfig b/dts/Kconfig
>> index 0cef225..a1a92f2 100644
>> --- a/dts/Kconfig
>> +++ b/dts/Kconfig
>> @@ -101,6 +101,13 @@ config OF_HOSTFILE
>> This is only useful for Sandbox. Use the -d flag to U-Boot to
>> specify the file to read.
>>
>> +config OF_PRIOR_STAGE
>> + bool "Prior stage bootloader DTB for DT control"
>> + help
>> + If this option is enabled, the device tree used for DT
>> + control will be read from a device tree binary, at a memory
>> + location passed to U-Boot by the prior stage bootloader.
>> +
>> endchoice
>>
>
> [snip]
Thomas
next prev parent reply other threads:[~2019-08-27 22:31 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-06 11:09 [U-Boot] [PATCH 0/1] board: arm: Add support for Broadcom BCM7445D0 Thomas Fitzsimmons
2018-05-06 11:09 ` [U-Boot] [PATCH 1/1] " Thomas Fitzsimmons
2018-05-07 23:48 ` Tom Rini
2018-05-24 0:47 ` Thomas Fitzsimmons
2018-05-08 17:44 ` Florian Fainelli
2018-05-10 13:04 ` Thomas Fitzsimmons
2018-05-10 17:43 ` Florian Fainelli
2018-06-06 20:39 ` Thomas Fitzsimmons
2018-06-06 22:06 ` Florian Fainelli
2018-05-24 1:24 ` [U-Boot] [PATCH v2 0/1] board: arm: Add support for Broadcom BCM7445 Thomas Fitzsimmons
2018-05-24 1:24 ` [U-Boot] [PATCH v2 1/1] " Thomas Fitzsimmons
2018-06-06 11:16 ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-06-06 19:32 ` Thomas Fitzsimmons
2018-06-06 18:35 ` [U-Boot] [PATCH v3 0/1] " Thomas Fitzsimmons
2018-06-06 18:35 ` [U-Boot] [PATCH v3 1/1] " Thomas Fitzsimmons
2018-06-07 16:54 ` Florian Fainelli
2018-06-08 22:25 ` Thomas Fitzsimmons
2018-06-08 21:59 ` [U-Boot] [PATCH v4 0/1] " Thomas Fitzsimmons
2018-06-08 21:59 ` [U-Boot] [PATCH v4 1/1] " Thomas Fitzsimmons
2018-07-11 12:42 ` [U-Boot] [U-Boot, v4, " Tom Rini
2019-08-26 15:54 ` [U-Boot] [PATCH v4 " Bin Meng
2019-08-27 22:31 ` Thomas Fitzsimmons [this message]
2019-08-28 10:19 ` Bin Meng
2019-08-28 17:24 ` Thomas Fitzsimmons
2019-08-29 15:24 ` Bin Meng
2019-09-05 12:10 ` Bin Meng
2019-09-17 5:48 ` Simon Glass
2019-09-06 11:51 ` [U-Boot] [PATCH 0/2] dm: CONFIG_OF_PRIOR_STAGE request number fixes Thomas Fitzsimmons
2019-09-06 11:51 ` [U-Boot] [PATCH 1/2] dm: device: Request next sequence number Thomas Fitzsimmons
2019-09-06 13:24 ` Bin Meng
2019-09-14 13:41 ` Thomas Fitzsimmons
2019-09-27 1:49 ` Simon Glass
2019-09-27 23:28 ` sjg at google.com
2019-09-06 11:51 ` [U-Boot] [PATCH 2/2] dm: spi: Do not assume first SPI bus Thomas Fitzsimmons
2019-09-27 1:49 ` Simon Glass
2019-09-27 23:28 ` sjg at google.com
2019-08-26 15:50 ` [U-Boot] [PATCH v2 0/1] board: arm: Add support for Broadcom BCM7445 Bin Meng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m336hm8cl6.fsf@fitzsim.org \
--to=fitzsim@fitzsim.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox