All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Tony Lindgren <tony@atomide.com>
Cc: Aaro Koskinen <aaro.koskinen@iki.fi>,
	pali.rohar@gmail.com, kernel list <linux-kernel@vger.kernel.org>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	linux-omap@vger.kernel.org
Subject: Re: N900 device tree conversion: how to do first step
Date: Thu, 13 Jun 2013 16:28:09 +0200	[thread overview]
Message-ID: <20130613142809.GA3775@amd.pavel.ucw.cz> (raw)
In-Reply-To: <20130613141001.GF8164@atomide.com>

On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> * Pavel Machek <pavel@ucw.cz> [130613 06:32]:
> > Hi!
> > 
> > > > I'd like to convert Nokia N900 to device tree.
> > > > 
> > > > Unfortunately, serial port is not easily available (very special cable
> > > > would be needed, does someone know where to get one?) and I don't have
> > > > BDI (and very special cable would be needed, too).
> > > > 
> > > > So I tried doing very small first step, hoping that I get booting
> > > > system... obviously I did not.
> > > 
> > > The following works for me, it's enough to boot and get the USB networking
> > > working. After that I can connect to the device with ssh. I don't use
> > > serial either, I just have initramfs with busybox+dropbear with hardcoded
> > > interface setup.
> > 
> > Nice.... thanks a lot.
> > 
> > Did you get video to work with the device tree? That's what I'd like
> > to accomplish now.
> 
> The DSS code is still using pdata, see mach-omap2/dss-common.[ch].
>  
> > If I init spi manually (and some more hacks), it works in the
> > qemu. But I have not tested on real hw for a while.
> 
> You should be able to initialize spi by adding the .dts entry,
> or is there something missing in drivers/spi/spi-omap2-mcspi.c?

Not sure, I guess I'll find out soon. Do you have example dts that
uses drivers/spi/spi-omap2-mcspi.c? Grepping spi in dts/ was not too
successful.

This is what I'm doing currently...

Thanks,
									Pavel

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 9c62558..7b1a075 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -119,6 +119,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
 	omap3-beagle-xm.dtb \
 	omap3-evm.dtb \
 	omap3-tobi.dtb \
+	omap3-n900.dtb \
 	omap4-panda.dtb \
 	omap4-panda-a4.dtb \
 	omap4-panda-es.dtb \
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
new file mode 100644
index 0000000..10a880f
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz>
+ * Copyright 2013 Aaro Koskinen <aaro.koskinen@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 (or later) as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+/include/ "omap34xx.dtsi"
+
+/ {
+	model = "Nokia N900";
+	compatible = "nokia,omap3-n900", "ti,omap3";
+
+	cpus {
+		cpu@0 {
+//			cpu0-supply = <&vcc>;
+		};
+	};
+
+	memory {
+		device_type = "memory";
+		reg = <0x80000000 0x10000000>; /* 256 MB */
+	};
+
+};
+
+&i2c1 {
+	clock-frequency = <2200000>;
+
+	twl: twl@48 {
+		reg = <0x48>;
+		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+		interrupt-parent = <&intc>;
+	};
+};
+
+/include/ "twl4030.dtsi"
+
+&twl_gpio {
+	ti,pullups	= <0x0>;
+	ti,pulldowns	= <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
+};
+
+&i2c2 {
+	clock-frequency = <400000>;
+};
+
+&i2c3 {
+	clock-frequency = <100000>;
+};
+
+&mmc1 {
+	status = "disabled";
+};
+
+&mmc2 {
+	status = "disabled";
+};
+
+&mmc3 {
+	status = "disabled";
+};
+
+/*
+&usb_otg_hs {
+	interface-type = <0>;
+	usb-phy = <&usb2_phy>;
+	mode = <2>;
+	power = <50>;
+};
+*/
diff --git a/arch/arm/boot/dts/omap34xx.dtsi b/arch/arm/boot/dts/omap34xx.dtsi
new file mode 100644
index 0000000..75ed4ae
--- /dev/null
+++ b/arch/arm/boot/dts/omap34xx.dtsi
@@ -0,0 +1,28 @@
+/*
+ * Device Tree Source for OMAP34xx/OMAP35xx SoC
+ *
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/include/ "omap3.dtsi"
+
+/ {
+	cpus {
+		cpu@0 {
+			/* OMAP343x/OMAP35xx variants OPP1-5 */
+			operating-points = <
+				/* kHz    uV */
+				125000   975000
+				250000  1075000
+				500000  1200000
+				550000  1270000
+				600000  1350000
+			>;
+			clock-latency = <300000>; /* From legacy driver */
+		};
+	};
+};
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index e54a480..996ffc3 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -22,6 +22,12 @@
 #include "common-board-devices.h"
 #include "dss-common.h"
 
