* [PATCH 0/4] ARM: tegra: Unify board-dt-tegra{20,30,114}
@ 2013-02-08 7:29 Hiroshi Doyu
2013-02-08 7:29 ` [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() Hiroshi Doyu
` (3 more replies)
0 siblings, 4 replies; 15+ messages in thread
From: Hiroshi Doyu @ 2013-02-08 7:29 UTC (permalink / raw)
To: linux-tegra-u79uwXL29TY76Z2rM5mHXA; +Cc: arnd-r2nGTMty4D4, Hiroshi Doyu
Hi,
Common Clock Framework(CCF) has been introduced in Tegra recently,
which could allow us to unify board-dt-tegra{20,30,114} and to have a
single DT board file as Arnd Bergmann suggested originally[1]. Still
there are some driver specific code from USB/PCIE. They would be
reverted/removed as the new DT supports are coming soon.
Verified that Dalmore(Tegra114) booted. Testing with Tegra20/Tegra30
based board would be appreciated.
The following changes since commit 82c2958263492ca8d23c5f07e183600f951edbe5:
ARM: set evt->broadcast for clock_event devices (2013-02-06 14:11:09 -0700)
are available in the git repository at:
git://nv-tegra.nvidia.com/user/hdoyu/linux unify-board-dt
for you to fetch changes up to b2c8557932fbe558fbec2932c98882e47478bdf1:
ARM: tegra: Restore USB/PCIE info in new DT board file (2013-02-08 09:23:13 +0200)
----------------------------------------------------------------
Hiroshi Doyu (4):
ARM: tegra: Unify tegra{20,30,114}_init_early()
ARM: tegra: Unify board-dt-tegra{30,114}.c
ARM: tegra: Unify board-dt-tegra{20,30}.c to tegra.c
ARM: tegra: Restore USB/PCIE info in new DT board file
arch/arm/mach-tegra/Makefile | 5 +-
arch/arm/mach-tegra/board-dt-tegra114.c | 46 ----------
arch/arm/mach-tegra/board-dt-tegra20.c | 2 +-
arch/arm/mach-tegra/board-dt-tegra30.c | 60 -------------
arch/arm/mach-tegra/board.h | 4 +-
arch/arm/mach-tegra/common.c | 26 +-----
arch/arm/mach-tegra/hotplug.c | 31 ++++---
arch/arm/mach-tegra/sleep.h | 10 +--
arch/arm/mach-tegra/tegra.c | 148 +++++++++++++++++++++++++++++++
9 files changed, 176 insertions(+), 156 deletions(-)
delete mode 100644 arch/arm/mach-tegra/board-dt-tegra114.c
delete mode 100644 arch/arm/mach-tegra/board-dt-tegra30.c
create mode 100644 arch/arm/mach-tegra/tegra.c
[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2013-January/139451.html
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() 2013-02-08 7:29 [PATCH 0/4] ARM: tegra: Unify board-dt-tegra{20,30,114} Hiroshi Doyu @ 2013-02-08 7:29 ` Hiroshi Doyu [not found] ` <1360308574-19658-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2013-02-08 7:29 ` [PATCH 2/4] ARM: tegra: Unify board-dt-tegra{30,114}.c Hiroshi Doyu ` (2 subsequent siblings) 3 siblings, 1 reply; 15+ messages in thread From: Hiroshi Doyu @ 2013-02-08 7:29 UTC (permalink / raw) To: linux-tegra Cc: arnd, Hiroshi Doyu, Stephen Warren, Russell King, linux-arm-kernel, linux-kernel Refactored tegra{20,30,114}_init_early() so that we have the unified tegra_init_early(). Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com> --- arch/arm/mach-tegra/board-dt-tegra114.c | 2 +- arch/arm/mach-tegra/board-dt-tegra20.c | 2 +- arch/arm/mach-tegra/board-dt-tegra30.c | 4 ++-- arch/arm/mach-tegra/board.h | 4 +--- arch/arm/mach-tegra/common.c | 26 ++------------------------ arch/arm/mach-tegra/hotplug.c | 31 +++++++++++++++++-------------- arch/arm/mach-tegra/sleep.h | 10 +++++----- 7 files changed, 29 insertions(+), 50 deletions(-) diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c index 085d636..08e8294 100644 --- a/arch/arm/mach-tegra/board-dt-tegra114.c +++ b/arch/arm/mach-tegra/board-dt-tegra114.c @@ -36,7 +36,7 @@ static const char * const tegra114_dt_board_compat[] = { DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)") .smp = smp_ops(tegra_smp_ops), .map_io = tegra_map_common_io, - .init_early = tegra114_init_early, + .init_early = tegra_init_early, .init_irq = tegra_dt_init_irq, .init_time = clocksource_of_init, .init_machine = tegra114_dt_init, diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c index a0edf25..fca18e9 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c @@ -145,7 +145,7 @@ static const char *tegra20_dt_board_compat[] = { DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)") .map_io = tegra_map_common_io, .smp = smp_ops(tegra_smp_ops), - .init_early = tegra20_init_early, + .init_early = tegra_init_early, .init_irq = tegra_dt_init_irq, .init_time = clocksource_of_init, .init_machine = tegra_dt_init, diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index bf68567..63f8139 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c @@ -3,7 +3,7 @@ * * NVIDIA Tegra30 device tree board support * - * Copyright (C) 2011 NVIDIA Corporation + * Copyright (C) 2011, 2013, NVIDIA Corporation * * Derived from: * @@ -50,7 +50,7 @@ static const char *tegra30_dt_board_compat[] = { DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)") .smp = smp_ops(tegra_smp_ops), .map_io = tegra_map_common_io, - .init_early = tegra30_init_early, + .init_early = tegra_init_early, .init_irq = tegra_dt_init_irq, .init_time = clocksource_of_init, .init_machine = tegra30_dt_init, diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h index 86851c8..60431de 100644 --- a/arch/arm/mach-tegra/board.h +++ b/arch/arm/mach-tegra/board.h @@ -26,9 +26,7 @@ void tegra_assert_system_reset(char mode, const char *cmd); -void __init tegra20_init_early(void); -void __init tegra30_init_early(void); -void __init tegra114_init_early(void); +void __init tegra_init_early(void); void __init tegra_map_common_io(void); void __init tegra_init_irq(void); void __init tegra_dt_init_irq(void); diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c index 5449a3f..f0315c9 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c @@ -94,7 +94,7 @@ static void __init tegra_init_cache(void) } -static void __init tegra_init_early(void) +void __init tegra_init_early(void) { tegra_cpu_reset_handler_init(); tegra_apb_io_init(); @@ -102,31 +102,9 @@ static void __init tegra_init_early(void) tegra_init_cache(); tegra_pmc_init(); tegra_powergate_init(); + tegra_hotplug_init(); } -#ifdef CONFIG_ARCH_TEGRA_2x_SOC -void __init tegra20_init_early(void) -{ - tegra_init_early(); - tegra20_hotplug_init(); -} -#endif - -#ifdef CONFIG_ARCH_TEGRA_3x_SOC -void __init tegra30_init_early(void) -{ - tegra_init_early(); - tegra30_hotplug_init(); -} -#endif - -#ifdef CONFIG_ARCH_TEGRA_114_SOC -void __init tegra114_init_early(void) -{ - tegra_init_early(); -} -#endif - void __init tegra_init_late(void) { tegra_powergate_debugfs_init(); diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c index a599f6e..9bcecb8 100644 --- a/arch/arm/mach-tegra/hotplug.c +++ b/arch/arm/mach-tegra/hotplug.c @@ -1,8 +1,7 @@ /* - * * Copyright (C) 2002 ARM Ltd. * All Rights Reserved - * Copyright (c) 2010, 2012 NVIDIA Corporation. All rights reserved. + * Copyright (c) 2010, 2012-2013, NVIDIA Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -15,6 +14,7 @@ #include <asm/cacheflush.h> #include <asm/smp_plat.h> +#include "fuse.h" #include "sleep.h" static void (*tegra_hotplug_shutdown)(void); @@ -56,18 +56,21 @@ int tegra_cpu_disable(unsigned int cpu) return cpu == 0 ? -EPERM : 0; } -#ifdef CONFIG_ARCH_TEGRA_2x_SOC -extern void tegra20_hotplug_shutdown(void); -void __init tegra20_hotplug_init(void) +void __init tegra_hotplug_init(void) { - tegra_hotplug_shutdown = tegra20_hotplug_shutdown; -} + switch (tegra_chip_id) { +#ifdef CONFIG_ARCH_TEGRA_2x_SOC + case TEGRA20: + tegra_hotplug_shutdown = tegra20_hotplug_shutdown; + break; #endif - -#ifdef CONFIG_ARCH_TEGRA_3x_SOC -extern void tegra30_hotplug_shutdown(void); -void __init tegra30_hotplug_init(void) -{ - tegra_hotplug_shutdown = tegra30_hotplug_shutdown; -} +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) + case TEGRA30: + tegra_hotplug_shutdown = tegra30_hotplug_shutdown; + break; #endif + default: + BUG_ON(IS_ENABLED(CONFIG_HOTPLUG_CPU)); + break; + } +} diff --git a/arch/arm/mach-tegra/sleep.h b/arch/arm/mach-tegra/sleep.h index 4ffae54..970ebd5 100644 --- a/arch/arm/mach-tegra/sleep.h +++ b/arch/arm/mach-tegra/sleep.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012, NVIDIA Corporation. All rights reserved. + * Copyright (c) 2010-2013, NVIDIA Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -124,11 +124,11 @@ int tegra_sleep_cpu_finish(unsigned long); void tegra_disable_clean_inv_dcache(void); #ifdef CONFIG_HOTPLUG_CPU -void tegra20_hotplug_init(void); -void tegra30_hotplug_init(void); +void tegra20_hotplug_shutdown(void); +void tegra30_hotplug_shutdown(void); +void tegra_hotplug_init(void); #else -static inline void tegra20_hotplug_init(void) {} -static inline void tegra30_hotplug_init(void) {} +static inline void tegra_hotplug_init(void) {} #endif void tegra20_cpu_shutdown(int cpu); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1360308574-19658-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() [not found] ` <1360308574-19658-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2013-02-08 7:47 ` Felipe Balbi [not found] ` <20130208074720.GB21879-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org> 2013-02-08 12:29 ` Marc Dietrich 1 sibling, 1 reply; 15+ messages in thread From: Felipe Balbi @ 2013-02-08 7:47 UTC (permalink / raw) To: Hiroshi Doyu Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Stephen Warren, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 1839 bytes --] Hi, On Fri, Feb 08, 2013 at 09:29:31AM +0200, Hiroshi Doyu wrote: > @@ -56,18 +56,21 @@ int tegra_cpu_disable(unsigned int cpu) > return cpu == 0 ? -EPERM : 0; > } > > -#ifdef CONFIG_ARCH_TEGRA_2x_SOC > -extern void tegra20_hotplug_shutdown(void); > -void __init tegra20_hotplug_init(void) > +void __init tegra_hotplug_init(void) > { > - tegra_hotplug_shutdown = tegra20_hotplug_shutdown; > -} > + switch (tegra_chip_id) { > +#ifdef CONFIG_ARCH_TEGRA_2x_SOC > + case TEGRA20: > + tegra_hotplug_shutdown = tegra20_hotplug_shutdown; > + break; > #endif > - > -#ifdef CONFIG_ARCH_TEGRA_3x_SOC > -extern void tegra30_hotplug_shutdown(void); > -void __init tegra30_hotplug_init(void) > -{ > - tegra_hotplug_shutdown = tegra30_hotplug_shutdown; > -} > +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) how about using: #if IS_BUILTIN(CONFIG_ARCH_TEGRA_3x_SOC) instead ? > diff --git a/arch/arm/mach-tegra/sleep.h b/arch/arm/mach-tegra/sleep.h > index 4ffae54..970ebd5 100644 > --- a/arch/arm/mach-tegra/sleep.h > +++ b/arch/arm/mach-tegra/sleep.h > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2010-2012, NVIDIA Corporation. All rights reserved. > + * Copyright (c) 2010-2013, NVIDIA Corporation. All rights reserved. > * > * This program is free software; you can redistribute it and/or modify it > * under the terms and conditions of the GNU General Public License, > @@ -124,11 +124,11 @@ int tegra_sleep_cpu_finish(unsigned long); > void tegra_disable_clean_inv_dcache(void); > > #ifdef CONFIG_HOTPLUG_CPU > -void tegra20_hotplug_init(void); > -void tegra30_hotplug_init(void); > +void tegra20_hotplug_shutdown(void); > +void tegra30_hotplug_shutdown(void); aren't these two called only by tegra_hotplug_init() now ? That means they don't need to be exposed. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20130208074720.GB21879-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>]
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() [not found] ` <20130208074720.GB21879-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org> @ 2013-02-08 8:09 ` Hiroshi Doyu [not found] ` <20130208.100942.592982910310763762.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Hiroshi Doyu @ 2013-02-08 8:09 UTC (permalink / raw) To: balbi-l0cyMroinI0@public.gmane.org Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Hi Felipe, Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org> wrote @ Fri, 8 Feb 2013 08:47:20 +0100: > > +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) > > how about using: > > #if IS_BUILTIN(CONFIG_ARCH_TEGRA_3x_SOC) > > instead ? Why is IS_BUILTIN() prefered? > > -void tegra20_hotplug_init(void); > > -void tegra30_hotplug_init(void); > > +void tegra20_hotplug_shutdown(void); > > +void tegra30_hotplug_shutdown(void); > > aren't these two called only by tegra_hotplug_init() now ? Yes > That means they don't need to be exposed. tegra{20,30}_hotplug_shutdown are defined in sleep-tegra{20,30}.S and used in hotplug.c So I think that the above are necessary here. ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20130208.100942.592982910310763762.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() [not found] ` <20130208.100942.592982910310763762.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2013-02-09 12:18 ` Arnd Bergmann 0 siblings, 0 replies; 15+ messages in thread From: Arnd Bergmann @ 2013-02-09 12:18 UTC (permalink / raw) To: Hiroshi Doyu Cc: balbi-l0cyMroinI0@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org On Friday 08 February 2013, Hiroshi Doyu wrote: > > > +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) > > > > how about using: > > > > #if IS_BUILTIN(CONFIG_ARCH_TEGRA_3x_SOC) > > > > instead ? > > Why is IS_BUILTIN() prefered? > Inside of a function, if(IS_ENABLED(CONFIG_FOO)) or the respective IS_BUILTIN is preferred over #ifdef because it provides better compile coverage and better readability. Also, IS_ENABLED() is nice when you want to check if something is builtin or module, without having to write a complex expression. If you just replace the #ifdef with #if IS_BUILTIN as Felipe suggested, I see no real benefit, but it would be nice to write this as void __init tegra_hotplug_init(void) { if (!IS_ENABLED(CONFIG_HOTPLUG_CPU)) return; if (IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC)) && tegra_chip_id == TEGRA20) tegra_hotplug_shutdown = tegra20_hotplug_shutdown; if (IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC)) && tegra_chip_id == TEGRA30) tegra_hotplug_shutdown = tegra30_hotplug_shutdown; } which completely avoids all preprocessor conditionals and replaces them with compile-time choices based on constant expressions to eliminate the code paths for disabled platforms. Arnd ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() [not found] ` <1360308574-19658-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2013-02-08 7:47 ` Felipe Balbi @ 2013-02-08 12:29 ` Marc Dietrich 2013-02-08 17:09 ` Stephen Warren 1 sibling, 1 reply; 15+ messages in thread From: Marc Dietrich @ 2013-02-08 12:29 UTC (permalink / raw) To: Hiroshi Doyu Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Stephen Warren, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA Hiroshi, Am Freitag, 8. Februar 2013, 09:29:31 schrieb Hiroshi Doyu: > Refactored tegra{20,30,114}_init_early() so that we have the unified > tegra_init_early(). > > Signed-off-by: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> [...] > diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c > index a599f6e..9bcecb8 100644 > --- a/arch/arm/mach-tegra/hotplug.c > +++ b/arch/arm/mach-tegra/hotplug.c > @@ -1,8 +1,7 @@ > /* > - * > * Copyright (C) 2002 ARM Ltd. > * All Rights Reserved > - * Copyright (c) 2010, 2012 NVIDIA Corporation. All rights reserved. > + * Copyright (c) 2010, 2012-2013, NVIDIA Corporation. All rights reserved. > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License version 2 as > @@ -15,6 +14,7 @@ > #include <asm/cacheflush.h> > #include <asm/smp_plat.h> > > +#include "fuse.h" > #include "sleep.h" > > static void (*tegra_hotplug_shutdown)(void); > @@ -56,18 +56,21 @@ int tegra_cpu_disable(unsigned int cpu) > return cpu == 0 ? -EPERM : 0; > } > > -#ifdef CONFIG_ARCH_TEGRA_2x_SOC > -extern void tegra20_hotplug_shutdown(void); > -void __init tegra20_hotplug_init(void) > +void __init tegra_hotplug_init(void) > { > - tegra_hotplug_shutdown = tegra20_hotplug_shutdown; > -} > + switch (tegra_chip_id) { > +#ifdef CONFIG_ARCH_TEGRA_2x_SOC > + case TEGRA20: > + tegra_hotplug_shutdown = tegra20_hotplug_shutdown; > + break; > #endif > - > -#ifdef CONFIG_ARCH_TEGRA_3x_SOC > -extern void tegra30_hotplug_shutdown(void); > -void __init tegra30_hotplug_init(void) > -{ > - tegra_hotplug_shutdown = tegra30_hotplug_shutdown; > -} > +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) > + case TEGRA30: > + tegra_hotplug_shutdown = tegra30_hotplug_shutdown; > + break; > #endif > + default: > + BUG_ON(IS_ENABLED(CONFIG_HOTPLUG_CPU)); > + break; > + } > +} are these ifdefs really needed? Multisoc kernels will enable them all anyway and there is a case structure which protects the assignments. Also the hotplug functions are very tiny, so there shouldn't be a big loss. Marc ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() 2013-02-08 12:29 ` Marc Dietrich @ 2013-02-08 17:09 ` Stephen Warren [not found] ` <51153136.7010705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Stephen Warren @ 2013-02-08 17:09 UTC (permalink / raw) To: Marc Dietrich Cc: Hiroshi Doyu, linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA On 02/08/2013 05:29 AM, Marc Dietrich wrote: > Hiroshi, > > Am Freitag, 8. Februar 2013, 09:29:31 schrieb Hiroshi Doyu: >> Refactored tegra{20,30,114}_init_early() so that we have the unified >> tegra_init_early(). >> diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c >> +void __init tegra_hotplug_init(void) >> { >> + switch (tegra_chip_id) { >> +#ifdef CONFIG_ARCH_TEGRA_2x_SOC >> + case TEGRA20: >> + tegra_hotplug_shutdown = tegra20_hotplug_shutdown; >> + break; >> #endif >> +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) >> + case TEGRA30: >> + tegra_hotplug_shutdown = tegra30_hotplug_shutdown; >> + break; >> #endif >> + default: >> + BUG_ON(IS_ENABLED(CONFIG_HOTPLUG_CPU)); >> + break; >> + } >> +} > > are these ifdefs really needed? Multisoc kernels will enable them all anyway > and there is a case structure which protects the assignments. Also the hotplug > functions are very tiny, so there shouldn't be a big loss. The files that contain/implement those functions are separate for each SoC and only included in the build when the individual SoCs are enabled. While multi-platform SoCs do make sense for distros, we also very specifically want to support the case where only Tegra, and only a single Tegra SoC, is enabled, hence this separation. (and Tegra doesn't support multi-platform yet; maybe in another kernel release or two) ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <51153136.7010705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>]
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() [not found] ` <51153136.7010705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> @ 2013-02-10 17:28 ` Marc Dietrich 2013-02-10 20:20 ` Stephen Warren 0 siblings, 1 reply; 15+ messages in thread From: Marc Dietrich @ 2013-02-10 17:28 UTC (permalink / raw) To: Stephen Warren Cc: Hiroshi Doyu, linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Friday 08 February 2013 10:09:10 Stephen Warren wrote: > On 02/08/2013 05:29 AM, Marc Dietrich wrote: > > Hiroshi, > > > > Am Freitag, 8. Februar 2013, 09:29:31 schrieb Hiroshi Doyu: > >> Refactored tegra{20,30,114}_init_early() so that we have the unified > >> tegra_init_early(). > >> > >> diff --git a/arch/arm/mach-tegra/hotplug.c > >> b/arch/arm/mach-tegra/hotplug.c > >> > >> +void __init tegra_hotplug_init(void) > >> > >> { > >> > >> + switch (tegra_chip_id) { > >> +#ifdef CONFIG_ARCH_TEGRA_2x_SOC > >> + case TEGRA20: > >> + tegra_hotplug_shutdown = tegra20_hotplug_shutdown; > >> + break; > >> > >> #endif > >> > >> +#if defined(CONFIG_ARCH_TEGRA_3x_SOC) > >> + case TEGRA30: > >> + tegra_hotplug_shutdown = tegra30_hotplug_shutdown; > >> + break; > >> > >> #endif > >> > >> + default: > >> + BUG_ON(IS_ENABLED(CONFIG_HOTPLUG_CPU)); > >> + break; > >> + } > >> +} > > > > are these ifdefs really needed? Multisoc kernels will enable them all > > anyway and there is a case structure which protects the assignments. Also > > the hotplug functions are very tiny, so there shouldn't be a big loss. > > The files that contain/implement those functions are separate for each > SoC and only included in the build when the individual SoCs are enabled. > > While multi-platform SoCs do make sense for distros, we also very > specifically want to support the case where only Tegra, and only a > single Tegra SoC, is enabled, hence this separation. Huh? so tegra_defconfig is not supported? grep "TEGRA_.*_SOC" tegra_defconfig: CONFIG_ARCH_TEGRA_2x_SOC=y CONFIG_ARCH_TEGRA_3x_SOC=y Marc ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() 2013-02-10 17:28 ` Marc Dietrich @ 2013-02-10 20:20 ` Stephen Warren [not found] ` <51180121.6040803-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Stephen Warren @ 2013-02-10 20:20 UTC (permalink / raw) To: Marc Dietrich Cc: Hiroshi Doyu, linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA 1On 02/10/2013 10:28 AM, Marc Dietrich wrote: > On Friday 08 February 2013 10:09:10 Stephen Warren wrote: >> On 02/08/2013 05:29 AM, Marc Dietrich wrote: >>> Hiroshi, >>> >>> Am Freitag, 8. Februar 2013, 09:29:31 schrieb Hiroshi Doyu: >>>> Refactored tegra{20,30,114}_init_early() so that we have the unified >>>> tegra_init_early(). ... >>> are these ifdefs really needed? Multisoc kernels will enable them all >>> anyway and there is a case structure which protects the assignments. Also >>> the hotplug functions are very tiny, so there shouldn't be a big loss. >> >> The files that contain/implement those functions are separate for each >> SoC and only included in the build when the individual SoCs are enabled. >> >> While multi-platform SoCs do make sense for distros, we also very >> specifically want to support the case where only Tegra, and only a >> single Tegra SoC, is enabled, hence this separation. > > Huh? so tegra_defconfig is not supported? > > grep "TEGRA_.*_SOC" tegra_defconfig: > > CONFIG_ARCH_TEGRA_2x_SOC=y > CONFIG_ARCH_TEGRA_3x_SOC=y I don't understand the question. But to be clear. There are now 3 variants of Tegra supported. (Tegra20, Tegra30, Tegra114). We want to be able to build a minimal-size kernel (e.g. for embedded applications) that supports just one, any combination of two, or all three Tegra variants. ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <51180121.6040803-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>]
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() [not found] ` <51180121.6040803-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> @ 2013-02-10 21:16 ` Marc Dietrich 2013-02-11 4:18 ` Hiroshi Doyu 0 siblings, 1 reply; 15+ messages in thread From: Marc Dietrich @ 2013-02-10 21:16 UTC (permalink / raw) To: Stephen Warren Cc: Hiroshi Doyu, linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Sunday 10 February 2013 13:20:49 Stephen Warren wrote: > 1On 02/10/2013 10:28 AM, Marc Dietrich wrote: > > On Friday 08 February 2013 10:09:10 Stephen Warren wrote: > >> On 02/08/2013 05:29 AM, Marc Dietrich wrote: > >>> Hiroshi, > >>> > >>> Am Freitag, 8. Februar 2013, 09:29:31 schrieb Hiroshi Doyu: > >>>> Refactored tegra{20,30,114}_init_early() so that we have the unified > >>>> tegra_init_early(). > > ... > > >>> are these ifdefs really needed? Multisoc kernels will enable them all > >>> anyway and there is a case structure which protects the assignments. > >>> Also > >>> the hotplug functions are very tiny, so there shouldn't be a big loss. > >> > >> The files that contain/implement those functions are separate for each > >> SoC and only included in the build when the individual SoCs are enabled. > >> > >> While multi-platform SoCs do make sense for distros, we also very > >> specifically want to support the case where only Tegra, and only a > >> single Tegra SoC, is enabled, hence this separation. > > > > Huh? so tegra_defconfig is not supported? > > > > grep "TEGRA_.*_SOC" tegra_defconfig: > > > > CONFIG_ARCH_TEGRA_2x_SOC=y > > CONFIG_ARCH_TEGRA_3x_SOC=y > > I don't understand the question. > > But to be clear. There are now 3 variants of Tegra supported. (Tegra20, > Tegra30, Tegra114). We want to be able to build a minimal-size kernel > (e.g. for embedded applications) that supports just one, any combination > of two, or all three Tegra variants. ah, ok - I just skipped the "also" in your sentence above. But still, the #ifdefs look strange to me and save only a few byte of code. Just me few cents. Marc ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() 2013-02-10 21:16 ` Marc Dietrich @ 2013-02-11 4:18 ` Hiroshi Doyu 0 siblings, 0 replies; 15+ messages in thread From: Hiroshi Doyu @ 2013-02-11 4:18 UTC (permalink / raw) To: marvin24-Mmb7MZpHnFY@public.gmane.org Cc: swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Hi Marc, Marc Dietrich <marvin24-Mmb7MZpHnFY@public.gmane.org> wrote @ Sun, 10 Feb 2013 22:16:14 +0100: > ah, ok - I just skipped the "also" in your sentence above. But still, the > #ifdefs look strange to me and save only a few byte of code. Just me few > cents. What about the following as Arnd suggested[1]? void __init tegra_hotplug_init(void) { if (!IS_ENABLED(CONFIG_HOTPLUG_CPU)) return; if (IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC)) && tegra_chip_id == TEGRA20) tegra_hotplug_shutdown = tegra20_hotplug_shutdown; if (IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC)) && tegra_chip_id == TEGRA30) tegra_hotplug_shutdown = tegra30_hotplug_shutdown; } [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2013-February/148632.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 2/4] ARM: tegra: Unify board-dt-tegra{30,114}.c 2013-02-08 7:29 [PATCH 0/4] ARM: tegra: Unify board-dt-tegra{20,30,114} Hiroshi Doyu 2013-02-08 7:29 ` [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() Hiroshi Doyu @ 2013-02-08 7:29 ` Hiroshi Doyu 2013-02-08 7:29 ` [PATCH 3/4] ARM: tegra: Unify board-dt-tegra{20,30}.c to tegra.c Hiroshi Doyu 2013-02-08 7:29 ` [PATCH 4/4] ARM: tegra: Restore USB/PCIE info in new DT board file Hiroshi Doyu 3 siblings, 0 replies; 15+ messages in thread From: Hiroshi Doyu @ 2013-02-08 7:29 UTC (permalink / raw) To: linux-tegra Cc: arnd, Hiroshi Doyu, Stephen Warren, Russell King, linux-arm-kernel, linux-kernel Refactored that Tegra114 uses board-dt-tegra30. Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com> --- arch/arm/mach-tegra/Makefile | 2 +- arch/arm/mach-tegra/board-dt-tegra114.c | 46 ------------------------------- arch/arm/mach-tegra/board-dt-tegra30.c | 3 +- 3 files changed, 3 insertions(+), 48 deletions(-) delete mode 100644 arch/arm/mach-tegra/board-dt-tegra114.c diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile index f6b46ae..1a08ecd 100644 --- a/arch/arm/mach-tegra/Makefile +++ b/arch/arm/mach-tegra/Makefile @@ -29,7 +29,7 @@ obj-$(CONFIG_TEGRA_PCI) += pcie.o obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-dt-tegra20.o obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += board-dt-tegra30.o -obj-$(CONFIG_ARCH_TEGRA_114_SOC) += board-dt-tegra114.o +obj-$(CONFIG_ARCH_TEGRA_114_SOC) += board-dt-tegra30.o ifeq ($(CONFIG_CPU_IDLE),y) obj-$(CONFIG_ARCH_TEGRA_114_SOC) += cpuidle-tegra114.o endif diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c deleted file mode 100644 index 08e8294..0000000 --- a/arch/arm/mach-tegra/board-dt-tegra114.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * NVIDIA Tegra114 device tree board support - * - * Copyright (C) 2013 NVIDIA Corporation - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - */ - -#include <linux/of.h> -#include <linux/of_platform.h> -#include <linux/clocksource.h> - -#include <asm/mach/arch.h> - -#include "board.h" -#include "common.h" - -static void __init tegra114_dt_init(void) -{ - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); -} - -static const char * const tegra114_dt_board_compat[] = { - "nvidia,tegra114", - NULL, -}; - -DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)") - .smp = smp_ops(tegra_smp_ops), - .map_io = tegra_map_common_io, - .init_early = tegra_init_early, - .init_irq = tegra_dt_init_irq, - .init_time = clocksource_of_init, - .init_machine = tegra114_dt_init, - .init_late = tegra_init_late, - .restart = tegra_assert_system_reset, - .dt_compat = tegra114_dt_board_compat, -MACHINE_END diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index 63f8139..82cd85c 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c @@ -44,10 +44,11 @@ static void __init tegra30_dt_init(void) static const char *tegra30_dt_board_compat[] = { "nvidia,tegra30", + "nvidia,tegra114", NULL }; -DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)") +DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30/114 (Flattened Device Tree)") .smp = smp_ops(tegra_smp_ops), .map_io = tegra_map_common_io, .init_early = tegra_init_early, -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 3/4] ARM: tegra: Unify board-dt-tegra{20,30}.c to tegra.c 2013-02-08 7:29 [PATCH 0/4] ARM: tegra: Unify board-dt-tegra{20,30,114} Hiroshi Doyu 2013-02-08 7:29 ` [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() Hiroshi Doyu 2013-02-08 7:29 ` [PATCH 2/4] ARM: tegra: Unify board-dt-tegra{30,114}.c Hiroshi Doyu @ 2013-02-08 7:29 ` Hiroshi Doyu 2013-02-08 7:29 ` [PATCH 4/4] ARM: tegra: Restore USB/PCIE info in new DT board file Hiroshi Doyu 3 siblings, 0 replies; 15+ messages in thread From: Hiroshi Doyu @ 2013-02-08 7:29 UTC (permalink / raw) To: linux-tegra Cc: Russell King, arnd, Stephen Warren, linux-kernel, linux-arm-kernel, Hiroshi Doyu Refactored that Tegra{20,30,114} use the same board file. Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com> --- arch/arm/mach-tegra/Makefile | 5 ++-- .../arm/mach-tegra/{board-dt-tegra30.c => tegra.c} | 27 ++++++++++---------- 2 files changed, 15 insertions(+), 17 deletions(-) rename arch/arm/mach-tegra/{board-dt-tegra30.c => tegra.c} (71%) diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile index 1a08ecd..ee866337 100644 --- a/arch/arm/mach-tegra/Makefile +++ b/arch/arm/mach-tegra/Makefile @@ -27,9 +27,8 @@ obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_CPU_FREQ) += cpu-tegra.o obj-$(CONFIG_TEGRA_PCI) += pcie.o -obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-dt-tegra20.o -obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += board-dt-tegra30.o -obj-$(CONFIG_ARCH_TEGRA_114_SOC) += board-dt-tegra30.o +obj-y += tegra.o + ifeq ($(CONFIG_CPU_IDLE),y) obj-$(CONFIG_ARCH_TEGRA_114_SOC) += cpuidle-tegra114.o endif diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/tegra.c similarity index 71% rename from arch/arm/mach-tegra/board-dt-tegra30.c rename to arch/arm/mach-tegra/tegra.c index 82cd85c..62ae39a 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/tegra.c @@ -1,14 +1,7 @@ /* - * arch/arm/mach-tegra/board-dt-tegra30.c - * - * NVIDIA Tegra30 device tree board support + * NVIDIA Tegra SoC device tree board support * * Copyright (C) 2011, 2013, NVIDIA Corporation - * - * Derived from: - * - * arch/arm/mach-tegra/board-dt-tegra20.c - * * Copyright (C) 2010 Secret Lab Technologies, Ltd. * Copyright (C) 2010 Google, Inc. * @@ -37,25 +30,31 @@ #include "common.h" #include "iomap.h" -static void __init tegra30_dt_init(void) +static struct of_dev_auxdata tegra_auxdata_lookup[] __initdata = { + {}, +}; + +static void __init tegra_dt_init(void) { - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); + of_platform_populate(NULL, of_default_bus_match_table, + tegra_auxdata_lookup, NULL); } -static const char *tegra30_dt_board_compat[] = { +static const char * const tegra_dt_board_compat[] = { + "nvidia,tegra20", "nvidia,tegra30", "nvidia,tegra114", NULL }; -DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30/114 (Flattened Device Tree)") +DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)") .smp = smp_ops(tegra_smp_ops), .map_io = tegra_map_common_io, .init_early = tegra_init_early, .init_irq = tegra_dt_init_irq, .init_time = clocksource_of_init, - .init_machine = tegra30_dt_init, + .init_machine = tegra_dt_init, .init_late = tegra_init_late, .restart = tegra_assert_system_reset, - .dt_compat = tegra30_dt_board_compat, + .dt_compat = tegra_dt_board_compat, MACHINE_END -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 4/4] ARM: tegra: Restore USB/PCIE info in new DT board file 2013-02-08 7:29 [PATCH 0/4] ARM: tegra: Unify board-dt-tegra{20,30,114} Hiroshi Doyu ` (2 preceding siblings ...) 2013-02-08 7:29 ` [PATCH 3/4] ARM: tegra: Unify board-dt-tegra{20,30}.c to tegra.c Hiroshi Doyu @ 2013-02-08 7:29 ` Hiroshi Doyu [not found] ` <1360308574-19658-5-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 3 siblings, 1 reply; 15+ messages in thread From: Hiroshi Doyu @ 2013-02-08 7:29 UTC (permalink / raw) To: linux-tegra Cc: Russell King, arnd, Stephen Warren, linux-kernel, linux-arm-kernel, Hiroshi Doyu Mainly for the compatibility for the existing driver. This would be removed once new USB/PCIE DT supports come. Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com> --- arch/arm/mach-tegra/tegra.c | 92 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c index 62ae39a..82fea64 100644 --- a/arch/arm/mach-tegra/tegra.c +++ b/arch/arm/mach-tegra/tegra.c @@ -23,6 +23,8 @@ #include <linux/of_fdt.h> #include <linux/of_irq.h> #include <linux/of_platform.h> +#include <linux/platform_data/tegra_usb.h> +#include <linux/usb/tegra_usb_phy.h> #include <asm/mach/arch.h> @@ -30,9 +32,63 @@ #include "common.h" #include "iomap.h" +#ifdef USB_EHCI_TEGRA +static struct tegra_ulpi_config tegra_ehci2_ulpi_phy_config = { + .reset_gpio = -1, + .clk = "cdev2", +}; + +static struct tegra_ehci_platform_data tegra_ehci_pdata[] = { + { + .operating_mode = TEGRA_USB_OTG, + .power_down_on_bus_suspend = 1, + .vbus_gpio = -1, + }, + { + .operating_mode = TEGRA_USB_HOST, + .power_down_on_bus_suspend = 1, + .vbus_gpio = -1, + .phy_config = &tegra_ehci2_ulpi_phy_config, + }, + { + .operating_mode = TEGRA_USB_HOST, + .power_down_on_bus_suspend = 1, + .vbus_gpio = -1, + }, +}; + static struct of_dev_auxdata tegra_auxdata_lookup[] __initdata = { - {}, + OF_DEV_AUXDATA("nvidia,tegra20-ehci", 0xc5000000, "tegra-ehci.0", &tegra_ehci_pdata[0]), + OF_DEV_AUXDATA("nvidia,tegra20-ehci", 0xc5004000, "tegra-ehci.1", &tegra_ehci_pdata[1]), + OF_DEV_AUXDATA("nvidia,tegra20-ehci", 0xC5008000, "tegra-ehci.2", &tegra_ehci_pdata[2]), + {} }; +#else +#define tegra_auxdata_lookup NULL +#endif + +#if defined(CONFIG_TEGRA_PCI) && defined(CONFIG_ARCH_TEGRA_2x_SOC) +static void __init trimslice_init(void) +{ + int err; + + err = tegra_pcie_init(true, true); + if (err) + pr_err("%s failed: %d\n", __func__, err); +} +static void __init harmony_init(void) +{ + harmony_pcie_init(); +} +static void __init paz00_init(void) +{ + tegra_paz00_wifikill_init(); +} +#else +#define trimslice_init NULL +#define harmony_init NULL +#define paz00_init NULL +#endif static void __init tegra_dt_init(void) { @@ -40,6 +96,38 @@ static void __init tegra_dt_init(void) tegra_auxdata_lookup, NULL); } +static void __init tegra_dt_init_late(void) +{ + int i; + struct { + const char *name; + void (*init)(void); + } board[] = { + { + .name = "compulab,trimslice", + .init = trimslice_init, + }, + { + .name = "nvidia,harmony", + .init = harmony_init, + }, + { + .name = "compal,paz00", + .init = paz00_init + }, + }; + + tegra_init_late(); + + for (i = 0; i < ARRAY_SIZE(board); i++) { + if (of_machine_is_compatible(board[i].name)) { + if (board[i].init) + board[i].init(); + break; + } + } +} + static const char * const tegra_dt_board_compat[] = { "nvidia,tegra20", "nvidia,tegra30", @@ -54,7 +142,7 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)") .init_irq = tegra_dt_init_irq, .init_time = clocksource_of_init, .init_machine = tegra_dt_init, - .init_late = tegra_init_late, + .init_late = tegra_dt_init_late, .restart = tegra_assert_system_reset, .dt_compat = tegra_dt_board_compat, MACHINE_END -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1360308574-19658-5-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH 4/4] ARM: tegra: Restore USB/PCIE info in new DT board file [not found] ` <1360308574-19658-5-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2013-02-08 17:58 ` Stephen Warren 0 siblings, 0 replies; 15+ messages in thread From: Stephen Warren @ 2013-02-08 17:58 UTC (permalink / raw) To: Hiroshi Doyu Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, arnd-r2nGTMty4D4, Russell King, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA On 02/08/2013 12:29 AM, Hiroshi Doyu wrote: > Mainly for the compatibility for the existing driver. > This would be removed once new USB/PCIE DT supports come. This series makes Tegra20 broken between commit 3/4 and 4/4. Why not do the following instead: 1) Patch 1/4 as-is. 2) Rename board-dt-tegra20.c to tegra.c with no code changes to it. 3) Add Tegra30/114 compatible values into tegra.c, and delete the old Tegra30/114-specific board files. Fewer patches, and each patch builds and runs on all systems without any issue. ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2013-02-11 4:18 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-08 7:29 [PATCH 0/4] ARM: tegra: Unify board-dt-tegra{20,30,114} Hiroshi Doyu
2013-02-08 7:29 ` [PATCH 1/4] ARM: tegra: Unify tegra{20,30,114}_init_early() Hiroshi Doyu
[not found] ` <1360308574-19658-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-08 7:47 ` Felipe Balbi
[not found] ` <20130208074720.GB21879-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2013-02-08 8:09 ` Hiroshi Doyu
[not found] ` <20130208.100942.592982910310763762.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-09 12:18 ` Arnd Bergmann
2013-02-08 12:29 ` Marc Dietrich
2013-02-08 17:09 ` Stephen Warren
[not found] ` <51153136.7010705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-10 17:28 ` Marc Dietrich
2013-02-10 20:20 ` Stephen Warren
[not found] ` <51180121.6040803-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-10 21:16 ` Marc Dietrich
2013-02-11 4:18 ` Hiroshi Doyu
2013-02-08 7:29 ` [PATCH 2/4] ARM: tegra: Unify board-dt-tegra{30,114}.c Hiroshi Doyu
2013-02-08 7:29 ` [PATCH 3/4] ARM: tegra: Unify board-dt-tegra{20,30}.c to tegra.c Hiroshi Doyu
2013-02-08 7:29 ` [PATCH 4/4] ARM: tegra: Restore USB/PCIE info in new DT board file Hiroshi Doyu
[not found] ` <1360308574-19658-5-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-08 17:58 ` Stephen Warren
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox