* [PATCH 1/2] ARM: default machine descriptor for multiplatform
@ 2013-04-12 15:11 Arnd Bergmann
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
0 siblings, 2 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 15:11 UTC (permalink / raw)
To: linux-arm-kernel
Since we now have default implementations for init_time and init_irq,
the init_machine callback is the only one that is not yet optional,
but since simple DT based platforms all have the same
of_platform_populate function call in there, we can consolidate them
as well, and then actually boot with a completely empty machine_desc.
Unofortunately we cannot just default to an empty init_machine: We
cannot call of_platform_populate before init_machine because that
does not work in case of auxdata, and we cannot call it after
init_machine either because the machine might need to run code
after adding the devices.
To take the final step, this adds support for booting without defining
any machine_desc whatsoever.
For the case that CONFIG_MULTIPLATFORM is enabled, it adds a
global machine descriptor that never matches any machine but is
used as a fallback if nothing else matches. We assume that without
CONFIG_MULTIPLATFORM, we only want to boot on the systems that the kernel
is built for, so we still retain the build-time warning for missing
machine descriptors and the run-time warning when the platform does not
match in that case.
In the case that we run on a multiplatform kernel and the machine
provides a fully populated device tree, we attempt to keep booting,
hoping that no machine specific callbacks are necessary.
Finally, this also removes the misguided "select ARCH_VEXPRESS" that
was only added to avoid a build error for allnoconfig kernels.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Olof Johansson <olof@lixom.net>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: Rob Herring <robherring2@gmail.com>
---
arch/arm/Kconfig | 1 -
arch/arm/kernel/devtree.c | 9 ++++++++-
arch/arm/kernel/setup.c | 13 +++++++++++--
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1cacda4..e67d49d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1014,7 +1014,6 @@ config ARCH_MULTI_V7
bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
default y
select ARCH_MULTI_V6_V7
- select ARCH_VEXPRESS
select CPU_V7
config ARCH_MULTI_V6_V7
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 70f1bde..e6e34ba 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -180,6 +180,13 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
unsigned long dt_root;
const char *model;
+ if (IS_ENABLED(CONFIG_ARCH_MULTIPLATFORM)) {
+ DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
+ MACHINE_END
+
+ mdesc_best = (struct machine_desc *)&__mach_desc_GENERIC_DT;
+ }
+
if (!dt_phys)
return NULL;
@@ -199,7 +206,7 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
mdesc_score = score;
}
}
- if (!mdesc_best) {
+ if (!mdesc_best && !IS_ENABLED(CONFIG_ARCH_MULTIPLATFORM)) {
const char *prop;
long size;
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index d343a6c..8ea8d68 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -18,6 +18,7 @@
#include <linux/bootmem.h>
#include <linux/seq_file.h>
#include <linux/screen_info.h>
+#include <linux/of_platform.h>
#include <linux/init.h>
#include <linux/kexec.h>
#include <linux/of_fdt.h>
@@ -660,9 +661,17 @@ struct screen_info screen_info = {
static int __init customize_machine(void)
{
- /* customizes platform devices, or adds new ones */
+ /*
+ * customizes platform devices, or adds new ones
+ * On DT based machines, we fall back to populating the
+ * machine from the device tree, if no callback is provided,
+ * otherwise we would always need an init_machine callback.
+ */
if (machine_desc->init_machine)
machine_desc->init_machine();
+ else
+ of_platform_populate(NULL, of_default_bus_match_table,
+ NULL, NULL);
return 0;
}
arch_initcall(customize_machine);
@@ -752,7 +761,7 @@ void __init setup_arch(char **cmdline_p)
setup_processor();
mdesc = setup_machine_fdt(__atags_pointer);
- if (!mdesc)
+ if (!mdesc && __machine_arch_type != ~0)
mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
machine_desc = mdesc;
machine_name = mdesc->name;
--
1.8.1.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
2013-04-12 15:11 [PATCH 1/2] ARM: default machine descriptor for multiplatform Arnd Bergmann
@ 2013-04-12 15:11 ` Arnd Bergmann
2013-04-12 15:19 ` Arnd Bergmann
` (2 more replies)
2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
1 sibling, 3 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 15:11 UTC (permalink / raw)
To: linux-arm-kernel
The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
NULL) is now implied by having no init_machine callback in the machine
descriptor, so we can save a couple of lines in those machines that
do not need to do anything else.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Nicolas Pitre <nico@linaro.org>
Cc: Olof Johansson <olof@lixom.net>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: Rob Herring <robherring2@gmail.com>
---
arch/arm/mach-at91/board-dt.c | 6 ------
arch/arm/mach-at91/board-rm9200-dt.c | 6 ------
arch/arm/mach-exynos/mach-exynos4-dt.c | 7 -------
arch/arm/mach-imx/imx25-dt.c | 6 ------
arch/arm/mach-imx/imx31-dt.c | 6 ------
arch/arm/mach-imx/imx51-dt.c | 6 ------
arch/arm/mach-msm/board-dt-8660.c | 11 -----------
arch/arm/mach-msm/board-dt-8960.c | 6 ------
arch/arm/mach-tegra/board-dt-tegra114.c | 6 ------
arch/arm/mach-tegra/board-dt-tegra30.c | 6 ------
arch/arm/mach-virt/virt.c | 6 ------
11 files changed, 72 deletions(-)
diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c
index 8db3013..9903579 100644
--- a/arch/arm/mach-at91/board-dt.c
+++ b/arch/arm/mach-at91/board-dt.c
@@ -37,11 +37,6 @@ static void __init at91_dt_init_irq(void)
of_irq_init(irq_of_match);
}
-static void __init at91_dt_device_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char *at91_dt_board_compat[] __initdata = {
"atmel,at91sam9",
NULL
@@ -54,6 +49,5 @@ DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
.handle_irq = at91_aic_handle_irq,
.init_early = at91_dt_initialize,
.init_irq = at91_dt_init_irq,
- .init_machine = at91_dt_device_init,
.dt_compat = at91_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-at91/board-rm9200-dt.c b/arch/arm/mach-at91/board-rm9200-dt.c
index 3fcb662..6b8d260 100644
--- a/arch/arm/mach-at91/board-rm9200-dt.c
+++ b/arch/arm/mach-at91/board-rm9200-dt.c
@@ -36,11 +36,6 @@ static void __init at91rm9200_dt_init_irq(void)
of_irq_init(irq_of_match);
}
-static void __init at91rm9200_dt_device_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char *at91rm9200_dt_board_compat[] __initdata = {
"atmel,at91rm9200",
NULL
@@ -52,6 +47,5 @@ DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)")
.handle_irq = at91_aic_handle_irq,
.init_early = at91rm9200_dt_initialize,
.init_irq = at91rm9200_dt_init_irq,
- .init_machine = at91rm9200_dt_device_init,
.dt_compat = at91rm9200_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
index 3358088..25038a1 100644
--- a/arch/arm/mach-exynos/mach-exynos4-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
@@ -122,12 +122,6 @@ static void __init exynos4_dt_map_io(void)
s3c24xx_init_clocks(24000000);
}
-static void __init exynos4_dt_machine_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table,
- exynos4_auxdata_lookup, NULL);
-}
-
static char const *exynos4_dt_compat[] __initdata = {
"samsung,exynos4210",
"samsung,exynos4212",
@@ -140,7 +134,6 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
.smp = smp_ops(exynos_smp_ops),
.init_irq = exynos4_init_irq,
.map_io = exynos4_dt_map_io,
- .init_machine = exynos4_dt_machine_init,
.init_late = exynos_init_late,
.init_time = exynos4_timer_init,
.dt_compat = exynos4_dt_compat,
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c
index 8234839..2ecaa6a 100644
--- a/arch/arm/mach-imx/imx25-dt.c
+++ b/arch/arm/mach-imx/imx25-dt.c
@@ -17,11 +17,6 @@
#include "common.h"
#include "mx25.h"
-static void __init imx25_dt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char * const imx25_dt_board_compat[] __initconst = {
"fsl,imx25",
NULL
@@ -38,7 +33,6 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
.init_irq = mx25_init_irq,
.handle_irq = imx25_handle_irq,
.init_time = imx25_timer_init,
- .init_machine = imx25_dt_init,
.dt_compat = imx25_dt_board_compat,
.restart = mxc_restart,
MACHINE_END
diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
index 67de611..5bb05d5 100644
--- a/arch/arm/mach-imx/imx31-dt.c
+++ b/arch/arm/mach-imx/imx31-dt.c
@@ -18,11 +18,6 @@
#include "common.h"
#include "mx31.h"
-static void __init imx31_dt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char *imx31_dt_board_compat[] __initdata = {
"fsl,imx31",
NULL
@@ -39,7 +34,6 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
.init_irq = mx31_init_irq,
.handle_irq = imx31_handle_irq,
.init_time = imx31_dt_timer_init,
- .init_machine = imx31_dt_init,
.dt_compat = imx31_dt_board_compat,
.restart = mxc_restart,
MACHINE_END
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c
index e2926a8..52985a5 100644
--- a/arch/arm/mach-imx/imx51-dt.c
+++ b/arch/arm/mach-imx/imx51-dt.c
@@ -19,11 +19,6 @@
#include "common.h"
#include "mx51.h"
-static void __init imx51_dt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char *imx51_dt_board_compat[] __initdata = {
"fsl,imx51",
NULL
@@ -40,7 +35,6 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
.init_irq = mx51_init_irq,
.handle_irq = imx51_handle_irq,
.init_time = imx51_timer_init,
- .init_machine = imx51_dt_init,
.init_late = imx51_init_late,
.dt_compat = imx51_dt_board_compat,
.restart = mxc_restart,
diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
index 7dcfc53..0c21245 100644
--- a/arch/arm/mach-msm/board-dt-8660.c
+++ b/arch/arm/mach-msm/board-dt-8660.c
@@ -25,16 +25,6 @@ static void __init msm8x60_init_late(void)
smd_debugfs_init();
}
-static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
- {}
-};
-
-static void __init msm8x60_dt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table,
- msm_auxdata_lookup, NULL);
-}
-
static const char *msm8x60_fluid_match[] __initdata = {
"qcom,msm8660-fluid",
"qcom,msm8660-surf",
@@ -45,7 +35,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
.smp = smp_ops(msm_smp_ops),
.map_io = msm_map_msm8x60_io,
.init_irq = irqchip_init,
- .init_machine = msm8x60_dt_init,
.init_late = msm8x60_init_late,
.init_time = msm_dt_timer_init,
.dt_compat = msm8x60_fluid_match,
diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
index 7301936..26461d2 100644
--- a/arch/arm/mach-msm/board-dt-8960.c
+++ b/arch/arm/mach-msm/board-dt-8960.c
@@ -18,11 +18,6 @@
#include "common.h"
-static void __init msm_dt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char * const msm8960_dt_match[] __initconst = {
"qcom,msm8960-cdp",
NULL
@@ -33,6 +28,5 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
.map_io = msm_map_msm8960_io,
.init_irq = irqchip_init,
.init_time = msm_dt_timer_init,
- .init_machine = msm_dt_init,
.dt_compat = msm8960_dt_match,
MACHINE_END
diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c
index 085d636..ec7b8bf 100644
--- a/arch/arm/mach-tegra/board-dt-tegra114.c
+++ b/arch/arm/mach-tegra/board-dt-tegra114.c
@@ -23,11 +23,6 @@
#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,
@@ -39,7 +34,6 @@ DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)")
.init_early = tegra114_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,
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c
index bf68567..316bd9f 100644
--- a/arch/arm/mach-tegra/board-dt-tegra30.c
+++ b/arch/arm/mach-tegra/board-dt-tegra30.c
@@ -37,11 +37,6 @@
#include "common.h"
#include "iomap.h"
-static void __init tegra30_dt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static const char *tegra30_dt_board_compat[] = {
"nvidia,tegra30",
NULL
@@ -53,7 +48,6 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
.init_early = tegra30_init_early,
.init_irq = tegra_dt_init_irq,
.init_time = clocksource_of_init,
- .init_machine = tegra30_dt_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset,
.dt_compat = tegra30_dt_board_compat,
diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c
index 31666f6..7bce0f8 100644
--- a/arch/arm/mach-virt/virt.c
+++ b/arch/arm/mach-virt/virt.c
@@ -27,11 +27,6 @@
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
-static void __init virt_init(void)
-{
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
static void __init virt_timer_init(void)
{
WARN_ON(arch_timer_of_register() != 0);
@@ -48,7 +43,6 @@ extern struct smp_operations virt_smp_ops;
DT_MACHINE_START(VIRT, "Dummy Virtual Machine")
.init_irq = irqchip_init,
.init_time = virt_timer_init,
- .init_machine = virt_init,
.smp = smp_ops(virt_smp_ops),
.dt_compat = virt_dt_match,
MACHINE_END
--
1.8.1.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
@ 2013-04-12 15:19 ` Arnd Bergmann
2013-04-12 15:40 ` Stephen Warren
2013-04-12 16:08 ` Jean-Christophe PLAGNIOL-VILLARD
2 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 15:19 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 12 April 2013, Arnd Bergmann wrote:
>
> -static void __init exynos4_dt_machine_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table,
> - exynos4_auxdata_lookup, NULL);
> -}
> -
This part was wrong, sorry. In the kernel I used as a base, we
actually still need exynos4_auxdata_lookup, so this patch actually
changes the behavior. In the for-next branch however, the auxdata
is gone.
Arnd
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
2013-04-12 15:19 ` Arnd Bergmann
@ 2013-04-12 15:40 ` Stephen Warren
2013-04-12 16:03 ` Arnd Bergmann
2013-04-12 16:08 ` Jean-Christophe PLAGNIOL-VILLARD
2 siblings, 1 reply; 13+ messages in thread
From: Stephen Warren @ 2013-04-12 15:40 UTC (permalink / raw)
To: linux-arm-kernel
On 04/12/2013 09:11 AM, Arnd Bergmann wrote:
> The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
> NULL) is now implied by having no init_machine callback in the machine
> descriptor, so we can save a couple of lines in those machines that
> do not need to do anything else.
> arch/arm/mach-tegra/board-dt-tegra114.c | 6 ------
> arch/arm/mach-tegra/board-dt-tegra30.c | 6 ------
Those two files don't exist any more; they were merged with
board-dt-tegra20.c and all squashed into the new tegra.c.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
2013-04-12 15:40 ` Stephen Warren
@ 2013-04-12 16:03 ` Arnd Bergmann
0 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 16:03 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 12 April 2013, Stephen Warren wrote:
> On 04/12/2013 09:11 AM, Arnd Bergmann wrote:
> > The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
> > NULL) is now implied by having no init_machine callback in the machine
> > descriptor, so we can save a couple of lines in those machines that
> > do not need to do anything else.
>
> > arch/arm/mach-tegra/board-dt-tegra114.c | 6 ------
> > arch/arm/mach-tegra/board-dt-tegra30.c | 6 ------
>
> Those two files don't exist any more; they were merged with
> board-dt-tegra20.c and all squashed into the new tegra.c.
Right, I also noticed this when merging with the latest for-next
branch. The merged code refers to auxdata, so I'll drop the above
two without a replacement.
Arnd
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
2013-04-12 15:19 ` Arnd Bergmann
2013-04-12 15:40 ` Stephen Warren
@ 2013-04-12 16:08 ` Jean-Christophe PLAGNIOL-VILLARD
2 siblings, 0 replies; 13+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-04-12 16:08 UTC (permalink / raw)
To: linux-arm-kernel
On 17:11 Fri 12 Apr , Arnd Bergmann wrote:
> The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
> NULL) is now implied by having no init_machine callback in the machine
> descriptor, so we can save a couple of lines in those machines that
> do not need to do anything else.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Cc: Nicolas Pitre <nico@linaro.org>
> Cc: Olof Johansson <olof@lixom.net>
> Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
> Cc: Rob Herring <robherring2@gmail.com>
> ---
> arch/arm/mach-at91/board-dt.c | 6 ------
> arch/arm/mach-at91/board-rm9200-dt.c | 6 ------
on AT91 you have also sama5 file and those file are renaned for 3.10
Best Regards,
J.
> arch/arm/mach-exynos/mach-exynos4-dt.c | 7 -------
> arch/arm/mach-imx/imx25-dt.c | 6 ------
> arch/arm/mach-imx/imx31-dt.c | 6 ------
> arch/arm/mach-imx/imx51-dt.c | 6 ------
> arch/arm/mach-msm/board-dt-8660.c | 11 -----------
> arch/arm/mach-msm/board-dt-8960.c | 6 ------
> arch/arm/mach-tegra/board-dt-tegra114.c | 6 ------
> arch/arm/mach-tegra/board-dt-tegra30.c | 6 ------
> arch/arm/mach-virt/virt.c | 6 ------
> 11 files changed, 72 deletions(-)
>
> diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c
> index 8db3013..9903579 100644
> --- a/arch/arm/mach-at91/board-dt.c
> +++ b/arch/arm/mach-at91/board-dt.c
> @@ -37,11 +37,6 @@ static void __init at91_dt_init_irq(void)
> of_irq_init(irq_of_match);
> }
>
> -static void __init at91_dt_device_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char *at91_dt_board_compat[] __initdata = {
> "atmel,at91sam9",
> NULL
> @@ -54,6 +49,5 @@ DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
> .handle_irq = at91_aic_handle_irq,
> .init_early = at91_dt_initialize,
> .init_irq = at91_dt_init_irq,
> - .init_machine = at91_dt_device_init,
> .dt_compat = at91_dt_board_compat,
> MACHINE_END
> diff --git a/arch/arm/mach-at91/board-rm9200-dt.c b/arch/arm/mach-at91/board-rm9200-dt.c
> index 3fcb662..6b8d260 100644
> --- a/arch/arm/mach-at91/board-rm9200-dt.c
> +++ b/arch/arm/mach-at91/board-rm9200-dt.c
> @@ -36,11 +36,6 @@ static void __init at91rm9200_dt_init_irq(void)
> of_irq_init(irq_of_match);
> }
>
> -static void __init at91rm9200_dt_device_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char *at91rm9200_dt_board_compat[] __initdata = {
> "atmel,at91rm9200",
> NULL
> @@ -52,6 +47,5 @@ DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)")
> .handle_irq = at91_aic_handle_irq,
> .init_early = at91rm9200_dt_initialize,
> .init_irq = at91rm9200_dt_init_irq,
> - .init_machine = at91rm9200_dt_device_init,
> .dt_compat = at91rm9200_dt_board_compat,
> MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
> index 3358088..25038a1 100644
> --- a/arch/arm/mach-exynos/mach-exynos4-dt.c
> +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
> @@ -122,12 +122,6 @@ static void __init exynos4_dt_map_io(void)
> s3c24xx_init_clocks(24000000);
> }
>
> -static void __init exynos4_dt_machine_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table,
> - exynos4_auxdata_lookup, NULL);
> -}
> -
> static char const *exynos4_dt_compat[] __initdata = {
> "samsung,exynos4210",
> "samsung,exynos4212",
> @@ -140,7 +134,6 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
> .smp = smp_ops(exynos_smp_ops),
> .init_irq = exynos4_init_irq,
> .map_io = exynos4_dt_map_io,
> - .init_machine = exynos4_dt_machine_init,
> .init_late = exynos_init_late,
> .init_time = exynos4_timer_init,
> .dt_compat = exynos4_dt_compat,
> diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c
> index 8234839..2ecaa6a 100644
> --- a/arch/arm/mach-imx/imx25-dt.c
> +++ b/arch/arm/mach-imx/imx25-dt.c
> @@ -17,11 +17,6 @@
> #include "common.h"
> #include "mx25.h"
>
> -static void __init imx25_dt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char * const imx25_dt_board_compat[] __initconst = {
> "fsl,imx25",
> NULL
> @@ -38,7 +33,6 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
> .init_irq = mx25_init_irq,
> .handle_irq = imx25_handle_irq,
> .init_time = imx25_timer_init,
> - .init_machine = imx25_dt_init,
> .dt_compat = imx25_dt_board_compat,
> .restart = mxc_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
> index 67de611..5bb05d5 100644
> --- a/arch/arm/mach-imx/imx31-dt.c
> +++ b/arch/arm/mach-imx/imx31-dt.c
> @@ -18,11 +18,6 @@
> #include "common.h"
> #include "mx31.h"
>
> -static void __init imx31_dt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char *imx31_dt_board_compat[] __initdata = {
> "fsl,imx31",
> NULL
> @@ -39,7 +34,6 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
> .init_irq = mx31_init_irq,
> .handle_irq = imx31_handle_irq,
> .init_time = imx31_dt_timer_init,
> - .init_machine = imx31_dt_init,
> .dt_compat = imx31_dt_board_compat,
> .restart = mxc_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c
> index e2926a8..52985a5 100644
> --- a/arch/arm/mach-imx/imx51-dt.c
> +++ b/arch/arm/mach-imx/imx51-dt.c
> @@ -19,11 +19,6 @@
> #include "common.h"
> #include "mx51.h"
>
> -static void __init imx51_dt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char *imx51_dt_board_compat[] __initdata = {
> "fsl,imx51",
> NULL
> @@ -40,7 +35,6 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
> .init_irq = mx51_init_irq,
> .handle_irq = imx51_handle_irq,
> .init_time = imx51_timer_init,
> - .init_machine = imx51_dt_init,
> .init_late = imx51_init_late,
> .dt_compat = imx51_dt_board_compat,
> .restart = mxc_restart,
> diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
> index 7dcfc53..0c21245 100644
> --- a/arch/arm/mach-msm/board-dt-8660.c
> +++ b/arch/arm/mach-msm/board-dt-8660.c
> @@ -25,16 +25,6 @@ static void __init msm8x60_init_late(void)
> smd_debugfs_init();
> }
>
> -static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
> - {}
> -};
> -
> -static void __init msm8x60_dt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table,
> - msm_auxdata_lookup, NULL);
> -}
> -
> static const char *msm8x60_fluid_match[] __initdata = {
> "qcom,msm8660-fluid",
> "qcom,msm8660-surf",
> @@ -45,7 +35,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
> .smp = smp_ops(msm_smp_ops),
> .map_io = msm_map_msm8x60_io,
> .init_irq = irqchip_init,
> - .init_machine = msm8x60_dt_init,
> .init_late = msm8x60_init_late,
> .init_time = msm_dt_timer_init,
> .dt_compat = msm8x60_fluid_match,
> diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
> index 7301936..26461d2 100644
> --- a/arch/arm/mach-msm/board-dt-8960.c
> +++ b/arch/arm/mach-msm/board-dt-8960.c
> @@ -18,11 +18,6 @@
>
> #include "common.h"
>
> -static void __init msm_dt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char * const msm8960_dt_match[] __initconst = {
> "qcom,msm8960-cdp",
> NULL
> @@ -33,6 +28,5 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
> .map_io = msm_map_msm8960_io,
> .init_irq = irqchip_init,
> .init_time = msm_dt_timer_init,
> - .init_machine = msm_dt_init,
> .dt_compat = msm8960_dt_match,
> MACHINE_END
> diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c
> index 085d636..ec7b8bf 100644
> --- a/arch/arm/mach-tegra/board-dt-tegra114.c
> +++ b/arch/arm/mach-tegra/board-dt-tegra114.c
> @@ -23,11 +23,6 @@
> #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,
> @@ -39,7 +34,6 @@ DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)")
> .init_early = tegra114_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,
> diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c
> index bf68567..316bd9f 100644
> --- a/arch/arm/mach-tegra/board-dt-tegra30.c
> +++ b/arch/arm/mach-tegra/board-dt-tegra30.c
> @@ -37,11 +37,6 @@
> #include "common.h"
> #include "iomap.h"
>
> -static void __init tegra30_dt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static const char *tegra30_dt_board_compat[] = {
> "nvidia,tegra30",
> NULL
> @@ -53,7 +48,6 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
> .init_early = tegra30_init_early,
> .init_irq = tegra_dt_init_irq,
> .init_time = clocksource_of_init,
> - .init_machine = tegra30_dt_init,
> .init_late = tegra_init_late,
> .restart = tegra_assert_system_reset,
> .dt_compat = tegra30_dt_board_compat,
> diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c
> index 31666f6..7bce0f8 100644
> --- a/arch/arm/mach-virt/virt.c
> +++ b/arch/arm/mach-virt/virt.c
> @@ -27,11 +27,6 @@
> #include <asm/mach/arch.h>
> #include <asm/mach/time.h>
>
> -static void __init virt_init(void)
> -{
> - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
> static void __init virt_timer_init(void)
> {
> WARN_ON(arch_timer_of_register() != 0);
> @@ -48,7 +43,6 @@ extern struct smp_operations virt_smp_ops;
> DT_MACHINE_START(VIRT, "Dummy Virtual Machine")
> .init_irq = irqchip_init,
> .init_time = virt_timer_init,
> - .init_machine = virt_init,
> .smp = smp_ops(virt_smp_ops),
> .dt_compat = virt_dt_match,
> MACHINE_END
> --
> 1.8.1.2
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] ARM: default machine descriptor for multiplatform
2013-04-12 15:11 [PATCH 1/2] ARM: default machine descriptor for multiplatform Arnd Bergmann
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
@ 2013-04-19 13:28 ` Russell King - ARM Linux
2013-04-19 14:21 ` Arnd Bergmann
1 sibling, 1 reply; 13+ messages in thread
From: Russell King - ARM Linux @ 2013-04-19 13:28 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Apr 12, 2013 at 05:11:07PM +0200, Arnd Bergmann wrote:
> @@ -752,7 +761,7 @@ void __init setup_arch(char **cmdline_p)
>
> setup_processor();
> mdesc = setup_machine_fdt(__atags_pointer);
> - if (!mdesc)
> + if (!mdesc && __machine_arch_type != ~0)
> mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
> machine_desc = mdesc;
> machine_name = mdesc->name;
If mdesc is NULL and __machine_arch_type is ~0, then mdesc remains NULL.
That means machine_desc is NULL (which is probably very bad), and the
initialization of machine_name causes a NULL pointer dereference.
This is clearly wrong. mdesc must never be NULL if you're using FDT
here, so the original code should be fine.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] ARM: default machine descriptor for multiplatform
2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
@ 2013-04-19 14:21 ` Arnd Bergmann
2013-04-19 14:40 ` [PATCH v3] " Arnd Bergmann
0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 14:21 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 19 April 2013, Russell King - ARM Linux wrote:
> On Fri, Apr 12, 2013 at 05:11:07PM +0200, Arnd Bergmann wrote:
> > @@ -752,7 +761,7 @@ void __init setup_arch(char **cmdline_p)
> >
> > setup_processor();
> > mdesc = setup_machine_fdt(__atags_pointer);
> > - if (!mdesc)
> > + if (!mdesc && __machine_arch_type != ~0)
> > mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
> > machine_desc = mdesc;
> > machine_name = mdesc->name;
>
> If mdesc is NULL and __machine_arch_type is ~0, then mdesc remains NULL.
> That means machine_desc is NULL (which is probably very bad), and the
> initialization of machine_name causes a NULL pointer dereference.
>
> This is clearly wrong. mdesc must never be NULL if you're using FDT
> here, so the original code should be fine.
Ah, right. I think was a leftover from an earlier version of the
patch where I only assigned the default platform after this.
There is also a related mistake in setup_machine_fdt, the second
change is not needed there either AFAICT.
Thanks for taking a look!
Arnd
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3] ARM: default machine descriptor for multiplatform
2013-04-19 14:21 ` Arnd Bergmann
@ 2013-04-19 14:40 ` Arnd Bergmann
2013-04-19 21:32 ` Rob Herring
0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 14:40 UTC (permalink / raw)
To: linux-arm-kernel
Since we now have default implementations for init_time and init_irq,
the init_machine callback is the only one that is not yet optional,
but since simple DT based platforms all have the same
of_platform_populate function call in there, we can consolidate them
as well, and then actually boot with a completely empty machine_desc.
Unofortunately we cannot just default to an empty init_machine: We
cannot call of_platform_populate before init_machine because that
does not work in case of auxdata, and we cannot call it after
init_machine either because the machine might need to run code
after adding the devices.
To take the final step, this adds support for booting without defining
any machine_desc whatsoever.
For the case that CONFIG_MULTIPLATFORM is enabled, it adds a
global machine descriptor that never matches any machine but is
used as a fallback if nothing else matches. We assume that without
CONFIG_MULTIPLATFORM, we only want to boot on the systems that the kernel
is built for, so we still retain the build-time warning for missing
machine descriptors and the run-time warning when the platform does not
match in that case.
In the case that we run on a multiplatform kernel and the machine
provides a fully populated device tree, we attempt to keep booting,
hoping that no machine specific callbacks are necessary.
Finally, this also removes the misguided "select ARCH_VEXPRESS" that
was only added to avoid a build error for allnoconfig kernels.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Olof Johansson <olof@lixom.net>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: Rob Herring <robherring2@gmail.com>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1cacda4..e67d49d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1014,7 +1014,6 @@ config ARCH_MULTI_V7
bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
default y
select ARCH_MULTI_V6_V7
- select ARCH_VEXPRESS
select CPU_V7
config ARCH_MULTI_V6_V7
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 70f1bde..9038c9f 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -180,6 +180,13 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
unsigned long dt_root;
const char *model;
+ if (IS_ENABLED(CONFIG_ARCH_MULTIPLATFORM)) {
+ DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
+ MACHINE_END
+
+ mdesc_best = (struct machine_desc *)&__mach_desc_GENERIC_DT;
+ }
+
if (!dt_phys)
return NULL;
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index d343a6c..9e0f43d 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -18,6 +18,7 @@
#include <linux/bootmem.h>
#include <linux/seq_file.h>
#include <linux/screen_info.h>
+#include <linux/of_platform.h>
#include <linux/init.h>
#include <linux/kexec.h>
#include <linux/of_fdt.h>
@@ -660,9 +661,17 @@ struct screen_info screen_info = {
static int __init customize_machine(void)
{
- /* customizes platform devices, or adds new ones */
+ /*
+ * customizes platform devices, or adds new ones
+ * On DT based machines, we fall back to populating the
+ * machine from the device tree, if no callback is provided,
+ * otherwise we would always need an init_machine callback.
+ */
if (machine_desc->init_machine)
machine_desc->init_machine();
+ else
+ of_platform_populate(NULL, of_default_bus_match_table,
+ NULL, NULL);
return 0;
}
arch_initcall(customize_machine);
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v3] ARM: default machine descriptor for multiplatform
2013-04-19 14:40 ` [PATCH v3] " Arnd Bergmann
@ 2013-04-19 21:32 ` Rob Herring
2013-04-19 21:54 ` Arnd Bergmann
0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2013-04-19 21:32 UTC (permalink / raw)
To: linux-arm-kernel
On 04/19/2013 09:40 AM, Arnd Bergmann wrote:
> Since we now have default implementations for init_time and init_irq,
> the init_machine callback is the only one that is not yet optional,
> but since simple DT based platforms all have the same
> of_platform_populate function call in there, we can consolidate them
> as well, and then actually boot with a completely empty machine_desc.
> Unofortunately we cannot just default to an empty init_machine: We
> cannot call of_platform_populate before init_machine because that
> does not work in case of auxdata, and we cannot call it after
> init_machine either because the machine might need to run code
> after adding the devices.
>
> To take the final step, this adds support for booting without defining
> any machine_desc whatsoever.
>
> For the case that CONFIG_MULTIPLATFORM is enabled, it adds a
> global machine descriptor that never matches any machine but is
> used as a fallback if nothing else matches. We assume that without
> CONFIG_MULTIPLATFORM, we only want to boot on the systems that the kernel
> is built for, so we still retain the build-time warning for missing
> machine descriptors and the run-time warning when the platform does not
> match in that case.
>
> In the case that we run on a multiplatform kernel and the machine
> provides a fully populated device tree, we attempt to keep booting,
> hoping that no machine specific callbacks are necessary.
>
> Finally, this also removes the misguided "select ARCH_VEXPRESS" that
> was only added to avoid a build error for allnoconfig kernels.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Acked-by: Nicolas Pitre <nico@linaro.org>
> Acked-by: Olof Johansson <olof@lixom.net>
> Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
[...]
> if (machine_desc->init_machine)
> machine_desc->init_machine();
> + else
> + of_platform_populate(NULL, of_default_bus_match_table,
This will fail to build for !OF. of_platform.h needs this:
#define of_default_bus_match_table NULL
You may need some struct forward declarations, but this commit in my
tree for 3.10 should fix those:
commit d450f445f9a654080a6be4094376c2192d9a1f36
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date: Tue Feb 19 02:58:25 2013 +0300
<linux/of_platform.h>: fix compilation warnings with DT disabled
Rob
> + NULL, NULL);
> return 0;
> }
> arch_initcall(customize_machine);
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3] ARM: default machine descriptor for multiplatform
2013-04-19 21:32 ` Rob Herring
@ 2013-04-19 21:54 ` Arnd Bergmann
2013-04-19 22:22 ` Rob Herring
0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 21:54 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 19 April 2013, Rob Herring wrote:
> This will fail to build for !OF. of_platform.h needs this:
>
> #define of_default_bus_match_table NULL
>
> You may need some struct forward declarations, but this commit in my
> tree for 3.10 should fix those:
>
> commit d450f445f9a654080a6be4094376c2192d9a1f36
> Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> Date: Tue Feb 19 02:58:25 2013 +0300
>
> <linux/of_platform.h>: fix compilation warnings with DT disabled
>
Ok. I've actually stumbled over missing declarations from of_platform.h
and related files a number of times. Could we please not hide any
declarations inside of #ifdef when there is no #else alternative?
If we just show the of_default_bus_match_table declaration in the
header file, there is no need to provide the silly NULL macro,
since the of_platform_populate alternative will just ignore it.
I'll just put the code in an #ifdef for now, but I'd really prefer
to clean up this and many other locations that currently have
to do #ifdef CONFIG_OF when they really don't need to.
Arnd
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3] ARM: default machine descriptor for multiplatform
2013-04-19 21:54 ` Arnd Bergmann
@ 2013-04-19 22:22 ` Rob Herring
2013-04-19 23:11 ` Arnd Bergmann
0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2013-04-19 22:22 UTC (permalink / raw)
To: linux-arm-kernel
On 04/19/2013 04:54 PM, Arnd Bergmann wrote:
> On Friday 19 April 2013, Rob Herring wrote:
>> This will fail to build for !OF. of_platform.h needs this:
>>
>> #define of_default_bus_match_table NULL
>>
>> You may need some struct forward declarations, but this commit in my
>> tree for 3.10 should fix those:
>>
>> commit d450f445f9a654080a6be4094376c2192d9a1f36
>> Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
>> Date: Tue Feb 19 02:58:25 2013 +0300
>>
>> <linux/of_platform.h>: fix compilation warnings with DT disabled
>>
>
> Ok. I've actually stumbled over missing declarations from of_platform.h
> and related files a number of times. Could we please not hide any
> declarations inside of #ifdef when there is no #else alternative?
>
> If we just show the of_default_bus_match_table declaration in the
> header file, there is no need to provide the silly NULL macro,
> since the of_platform_populate alternative will just ignore it.
>
> I'll just put the code in an #ifdef for now, but I'd really prefer
> to clean up this and many other locations that currently have
> to do #ifdef CONFIG_OF when they really don't need to.
I think we can kill off CONFIG_OF_DEVICE completely. It is always
enabled when OF is (even for the oddball Sparc).
The only remaining user of of_platform_driver is ibmebus and 2 drivers.
It would be good to convert those to regular platform drivers.
Rob
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3] ARM: default machine descriptor for multiplatform
2013-04-19 22:22 ` Rob Herring
@ 2013-04-19 23:11 ` Arnd Bergmann
0 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 23:11 UTC (permalink / raw)
To: linux-arm-kernel
On Saturday 20 April 2013, Rob Herring wrote:
> The only remaining user of of_platform_driver is ibmebus and 2 drivers.
> It would be good to convert those to regular platform drivers.
>
Right, I would not expect any trouble in converting ibmebus to
use a regular platform_driver. It already uses platform_device
anyway. We cannot remove ibmebus itself because it has special
DMA requirements, but we could move it to drivers/bus if the
powerpc maintainers like that.
Arnd.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2013-04-19 23:11 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-12 15:11 [PATCH 1/2] ARM: default machine descriptor for multiplatform Arnd Bergmann
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
2013-04-12 15:19 ` Arnd Bergmann
2013-04-12 15:40 ` Stephen Warren
2013-04-12 16:03 ` Arnd Bergmann
2013-04-12 16:08 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
2013-04-19 14:21 ` Arnd Bergmann
2013-04-19 14:40 ` [PATCH v3] " Arnd Bergmann
2013-04-19 21:32 ` Rob Herring
2013-04-19 21:54 ` Arnd Bergmann
2013-04-19 22:22 ` Rob Herring
2013-04-19 23:11 ` Arnd Bergmann
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).