+#include "mux.h"
+#include <linux/spi/spi.h>
+#include <linux/platform_data/spi-omap2-mcspi.h>
+#include <linux/platform_data/mtd-onenand-omap2.h>
+#include <linux/regulator/machine.h>
+
 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
 #define intc_of_init	NULL
 #endif
@@ -35,20 +41,105 @@ static struct of_device_id omap_dt_match_table[] __initdata = {
 	{ }
 };
 
-static void __init omap_generic_init(void)
+#if 1
+
+/* list all spi devices here */
+enum {
+	RX51_SPI_MIPID,		/* LCD panel */
+	RX51_SPI_WL1251,
+	RX51_SPI_TSC2005,	/* Touch Controller */
+};
+
+static struct omap2_mcspi_device_config wl1251_mcspi_config = {
+	.turbo_mode	= 0,
+};
+
+static struct omap2_mcspi_device_config mipid_mcspi_config = {
+	.turbo_mode	= 0,
+};
+
+static struct omap2_mcspi_device_config tsc2005_mcspi_config = {
+	.turbo_mode	= 0,
+};
+
+#if 0
+static struct wl12xx_platform_data wl1251_pdata;
+static struct tsc2005_platform_data tsc2005_pdata;
+#endif
+
+static struct spi_board_info rx51_peripherals_spi_board_info[] __initdata = {
+#if 0
+	/* Wireless */
+	[RX51_SPI_WL1251] = {
+		.modalias		= "wl1251",
+		.bus_num		= 4,
+		.chip_select		= 0,
+		.max_speed_hz   	= 48000000,
+		.mode                   = SPI_MODE_3,
+		.controller_data	= &wl1251_mcspi_config,
+		.platform_data		= &wl1251_pdata,
+	},
+#endif
+	[RX51_SPI_MIPID] = {
+		.modalias		= "acx565akm",
+		.bus_num		= 1,
+		.chip_select		= 2,
+		.max_speed_hz		= 6000000,
+		.controller_data	= &mipid_mcspi_config,
+	},
+#if 0
+	/* Touchscreen */
+	[RX51_SPI_TSC2005] = {
+		.modalias		= "tsc2005",
+		.bus_num		= 1,
+		.chip_select		= 0,
+		.max_speed_hz		= 6000000,
+		.controller_data	= &tsc2005_mcspi_config,
+		.platform_data		= &tsc2005_pdata,
+	},
+#endif
+};
+
+static struct omap_board_mux board_mux[] __initdata = {
+	{ .reg_offset = OMAP_MUX_TERMINATOR },
+};
+#endif
+
+extern int rx51_video_init(void);
+
+void __init omap_generic_init(void)
 {
 	omap_sdrc_init(NULL, NULL);
-
 	of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
 
 	/*
 	 * HACK: call display setup code for selected boards to enable omapdss.
 	 * This will be removed when omapdss supports DT.
 	 */
-	if (of_machine_is_compatible("ti,omap4-panda"))
+	if (of_machine_is_compatible("ti,omap4-panda")) {
 		omap4_panda_display_init_of();
-	else if (of_machine_is_compatible("ti,omap4-sdp"))
+		return;
+	}
+	if (of_machine_is_compatible("ti,omap4-sdp")) {
 		omap_4430sdp_display_init_of();
+		return;
+	}
+#ifdef CONFIG_MACH_NOKIA_RX51
+	if (of_machine_is_compatible("nokia,omap3-n900")) {
+#if 1
+		regulator_use_dummy_regulator();
+
+		omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+
+		spi_register_board_info(rx51_peripherals_spi_board_info,
+				ARRAY_SIZE(rx51_peripherals_spi_board_info));
+#else
+		rx51_video_init();
+#endif
+		return;
+	}
+	panic("really want to init video\n");
+#endif
 }
 
 #ifdef CONFIG_SOC_OMAP2420
diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c
index eb66726..022bff0 100644
--- a/arch/arm/mach-omap2/board-rx51-video.c
+++ b/arch/arm/mach-omap2/board-rx51-video.c
@@ -68,7 +68,7 @@ static struct omap_dss_board_info rx51_dss_board_info = {
 
 static int __init rx51_video_init(void)
 {
-	if (!machine_is_nokia_rx51())
+	if (!of_machine_is_compatible("nokia,omap3-n900"))
 		return 0;
 
 	if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT)) {
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 74f83a5..ee001e2 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -36,6 +36,8 @@
 
 #define RX51_GPIO_SLEEP_IND 162
 
+/* This lights up left part of keyboard */
+
 static struct gpio_led gpio_leds[] = {
 	{
 		.name	= "sleep_ind",
@@ -91,49 +93,69 @@ static struct omap_musb_board_data musb_board_data = {
 	.power			= 0,
 };
 
-static void __init rx51_init(void)
+void rx51_init_base(void)
 {
 	struct omap_sdrc_params *sdrc_params;
-
 	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-	omap_serial_init();
 
+#if 0
 	sdrc_params = nokia_get_sdram_timings();
 	omap_sdrc_init(sdrc_params, sdrc_params);
+#endif
+}
+
+void __init rx51_init(void)
+{
+	printk("rx_init: n900 starting\n");
+
+	rx51_init_base();
+#if 0
+	omap_serial_init();
 
 	usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
 	usb_musb_init(&musb_board_data);
+#endif
 	rx51_peripherals_init();
-	rx51_camera_init();
+//	rx51_camera_init();
 
+#if 0
 #ifdef CONFIG_ARM_ERRATA_430973
 	printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
 	/* set IBE to 1 */
 	rx51_secure_update_aux_cr(1 << 6, 0);
 #endif
+#endif
 
+	/* FIXME: keep those? */
 	/* Ensure SDRC pins are mux'd for self-refresh */
-	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
-	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
+//	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
+//	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
 
-	platform_device_register(&leds_gpio);
+//	platform_device_register(&leds_gpio);
 }
 
-static void __init rx51_reserve(void)
-{
-	omap_reserve();
-}
+static const char *omap3_boards_compat[] __initdata = {
+	"nokia,omap3-n900",
+        NULL,
+};
+
 
-MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
-	/* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */
-	.atag_offset	= 0x100,
-	.reserve	= rx51_reserve,
+extern void __init omap_generic_init(void);
+
+DT_MACHINE_START(NOKIA_RX51_DT, "Nokia N900 (Flattened Device Tree)")
+	.reserve	= omap_reserve,
 	.map_io		= omap3_map_io,
-	.init_early	= omap3430_init_early,
-	.init_irq	= omap3_init_irq,
-	.handle_irq	= omap3_intc_handle_irq,
-	.init_machine	= rx51_init,
-	.init_late	= omap3430_init_late,
-	.init_time	= omap3_sync32k_timer_init,
-	.restart	= omap3xxx_restart,
+	.init_early     = omap3430_init_early,
+	.init_irq       = omap_intc_of_init, 
+	.handle_irq     = omap3_intc_handle_irq,
+	.init_machine   = 
+#if 0
+			  rx51_init, 
+#else
+			  omap_generic_init,
+#endif
+	.init_late      = omap3_init_late,
+	.init_time      = omap3_sync32k_timer_init,
+	.dt_compat      = omap3_boards_compat,
+	.restart        = omap3xxx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 0b6260a1..e300c18 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -764,7 +764,7 @@ static inline void omap_init_ocp2scp(void) { }
 static int __init omap2_init_devices(void)
 {
 	/* Enable dummy states for those platforms without pinctrl support */
-	if (!of_have_populated_dt())
+	if (1) /* FIXME */
 		pinctrl_provide_dummies();
 
 	/*
diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index e4842c3..026de91 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -396,8 +396,10 @@ static int rx51_soc_probe(struct platform_device *pdev)
 	struct snd_soc_card *card = &rx51_sound_card;
 	int err;
 
-	if (!machine_is_nokia_rx51())
+	if (!of_machine_is_compatible("nokia,omap3-n900")) {
+		printk("FIXME: rx51_soc_probe on non-nokia\n");
 		return -ENODEV;
+	}
 
 	err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
 			       GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel");


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

WARNING: multiple messages have this Message-ID (diff)
From: pavel@ucw.cz (Pavel Machek)
To: linux-arm-kernel@lists.infradead.org
Subject: N900 device tree conversion: how to do first step
Date: Thu, 13 Jun 2013 16:28:09 +0200	[thread overview]
Message-ID: <20130613142809.GA3775@amd.pavel.ucw.cz> (raw)
In-Reply-To: <20130613141001.GF8164@atomide.com>

On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> * Pavel Machek <pavel@ucw.cz> [130613 06:32]:
> > Hi!
> > 
> > > > I'd like to convert Nokia N900 to device tree.
> > > > 
> > > > Unfortunately, serial port is not easily available (very special cable
> > > > would be needed, does someone know where to get one?) and I don't have
> > > > BDI (and very special cable would be needed, too).
> > > > 
> > > > So I tried doing very small first step, hoping that I get booting
> > > > system... obviously I did not.
> > > 
> > > The following works for me, it's enough to boot and get the USB networking
> > > working. After that I can connect to the device with ssh. I don't use
> > > serial either, I just have initramfs with busybox+dropbear with hardcoded
> > > interface setup.
> > 
> > Nice.... thanks a lot.
> > 
> > Did you get video to work with the device tree? That's what I'd like
> > to accomplish now.
> 
> The DSS code is still using pdata, see mach-omap2/dss-common.[ch].
>  
> > If I init spi manually (and some more hacks), it works in the
> > qemu. But I have not tested on real hw for a while.
> 
> You should be able to initialize spi by adding the .dts entry,
> or is there something missing in drivers/spi/spi-omap2-mcspi.c?

Not sure, I guess I'll find out soon. Do you have example dts that
uses drivers/spi/spi-omap2-mcspi.c? Grepping spi in dts/ was not too
successful.

This is what I'm doing currently...

Thanks,
									Pavel

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 9c62558..7b1a075 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -119,6 +119,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
 	omap3-beagle-xm.dtb \
 	omap3-evm.dtb \
 	omap3-tobi.dtb \
+	omap3-n900.dtb \
 	omap4-panda.dtb \
 	omap4-panda-a4.dtb \
 	omap4-panda-es.dtb \
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
new file mode 100644
index 0000000..10a880f
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz>
+ * Copyright 2013 Aaro Koskinen <aaro.koskinen@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 (or later) as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+/include/ "omap34xx.dtsi"
+
+/ {
+	model = "Nokia N900";
+	compatible = "nokia,omap3-n900", "ti,omap3";
+
+	cpus {
+		cpu at 0 {
+//			cpu0-supply = <&vcc>;
+		};
+	};
+
+	memory {
+		device_type = "memory";
+		reg = <0x80000000 0x10000000>; /* 256 MB */
+	};
+
+};
+
+&i2c1 {
+	clock-frequency = <2200000>;
+
+	twl: twl at 48 {
+		reg = <0x48>;
+		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+		interrupt-parent = <&intc>;
+	};
+};
+
+/include/ "twl4030.dtsi"
+
+&twl_gpio {
+	ti,pullups	= <0x0>;
+	ti,pulldowns	= <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
+};
+
+&i2c2 {
+	clock-frequency = <400000>;
+};
+
+&i2c3 {
+	clock-frequency = <100000>;
+};
+
+&mmc1 {
+	status = "disabled";
+};
+
+&mmc2 {
+	status = "disabled";
+};
+
+&mmc3 {
+	status = "disabled";
+};
+
+/*
+&usb_otg_hs {
+	interface-type = <0>;
+	usb-phy = <&usb2_phy>;
+	mode = <2>;
+	power = <50>;
+};
+*/
diff --git a/arch/arm/boot/dts/omap34xx.dtsi b/arch/arm/boot/dts/omap34xx.dtsi
new file mode 100644
index 0000000..75ed4ae
--- /dev/null
+++ b/arch/arm/boot/dts/omap34xx.dtsi
@@ -0,0 +1,28 @@
+/*
+ * Device Tree Source for OMAP34xx/OMAP35xx SoC
+ *
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/include/ "omap3.dtsi"
+
+/ {
+	cpus {
+		cpu at 0 {
+			/* OMAP343x/OMAP35xx variants OPP1-5 */
+			operating-points = <
+				/* kHz    uV */
+				125000   975000
+				250000  1075000
+				500000  1200000
+				550000  1270000
+				600000  1350000
+			>;
+			clock-latency = <300000>; /* From legacy driver */
+		};
+	};
+};
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index e54a480..996ffc3 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -22,6 +22,12 @@
 #include "common-board-devices.h"
 #include "dss-common.h"
 
