[U-Boot] [PATCH v2 03/10] sunxi: Introduce a hidden SUNXI_GEN_SUNxI Kconfig bool

Ian Campbell ijc at hellion.org.uk
Mon May 4 11:31:23 CEST 2015


On Mon, 2015-05-04 at 11:04 +0200, Hans de Goede wrote:
> Hi,
> 
> On 02-05-15 15:31, Ian Campbell wrote:
> > On Sun, 2015-04-26 at 17:21 +0200, Hans de Goede wrote:
> >> sun6i and newer (derived) SoCs such as the sun8i-a23, sun8i-a33 and sun9i
> >> have a various things in common, like having separate ahb reset control
> >> registers, the SID living inside the pmic, custom pmic busses, new style
> >> watchdog, etc.
> >>
> >> This commit introduces a new hidden SUNXI_GEN_SUN6I Kconfig bool which can be
> >> used to check for these features avoiding the need for an ever growing list
> >> of "#if defined CONFIG_MACH_SUN?I" conditionals as we add support for more
> >> "new style" sunxi SoCs.
> >>
> >> For completeness this also adds a SUNXI_GEN_SUN4I bool for A10/A13/A20.
> >>
> >> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> >> ---
> >> Changes in v2:
> >> -Use SUNXI_GEN_SUN?I instead of ARCH_SUN6I
> >> ---
> >>   arch/arm/cpu/armv7/sunxi/board.c            | 18 +++++++++---------
> >>   arch/arm/cpu/armv7/sunxi/usbc.c             |  4 ++--
> >>   arch/arm/include/asm/arch-sunxi/cpu_sun4i.h | 12 ++++++------
> >>   arch/arm/include/asm/arch-sunxi/mmc.h       |  3 +--
> >>   arch/arm/include/asm/arch-sunxi/timer.h     |  8 ++++----
> >>   board/sunxi/Kconfig                         | 21 +++++++++++++++++++++
> >>   board/sunxi/gmac.c                          |  6 +++---
> >>   drivers/mmc/sunxi_mmc.c                     |  3 +--
> >>   drivers/video/sunxi_display.c               | 10 +++++-----
> >>   9 files changed, 52 insertions(+), 33 deletions(-)
> >>
> >> diff --git a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
> >> index f403742..afa55d6 100644
> >> --- a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
> >> +++ b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
> >> @@ -37,7 +37,7 @@
> >>   #define SUNXI_MMC1_BASE			0x01c10000
> >>   #define SUNXI_MMC2_BASE			0x01c11000
> >>   #define SUNXI_MMC3_BASE			0x01c12000
> >> -#if !defined CONFIG_MACH_SUN6I && !defined CONFIG_MACH_SUN8I
> >> +#ifndef CONFIG_SUNXI_GEN_SUN6I
> >
> > #ifdef CONFIG_SUNXI_GEN_SUN4I?
> >
> >
> >> diff --git a/arch/arm/include/asm/arch-sunxi/mmc.h b/arch/arm/include/asm/arch-sunxi/mmc.h
> >> index 74833b5..cb52e64 100644
> >> --- a/arch/arm/include/asm/arch-sunxi/mmc.h
> >> +++ b/arch/arm/include/asm/arch-sunxi/mmc.h
> >> @@ -43,8 +43,7 @@ struct sunxi_mmc {
> >>   	u32 chda;		/* 0x90 */
> >>   	u32 cbda;		/* 0x94 */
> >>   	u32 res1[26];
> >> -#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN8I) || \
> >> -    defined(CONFIG_MACH_SUN9I)
> >
> > Did you miss the select GEN_SUN6I from the SUN9I Kconfig entry?
> >
> > Oh, there isn't one, I suppose this was some vestige of another patch
> > and in that case it's fine as it is (unless this patch is supposed to be
> > on top of one which adds Kconfig SUN9I).
> >
> > Anyway, which ever way it is I trust you know what to do (even if that's
> > nothing).
> 
> Right, so there is a MACH_SUN9I is my sunxi-wip tree, but that is not ready
> yet to go upstream. I still need to address your comments about dealing with
> the different DRAM base address between sun9i and the rest in sunxi-common.h.
> But I've been busy with other stuff / been distracted by shinier things.
> 
> So the reason why there is no SUN9I related code in this patch is because the
> SUN9I code is intended to get merged at some point in the future after this
> patch-set (and it sits after this one in the history of my sunxi-wip branch).

Great thanks.

> >> diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
> >> index 88e3358..b716a8b 100644
> >> --- a/board/sunxi/Kconfig
> >> +++ b/board/sunxi/Kconfig
> >> @@ -1,21 +1,40 @@
> >>   if ARCH_SUNXI
> >>
> >> +# Note only one of these may be selected at a time! But hidden choices are
> >> +# not supported by Kconfig
> >
> > Probably not worth it, but is "depends on !THE_OTHER_THING" a usable
> > construct?
> 
> Good idea, unfortunately it seems Kconfig does not like it:
> 
> board/sunxi/Kconfig:12:error: recursive dependency detected!
> board/sunxi/Kconfig:12: symbol SUNXI_GEN_SUN6I depends on SUNXI_GEN_SUN4I
> board/sunxi/Kconfig:5:  symbol SUNXI_GEN_SUN4I depends on SUNXI_GEN_SUN6I

Shame.

> >> diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
> >> index d90eed4..4e222d8 100644
> >> --- a/board/sunxi/gmac.c
> >> +++ b/board/sunxi/gmac.c
> >> @@ -13,11 +13,11 @@ int sunxi_gmac_initialize(bd_t *bis)
> >>   		(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
> >>
> >>   	/* Set up clock gating */
> >> -#ifndef CONFIG_MACH_SUN6I
> >> -	setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);
> >> -#else
> >> +#ifdef CONFIG_SUNXI_GEN_SUN6I
> >
> > Is this one not changing the behaviour for SUN8I (and SUN9I perhaps).
> > Previously they would have gotten the else case.
> 
> sun8i chips (at least the a23 and a33) do not have an ethernet chip, and
> the Makefile has:
> 
> obj-$(CONFIG_SUNXI_GMAC)        += gmac.o
> 
> So this is never build for them. If it was build then the sun6i code
> would be the correct thing to do since sun8i does have separate ahb reset
> registers like sun6i.
> 
> For sun9i it is unclear / unknown atm what sort of ethernet mac ip it
> has, but if it is the classic dw gmac, then it too would need the
> sun6i case of the code.

OK, slightly confusing to have such intertwined things, but I see the
logic now.

Would be useful to make explicit reference to this Ethernet case and the
HDMI/video ones in the commit message, but in any case:

Acked-by: Ian Campbell <ijc at hellion.org.uk>




More information about the U-Boot mailing list