u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
From: Andre Przywara <andre.przywara@arm.com>
To: qianfan <qianfanguijin@163.com>
Cc: u-boot@lists.denx.de, Jagan Teki <jagan@amarulasolutions.com>
Subject: Re: [PATCH v1] sunxi: Make SYS_VENDOR, SYS_BOARD, SYS_CONFIG_NAME configurable
Date: Thu, 28 Apr 2022 01:16:02 +0100	[thread overview]
Message-ID: <20220428011602.11ece790@slackpad.lan> (raw)
In-Reply-To: <66f5e91f-3b42-b4c7-4ad5-3636adcb6f34@163.com>

On Wed, 27 Apr 2022 08:42:09 +0800
qianfan <qianfanguijin@163.com> wrote:

Hi,

> 在 2022/4/26 20:49, Andre Przywara 写道:
> > On Thu, 21 Apr 2022 11:32:11 +0800
> > qianfanguijin@163.com wrote:
> >
> > Hi,
> >
> >> From: qianfan Zhao <qianfanguijin@163.com>
> >>
> >> The board is not configurable if use sunxi soc. Add Kconfig items and
> >> make custom board available.
> > What problem does that solve?
> > And apart from that, I am afraid this is broken in several ways:
> > - The actual definition of those symbols is in arch/Kconfig. Having those
> > "config SYS_*" lines here is just to provide the various default values.
> > And changes to the definition should go there (and will be NAKed there).
> > - Those options are NOT meant to be user changeable, that's why their
> > original definition doesn't provide a prompt. The value of those options
> > have implications to the build system, so by just putting *something* in
> > here you will break the build. So any changes to those values would
> > require code and build system changes as well.
> > - The mainline Allwinner port is a bit special (and not in the worst
> > way!), in that it really doesn't use the generic U-Boot notion of "board
> > vendor code", for instance. So every board uses board/sunxi, despite the
>
> Yes, this is the problem I want to slove. All sunxi based board use 
> board/sunxi by default, I don't think it's a good way to adding other
> custom code to board/sunxi.c, so I want create another board and select it
> in Kconfig.

Well, as I hinted above, there really shouldn't be random custom code
for one particular board. There should be a DT based driver for your
hardware, and generic code to handle your tasks.

> > actual board manufacturer. And this makes a lot of sense, since the vast
> > majority of the code is really just SoC dependent, and the differences
> > between boards should be covered by the DT. There are some board specific
> It's better if the dependence can convert to dt, but not all of them.
> On my board there has an gpio watchdog

Have you checked drivers/watchdog/gpio_wdt.c? The DT binding in the
Linux kernel tree explains the options. It looks like the U-Boot driver
could use an update to handle everything the binding promises.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt

> and spi lcd. I need add somethings to toggle watchdog,

For the watchdog you should be good with that UCLASS_WDT driver, once
this is enabled in your _defconfig, and the DT node is in, it should
work out of the box.

> prepare spi lcd

There are drivers for some SPI display chips in drivers/video/Kconfig,
maybe one of them can drive your hardware? If not, it would be good to
add some driver for it.

> and draw splash.

I don't know the exact procedure from the top of my head, but a splash
screen is a standard U-Boot feature, with a driver in place it should
work by just providing a bitmap.

If you need to trigger something custom for your board, put that into
your environment, either in a stored version, or through CONFIG symbols.

If you have something very simple (like flipping a GPIO), which is hard
to express otherwise, you could try to add this somewhere in
board/sunxi/board.c, and control this with a Kconfig symbol.
Alternatively you could use the built-in gpio command through some
custom boot script, for instance.

> So I want create a board dir and select it in Kconfig.

So I am very much against a per-board dir, especially given that we
survived with 160 boards without one so far. Having a SoC dir could
actually prove useful, but that won't help in your case.

If you show me more of your code, I could possibly direct you more
specifically.

Cheers,
Andre

> > hacks, which we cover by config options, like CONFIG_PINE64_DT_SELECTION.
> >
> > So I am afraid this is not going anywhere.
> > If this is solving some problem for you, please describe the problem here,
> > and I am sure we will find a much better solution.
> > Adding support for a new board (with the SoC already supported) would just
> > require a defconfig and the .dts file.
> >
> > Cheers,
> > Andre
> >
> >> Signed-off-by: qianfan Zhao <qianfanguijin@163.com>
> >> ---
> >>   arch/arm/mach-sunxi/Kconfig | 17 +++++++++++++++++
> >>   1 file changed, 17 insertions(+)
> >>
> >> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> >> index 2c18cf02d1..03460870db 100644
> >> --- a/arch/arm/mach-sunxi/Kconfig
> >> +++ b/arch/arm/mach-sunxi/Kconfig
> >> @@ -598,6 +598,7 @@ config SYS_CLK_FREQ
> >>   	default 1008000000 if MACH_SUN50I_H616
> >>   
> >>   config SYS_CONFIG_NAME
> >> +	string "Board configuration name"
> >>   	default "sun4i" if MACH_SUN4I
> >>   	default "sun5i" if MACH_SUN5I
> >>   	default "sun6i" if MACH_SUN6I
> >> @@ -607,9 +608,25 @@ config SYS_CONFIG_NAME
> >>   	default "sun50i" if MACH_SUN50I
> >>   	default "sun50i" if MACH_SUN50I_H6
> >>   	default "sun50i" if MACH_SUN50I_H616
> >> +	help
> >> +	  This option contains information about board configuration name.
> >> +	  Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
> >> +	  will be used for board configuration.
> >>   
> >>   config SYS_BOARD
> >> +	string "Board name"
> >>   	default "sunxi"
> >> +	help
> >> +	  This option contains information about board name.
> >> +	  Based on this option board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD> will
> >> +	  be used.
> >> +
> >> +config SYS_VENDOR
> >> +	string "Vendor name"
> >> +	help
> >> +	  This option contains information about board name.
> >> +	  Based on this option board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD> will
> >> +	  be used.
> >>   
> >>   config SYS_SOC
> >>   	default "sunxi"
> 


  reply	other threads:[~2022-04-28  0:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-21  3:32 [PATCH v1] sunxi: Make SYS_VENDOR, SYS_BOARD, SYS_CONFIG_NAME configurable qianfanguijin
2022-04-26 12:49 ` Andre Przywara
2022-04-27  0:42   ` qianfan
2022-04-28  0:16     ` Andre Przywara [this message]
2022-04-28  1:41       ` qianfan

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=20220428011602.11ece790@slackpad.lan \
    --to=andre.przywara@arm.com \
    --cc=jagan@amarulasolutions.com \
    --cc=qianfanguijin@163.com \
    --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;
as well as URLs for NNTP newsgroup(s).