+#include "mux.h"
+#include <linux/spi/spi.h>
+#include <linux/platform_data/spi-omap2-mcspi.h>
+#include <linux/platform_data/mtd-onenand-omap2.h>
+#include <linux/regulator/machine.h>
+
 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
 #define intc_of_init	NULL
 #endif
@@ -35,20 +41,105 @@ static struct of_device_id omap_dt_match_table[] __initdata = {
 	{ }
 };
 
-static void __init omap_generic_init(void)
+#if 1
+
+/* list all spi devices here */
+enum {
+	RX51_SPI_MIPID,		/* LCD panel */
+	RX51_SPI_WL1251,
+	RX51_SPI_TSC2005,	/* Touch Controller */
+};
+
+static struct omap2_mcspi_device_config wl1251_mcspi_config = {
+	.turbo_mode	= 0,
+};
+
+static struct omap2_mcspi_device_config mipid_mcspi_config = {
+	.turbo_mode	= 0,
+};
+
+static struct omap2_mcspi_device_config tsc2005_mcspi_config = {
+	.turbo_mode	= 0,
+};
+
+#if 0
+static struct wl12xx_platform_data wl1251_pdata;
+static struct tsc2005_platform_data tsc2005_pdata;
+#endif
+
+static struct spi_board_info rx51_peripherals_spi_board_info[] __initdata = {
+#if 0
+	/* Wireless */
+	[RX51_SPI_WL1251] = {
+		.modalias		= "wl1251",
+		.bus_num		= 4,
+		.chip_select		= 0,
+		.max_speed_hz   	= 48000000,
+		.mode                   = SPI_MODE_3,
+		.controller_data	= &wl1251_mcspi_config,
+		.platform_data		= &wl1251_pdata,
+	},
+#endif
+	[RX51_SPI_MIPID] = {
+		.modalias		= "acx565akm",
+		.bus_num		= 1,
+		.chip_select		= 2,
+		.max_speed_hz		= 6000000,
+		.controller_data	= &mipid_mcspi_config,
+	},
+#if 0
+	/* Touchscreen */
+	[RX51_SPI_TSC2005] = {
+		.modalias		= "tsc2005",
+		.bus_num		= 1,
+		.chip_select		= 0,
+		.max_speed_hz		= 6000000,
+		.controller_data	= &tsc2005_mcspi_config,
+		.platform_data		= &tsc2005_pdata,
+	},
+#endif
+};
+
+static struct omap_board_mux board_mux[] __initdata = {
+	{ .reg_offset = OMAP_MUX_TERMINATOR },
+};
+#endif
+
+extern int rx51_video_init(void);
+
+void __init omap_generic_init(void)
 {
 	omap_sdrc_init(NULL, NULL);
-
 	of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
 
 	/*
 	 * HACK: call display setup code for selected boards to enable omapdss.
 	 * This will be removed when omapdss supports DT.
 	 */
-	if (of_machine_is_compatible("ti,omap4-panda"))
+	if (of_machine_is_compatible("ti,omap4-panda")) {
 		omap4_panda_display_init_of();
-	else if (of_machine_is_compatible("ti,omap4-sdp"))
+		return;
+	}
+	if (of_machine_is_compatible("ti,omap4-sdp")) {
 		omap_4430sdp_display_init_of();
+		return;
+	}
+#ifdef CONFIG_MACH_NOKIA_RX51
+	if (of_machine_is_compatible("nokia,omap3-n900")) {
+#if 1
+		regulator_use_dummy_regulator();
+
+		omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+
+		spi_register_board_info(rx51_peripherals_spi_board_info,
+				ARRAY_SIZE(rx51_peripherals_spi_board_info));
+#else
+		rx51_video_init();
+#endif
+		return;
+	}
+	panic("really want to init video\n");
+#endif
 }
 
 #ifdef CONFIG_SOC_OMAP2420
diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c
index eb66726..022bff0 100644
--- a/arch/arm/mach-omap2/board-rx51-video.c
+++ b/arch/arm/mach-omap2/board-rx51-video.c
@@ -68,7 +68,7 @@ static struct omap_dss_board_info rx51_dss_board_info = {
 
 static int __init rx51_video_init(void)
 {
-	if (!machine_is_nokia_rx51())
+	if (!of_machine_is_compatible("nokia,omap3-n900"))
 		return 0;
 
 	if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT)) {
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 74f83a5..ee001e2 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -36,6 +36,8 @@
 
 #define RX51_GPIO_SLEEP_IND 162
 
+/* This lights up left part of keyboard */
+
 static struct gpio_led gpio_leds[] = {
 	{
 		.name	= "sleep_ind",
@@ -91,49 +93,69 @@ static struct omap_musb_board_data musb_board_data = {
 	.power			= 0,
 };
 
-static void __init rx51_init(void)
+void rx51_init_base(void)
 {
 	struct omap_sdrc_params *sdrc_params;
-
 	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-	omap_serial_init();
 
+#if 0
 	sdrc_params = nokia_get_sdram_timings();
 	omap_sdrc_init(sdrc_params, sdrc_params);
+#endif
+}
+
+void __init rx51_init(void)
+{
+	printk("rx_init: n900 starting\n");
+
+	rx51_init_base();
+#if 0
+	omap_serial_init();
 
 	usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
 	usb_musb_init(&musb_board_data);
+#endif
 	rx51_peripherals_init();
-	rx51_camera_init();
+//	rx51_camera_init();
 
+#if 0
 #ifdef CONFIG_ARM_ERRATA_430973
 	printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
 	/* set IBE to 1 */
 	rx51_secure_update_aux_cr(1 << 6, 0);
 #endif
+#endif
 
+	/* FIXME: keep those? */
 	/* Ensure SDRC pins are mux'd for self-refresh */
-	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
-	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
+//	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
+//	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
 
-	platform_device_register(&leds_gpio);
+//	platform_device_register(&leds_gpio);
 }
 
-static void __init rx51_reserve(void)
-{
-	omap_reserve();
-}
+static const char *omap3_boards_compat[] __initdata = {
+	"nokia,omap3-n900",
+        NULL,
+};
+
 
-MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
-	/* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */
-	.atag_offset	= 0x100,
-	.reserve	= rx51_reserve,
+extern void __init omap_generic_init(void);
+
+DT_MACHINE_START(NOKIA_RX51_DT, "Nokia N900 (Flattened Device Tree)")
+	.reserve	= omap_reserve,
 	.map_io		= omap3_map_io,
-	.init_early	= omap3430_init_early,
-	.init_irq	= omap3_init_irq,
-	.handle_irq	= omap3_intc_handle_irq,
-	.init_machine	= rx51_init,
-	.init_late	= omap3430_init_late,
-	.init_time	= omap3_sync32k_timer_init,
-	.restart	= omap3xxx_restart,
+	.init_early     = omap3430_init_early,
+	.init_irq       = omap_intc_of_init, 
+	.handle_irq     = omap3_intc_handle_irq,
+	.init_machine   = 
+#if 0
+			  rx51_init, 
+#else
+			  omap_generic_init,
+#endif
+	.init_late      = omap3_init_late,
+	.init_time      = omap3_sync32k_timer_init,
+	.dt_compat      = omap3_boards_compat,
+	.restart        = omap3xxx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 0b6260a1..e300c18 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -764,7 +764,7 @@ static inline void omap_init_ocp2scp(void) { }
 static int __init omap2_init_devices(void)
 {
 	/* Enable dummy states for those platforms without pinctrl support */
-	if (!of_have_populated_dt())
+	if (1) /* FIXME */
 		pinctrl_provide_dummies();
 
 	/*
diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index e4842c3..026de91 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -396,8 +396,10 @@ static int rx51_soc_probe(struct platform_device *pdev)
 	struct snd_soc_card *card = &rx51_sound_card;
 	int err;
 
-	if (!machine_is_nokia_rx51())
+	if (!of_machine_is_compatible("nokia,omap3-n900")) {
+		printk("FIXME: rx51_soc_probe on non-nokia\n");
 		return -ENODEV;
+	}
 
 	err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
 			       GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel");


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

  reply	other threads:[~2013-06-13 14:28 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-09  1:59 N900 device tree conversion: how to do first step Pavel Machek
2013-06-09  1:59 ` Pavel Machek
2013-06-09  9:24 ` Pali Rohár
2013-06-09  9:24   ` Pali Rohár
2013-06-09 16:47   ` Pavel Machek
2013-06-09 16:47     ` Pavel Machek
2013-06-09 17:03     ` Pali Rohár
2013-06-09 17:03       ` Pali Rohár
2013-06-09 17:03       ` Pali Rohár
2013-06-09 17:30 ` Pavel Machek
2013-06-09 17:30   ` Pavel Machek
2013-06-09 20:11 ` Aaro Koskinen
2013-06-09 20:11   ` Aaro Koskinen
2013-06-13 13:26   ` Pavel Machek
2013-06-13 13:26     ` Pavel Machek
2013-06-13 14:10     ` Tony Lindgren
2013-06-13 14:10       ` Tony Lindgren
2013-06-13 14:28       ` Pavel Machek [this message]
2013-06-13 14:28         ` Pavel Machek
2013-06-13 14:57         ` Tony Lindgren
2013-06-13 14:57           ` Tony Lindgren
2013-06-13 15:52           ` Pavel Machek
2013-06-13 15:52             ` Pavel Machek
2013-06-13 16:14             ` Tony Lindgren
2013-06-13 16:14               ` Tony Lindgren
2013-06-13 23:08               ` Pavel Machek
2013-06-13 23:08                 ` Pavel Machek
2013-06-14  5:56                 ` Tony Lindgren
2013-06-14  5:56                   ` Tony Lindgren
2013-06-14 21:28                   ` Pavel Machek
2013-06-14 21:28                     ` Pavel Machek
2013-06-17 11:10                     ` Tony Lindgren
2013-06-17 11:10                       ` Tony Lindgren
2013-06-27 12:12                       ` N900 device tree conversion: next steps Pavel Machek
2013-07-01 14:03                       ` [PATCH] N900: fix operation on emulator Pavel Machek
2013-07-01 14:03                         ` Pavel Machek
2013-07-01 18:22                         ` Sergei Shtylyov
2013-07-01 18:22                           ` Sergei Shtylyov
2013-07-01 18:22                           ` Sergei Shtylyov
2013-07-01 19:51                           ` Pavel Machek
2013-07-01 19:51                             ` Pavel Machek
2013-07-01 20:00                             ` Sergei Shtylyov
2013-07-01 20:00                               ` Sergei Shtylyov
2013-07-01 20:53                           ` Pavel Machek
2013-07-01 20:53                             ` Pavel Machek
2013-07-01 21:15                       ` [PATCH] N900: enable N900-specific drivers even if device tree is enabled Pavel Machek
2013-07-01 21:15                         ` Pavel Machek
2013-07-04 11:47                         ` Tony Lindgren
2013-07-04 11:47                           ` Tony Lindgren
2013-07-01 21:17                       ` [PATCH] N900: add device tree Pavel Machek
2013-07-01 21:17                         ` Pavel Machek
2013-07-04 17:19                         ` Aaro Koskinen
2013-07-04 17:19                           ` Aaro Koskinen
2013-07-04 20:21                           ` Pavel Machek
2013-07-04 20:21                             ` Pavel Machek
2013-07-04 20:32                             ` Aaro Koskinen
2013-07-04 20:32                               ` Aaro Koskinen
2013-07-13 12:17                               ` [PATCH v2] " Pavel Machek
2013-07-13 12:17                                 ` Pavel Machek
2013-07-14 22:28                                 ` Aaro Koskinen
2013-07-14 22:28                                   ` Aaro Koskinen
2013-07-28 13:44                                   ` Pavel Machek
2013-07-28 13:44                                     ` Pavel Machek
2013-08-01 23:43                                     ` Pavel Machek
2013-08-01 23:43                                       ` Pavel Machek
2013-08-10 11:09                                       ` Pavel Machek
2013-08-10 11:09                                         ` Pavel Machek
2013-08-10 11:09                                         ` Pavel Machek
2013-08-10 11:27                                         ` [PATCH] ARM: dts: omap3 / n900 support, Benoit please take me (was Re: [PATCH v2] N900: add device tree) Pavel Machek
2013-08-10 11:27                                           ` Pavel Machek
2013-08-10 11:46                                         ` [PATCH v2] N900: add device tree Belisko Marek
2013-08-10 11:46                                           ` Belisko Marek
2013-08-10 20:29                                           ` Jiri Kosina
2013-08-10 20:29                                             ` Jiri Kosina
2013-08-11  0:55                                             ` OMAP device tree maintainance (was Re: [PATCH v2] N900: add device tree) Pavel Machek
2013-08-11  0:55                                               ` Pavel Machek
2013-08-11 11:50                                             ` [PATCH v2] N900: add device tree Javier Martinez Canillas
2013-08-11 11:50                                               ` Javier Martinez Canillas
2013-08-11 13:47                                               ` Pavel Machek
2013-08-11 13:47                                                 ` Pavel Machek
2013-08-11 13:47                                                 ` Pavel Machek
2013-08-12  7:37                                                 ` Tony Lindgren
2013-08-12  7:37                                                   ` Tony Lindgren
2013-08-12  7:36                                             ` Tony Lindgren
2013-08-12  7:36                                               ` Tony Lindgren
2013-08-11 15:02                                 ` Javier Martinez Canillas
2013-08-11 15:02                                   ` Javier Martinez Canillas
2013-08-13 10:50                                   ` Benoit Cousson
2013-08-13 10:50                                     ` Benoit Cousson
2013-08-13 13:36                                     ` [PATCH v3] " Pavel Machek
2013-08-13 13:36                                       ` Pavel Machek
2013-08-13 14:06                                       ` Benoit Cousson
2013-08-13 14:06                                         ` Benoit Cousson
2013-06-26 15:14       ` N900 device tree conversion: first step Pavel Machek
2013-07-19 18:14 ` N900 device tree conversion: how to do " Sebastian Reichel
2013-07-19 18:14   ` Sebastian Reichel
2013-07-19 18:14   ` Sebastian Reichel
2013-07-28 13:37   ` Pavel Machek
2013-07-28 13:37     ` Pavel Machek

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=20130613142809.GA3775@amd.pavel.ucw.cz \
    --to=pavel@ucw.cz \
    --cc=aaro.koskinen@iki.fi \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=pali.rohar@gmail.com \
    --cc=tony@atomide.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.