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.
I tried formally switching to device tree while still booting using
hardcoded functions. No luck. Does anyone see what I did wrong?
Is it possible that n900 has its main memory somewhere else than
0x80000000?
Thanks,
Pavel
diff --git a/.config b/.config
index a36bbe2..130a7a8 100644
--- a/.config
+++ b/.config
@@ -498,11 +498,11 @@ CONFIG_ATAGS=y
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,no_chk_data_crc rw mtdoops.mtddev=log console=tty0 console=ttyO2"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
+# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set
+CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y
+CONFIG_CMDLINE=""
CONFIG_KEXEC=y
CONFIG_ATAGS_PROC=y
# CONFIG_CRASH_DUMP is not set
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..e093543
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * 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
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/include/ "skeleton.dtsi"
+/* FIXME: "omap3.dtsi" */
+
+/ {
+ model = "Nokia N900";
+ compatible = "nokia,omap3-n900", "ti,omap3";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>; /* 256 MB */
+ };
+};
+
+/*
+&mmc1 {
+ status = "disabled";
+};
+
+&mmc2 {
+ status = "disabled";
+};
+
+&mmc3 {
+ status = "disabled";
+};
+*/
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 74f83a5..f857b5b 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",
@@ -119,21 +121,21 @@ static void __init rx51_init(void)
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 <[email protected]> */
- .atag_offset = 0x100,
- .reserve = rx51_reserve,
+DT_MACHINE_START(N900_DT, "Nokia N900 (Flattened Device Tree)")
+ .atag_offset = 0x100,
+ .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 = omap3_init_irq, /* FIXME: omap_intc_of_init, */
+ .handle_irq = omap3_intc_handle_irq,
+ .init_machine = rx51_init, /* FIXME: omap_generic_init, */
+ .init_late = omap3430_init_late, /* FIXME: omap3_init_late, */
+ .init_time = omap3_sync32k_timer_init,
+ .dt_compat = omap3_boards_compat,
+ .restart = omap3xxx_restart,
MACHINE_END
diff --git a/mkit b/mkit
index 354610c..e9ffc02 100755
--- a/mkit
+++ b/mkit
@@ -1,3 +1,4 @@
#!/bin/bash
ARCH=arm time make -j 3 && \
- sudo ../maemo/0xffff/src/0xFFFF -m arch/arm/boot/zImage -l -b 'root=/dev/mmcblk0p6 rootwait'
\ No newline at end of file
+ cat arch/arm/boot/zImage arch/arm/boot/dts/omap3-n900.dtb > zImage_dtb && \
+ sudo ../maemo/0xffff/src/0xFFFF -m zImage_dtb -l -b 'root=/dev/mmcblk0p6 rootwait'
\ No newline at end of file
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Sunday 09 June 2013 03:59:44 Pavel Machek wrote:
> 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).
>
Hello,
I used serial port only in qemu for debugging. Maybe you can try
to play with qemu first. Qemu has good n900 HW support.
But problematic is to create n900 mtd nand image bootable in
qemu, because it needs closed source nokia bootloader and this
needs to have CAL partition with some unknown data with is
proprietary format.
Nevertheless, there is prebuilded qemu image with maemo5 and with
special version of nokia patches qemu, which was (and still is)
very good for testing anything for n900. Special version of qemu
plus qemu image is part of MADDE development tool, look here:
Info: http://wiki.maemo.org/MADDE
Download link: http://tablets-dev.nokia.com/MADDE.php
Except skinning support and Opengl ES all other nokia patches were
included into Linaro version of qemu, so you can use it without
problems. But you still need proprietary bootloader and correct
CAL partition.
But, nokia released closed redistributable version of bootloader
for qemu and (proprietary) tool which generating mtd nand
partition. You can pass kernel, initfs, rootfs images and it
create correct mtd layout and automatically creating CAL.
Proprietary n900 bootloader (two parts!) for qemu is here:
http://download.meego.com/live/Trunk:/non-oss:/Testing/Trunk_Testing/i586/nolo-qemu-0.20100910-1.2.i586.rpm
Proprietary tool for creating mtd nand file is here:
http://download.meego.com/live/Trunk:/non-oss:/Testing/Trunk_Testing/i586/qflasher-21-1.2.i586.rpm
PS: Sorry for too many closed SW, but there is no FOSS equivalent
and this is the only one option how to use qemu n900 hw support.
U-Boot is ported to n900, but depends on Nokia bootloader...
--
Pali Rohár
[email protected]
On Sun 2013-06-09 11:24:40, Pali Roh?r wrote:
> On Sunday 09 June 2013 03:59:44 Pavel Machek wrote:
> > 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).
> >
>
> Hello,
>
> I used serial port only in qemu for debugging. Maybe you can try
> to play with qemu first. Qemu has good n900 HW support.
Yes, qemu is helpful.
For the record: this is how you use it.
KERNEL=/data/l/linux-n900/zImage_dtb
./qflasher -m rx51 -x ./xloader-qemu.bin -s ./secondary-qemu.bin -k $KERNEL -o n900.img -p k=6072
> sd-empty
./qemu-system-arm -s -M n900 -mtdblock n900.img -sd sd-empty -serial
stdio -clock unix -redir tcp:5555:10.0.2.15:22
...and this patch is needed to make it past rx51_init.
Author: Pavel <[email protected]>
Date: Sun Jun 9 18:45:39 2013 +0200
Comment out errata workaround that breaks qemu.
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 938e46f..0ffd7d3 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -108,11 +108,13 @@ static void __init rx51_init(void)
rx51_peripherals_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
/* Ensure SDRC pins are mux'd for self-refresh */
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Sunday 09 June 2013 18:47:45 Pavel Machek wrote:
> On Sun 2013-06-09 11:24:40, Pali Rohár wrote:
> > On Sunday 09 June 2013 03:59:44 Pavel Machek wrote:
> > > 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).
> >
> > Hello,
> >
> > I used serial port only in qemu for debugging. Maybe you can
> > try to play with qemu first. Qemu has good n900 HW support.
>
> Yes, qemu is helpful.
>
> For the record: this is how you use it.
>
> KERNEL=/data/l/linux-n900/zImage_dtb
> ./qflasher -m rx51 -x ./xloader-qemu.bin -s
> ./secondary-qemu.bin -k $KERNEL -o n900.img -p k=6072
>
> > sd-empty
>
> ./qemu-system-arm -s -M n900 -mtdblock n900.img -sd sd-empty
> -serial stdio -clock unix -redir tcp:5555:10.0.2.15:22
>
> ...and this patch is needed to make it past rx51_init.
>
> Author: Pavel <[email protected]>
> Date: Sun Jun 9 18:45:39 2013 +0200
>
> Comment out errata workaround that breaks qemu.
>
> diff --git a/arch/arm/mach-omap2/board-rx51.c
> b/arch/arm/mach-omap2/board-rx51.c index 938e46f..0ffd7d3
> 100644
> --- a/arch/arm/mach-omap2/board-rx51.c
> +++ b/arch/arm/mach-omap2/board-rx51.c
> @@ -108,11 +108,13 @@ static void __init rx51_init(void)
> rx51_peripherals_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
>
> /* Ensure SDRC pins are mux'd for self-refresh */
> omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
Hm, right qemu not running in omap secure mode, so it can really
break booting. So before calling secure code it is needed to
check if we are really on secure device. I think this code help:
if (omap_type() == OMAP2_DEVICE_TYPE_SEC)
Can somebody confirm if above check is correct for OMAP3 HS
device? And also if it does not pass in qemu?
--
Pali Rohár
[email protected]
On Sun 2013-06-09 03:59:44, Pavel Machek wrote:
> 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.
>
> I tried formally switching to device tree while still booting using
> hardcoded functions. No luck. Does anyone see what I did wrong?
>
> Is it possible that n900 has its main memory somewhere else than
> 0x80000000?
Interesting. It seems that memory setup from atags is indeed
0x8000 0000 size 0x0800 0000
0x8800 0000 size 0x0800 0000
. But hopefully that's just complicated way of saying
0x8000 0000 size 0x1000 0000
.
Anyway, I now see problem with my reasoning: kernel is full of
if (of_have_populated_dt())
tests, so it is impossible to switch to device tree, and still expect
old-style init to work :-(.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi,
On Sun, Jun 09, 2013 at 03:59:44AM +0200, Pavel Machek wrote:
> 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.
---8<---
/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>;
};
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.
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.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
* Pavel Machek <[email protected]> [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?
Regards,
Tony
On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> * Pavel Machek <[email protected]> [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 <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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 <[email protected]> */
- .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
* Pavel Machek <[email protected]> [130613 07:34]:
> On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> > * Pavel Machek <[email protected]> [130613 06:32]:
> >
> > > 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.
Hmm I think all we have is what's written in
Documentation/devicetree/bindings/spi/omap-spi.txt and
omap4-sdp.dts.
Regards,
Tony
Hi!
> * Pavel Machek <[email protected]> [130613 07:34]:
> > On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> > > * Pavel Machek <[email protected]> [130613 06:32]:
> > >
> > > > 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.
>
> Hmm I think all we have is what's written in
> Documentation/devicetree/bindings/spi/omap-spi.txt and
> omap4-sdp.dts.
Ok, this was easier than expected.
Now, by chance, any idea what is DT equivalent of
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
?
(Plus I'll still have to figure out why it works on emulator but not
on hw).
Thanks,
Pavel
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 10a880f..3918ae1 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -65,6 +65,14 @@
status = "disabled";
};
+&mcspi1 {
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ };
+};
+
/*
&usb_otg_hs {
interface-type = <0>;
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 996ffc3..597ade9 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -130,9 +130,10 @@ void __init omap_generic_init(void)
regulator_use_dummy_regulator();
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-
+#if 0
spi_register_board_info(rx51_peripherals_spi_board_info,
ARRAY_SIZE(rx51_peripherals_spi_board_info));
+#endif
#else
rx51_video_init();
#endif
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
* Pavel Machek <[email protected]> [130613 08:58]:
> Hi!
>
> > * Pavel Machek <[email protected]> [130613 07:34]:
> > > On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> > > > * Pavel Machek <[email protected]> [130613 06:32]:
> > > >
> > > > > 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.
> >
> > Hmm I think all we have is what's written in
> > Documentation/devicetree/bindings/spi/omap-spi.txt and
> > omap4-sdp.dts.
>
> Ok, this was easier than expected.
Cool.
> Now, by chance, any idea what is DT equivalent of
>
> omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
You can try the attached hack after calling the above to grep for
pins in /sys/kernel/debug/omap_mux/board/core and you get the pins
in DT suitable format. There's a bug where the the pins are not
correctly split between core and wkup domains in the legacy mux fwk,
but you probably won't need to mux many wkup domain pins.
Then you just need to add the pinctr-single entries for each device,
but AFAIK most of the pins are muxed correctly in the bootloader
for the Nokia boards.
> (Plus I'll still have to figure out why it works on emulator but not
> on hw).
Might be the muxing..
Regards,
Tony
From: Tony Lindgren <[email protected]>
Date: Fri, 7 Jun 2013 08:54:59 -0700
Subject: [PATCH] Not for merging: Allows dumping out mux entries in .dts format using legacy mux
For pinctrl-single.c we should eventually have a user space
app to configure and display pin settings. Meanwhile, allow
using the legacy mux interface to do that:
# mount -t debugfs debugfs /sys/kernel/debug
# cat /sys/kernel/debug/omap_mux/board/wkup | grep fref_clk0_out
0x14 0x2 /* fref_clk0_out.sys_drm_msecure gpio6 OUTPUT | MODE2 */
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index 48094b58..6f5224a 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -35,11 +35,10 @@
#include <linux/irq.h>
#include <linux/interrupt.h>
-
#include "omap_hwmod.h"
-
#include "soc.h"
#include "control.h"
+#include "id.h"
#include "mux.h"
#include "prm.h"
#include "common.h"
@@ -505,17 +504,17 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
#define OMAP_MUX_TEST_FLAG(val, mask) \
if (((val) & (mask)) == (mask)) { \
i++; \
- flags[i] = #mask; \
+ flags[i] = #mask + sizeof("OMAP_PIN_") - 1; \
}
/* REVISIT: Add checking for non-optimal mux settings */
static inline void omap_mux_decode(struct seq_file *s, u16 val)
{
char *flags[OMAP_MUX_MAX_NR_FLAGS];
- char mode[sizeof("OMAP_MUX_MODE") + 1];
+ char mode[sizeof("MODE") + 1];
int i = -1;
- sprintf(mode, "OMAP_MUX_MODE%d", val & 0x7);
+ sprintf(mode, "MODE%d", val & 0x7);
i++;
flags[i] = mode;
@@ -553,7 +552,7 @@ static inline void omap_mux_decode(struct seq_file *s, u16 val)
}
} else {
i++;
- flags[i] = "OMAP_PIN_OUTPUT";
+ flags[i] = "OUTPUT";
}
do {
@@ -568,15 +567,26 @@ static inline void omap_mux_decode(struct seq_file *s, u16 val)
static int omap_mux_dbg_board_show(struct seq_file *s, void *unused)
{
struct omap_mux_partition *partition = s->private;
+ int pbase = (int)partition->base;
struct omap_mux_entry *e;
- u8 omap_gen = omap_rev() >> 28;
+
+ if (!(pbase & 0xfff))
+ pbase = 0x40;
+ else
+ pbase = 0;
+
+ seq_printf(s, "\t\tpinctrl-single,pins = <\n");
list_for_each_entry(e, &partition->muxmodes, node) {
struct omap_mux *m = &e->mux;
char m0_def[OMAP_MUX_DEFNAME_LEN];
char *m0_name = m->muxnames[0];
u16 val;
- int i, mode;
+ int padconf_offset, i, mode;
+
+ padconf_offset = m->reg_offset - pbase;
+ if (cpu_is_omap3630() && padconf_offset > 0x5ca)
+ continue;
if (!m0_name)
continue;
@@ -591,18 +601,14 @@ static int omap_mux_dbg_board_show(struct seq_file *s, void *unused)
}
val = omap_mux_read(partition, m->reg_offset);
mode = val & OMAP_MUX_MODE7;
- if (mode != 0)
- seq_printf(s, "/* %s */\n", m->muxnames[mode]);
-
- /*
- * XXX: Might be revisited to support differences across
- * same OMAP generation.
- */
- seq_printf(s, "OMAP%d_MUX(%s, ", omap_gen, m0_def);
+ seq_printf(s, "\t\t\t0x%x 0x%x\t/* %s.%s gpio%i ",
+ padconf_offset, val, m->muxnames[0], m->muxnames[mode], m->gpio);
omap_mux_decode(s, val);
- seq_printf(s, "),\n");
+ seq_printf(s, " */\n");
}
+ seq_printf(s, "\t\t>;\n");
+
return 0;
}
Hi!
> > Now, by chance, any idea what is DT equivalent of
> >
> > omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
>
> You can try the attached hack after calling the above to grep for
> pins in /sys/kernel/debug/omap_mux/board/core and you get the pins
> in DT suitable format. There's a bug where the the pins are not
> correctly split between core and wkup domains in the legacy mux fwk,
> but you probably won't need to mux many wkup domain pins.
>
> Then you just need to add the pinctr-single entries for each device,
> but AFAIK most of the pins are muxed correctly in the bootloader
> for the Nokia boards.
Thanks a lot for the help. So far, I'm not playing with
suspend/resume, so wkup/core split should not be issue (right?).
How does it work with the devices? AFAICT omap4 groups it logically,
but that's just for easy reading, no?
I tried this, but no luck, mux is not initialized correctly, so code
in board-rx51-video fails, and later fbcon crashes.
Any ideas?
Pavel
diff --git a/.config b/.config
index f673799..251f9dc 100644
--- a/.config
+++ b/.config
@@ -3052,8 +3052,7 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-CONFIG_DEBUG_INFO_REDUCED=y
+# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 3918ae1..ec82189 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -81,3 +81,218 @@
power = <50>;
};
*/
+
+
+
+&omap3_pmx_core {
+ pinctrl-names = "default";
+ pinctrl-0 = <
+ &all_pins
+ >;
+
+ all_pins: pinmux_all_pins {
+ pinctrl-single,pins = <
+ 0xe6 0x4104 /* cam_d0.gpio_99 gpio99 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xe8 0x11c /* cam_d1.gpio_100 gpio100 INPUT_PULLUP | MODE4 */
+ 0xfa 0x7 /* cam_d10.safe_mode gpio109 OUTPUT | MODE7 */
+ 0xfc 0x4104 /* cam_d11.gpio_110 gpio110 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xea 0xc104 /* cam_d2.gpio_101 gpio101 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xec 0x4 /* cam_d3.gpio_102 gpio102 OUTPUT | MODE4 */
+ 0xee 0x7 /* cam_d4.safe_mode gpio103 OUTPUT | MODE7 */
+ 0xf0 0x4 /* cam_d5.gpio_104 gpio104 OUTPUT | MODE4 */
+ 0xf2 0x100 /* cam_d6.cam_d6 gpio105 INPUT | MODE0 */
+ 0xf4 0x100 /* cam_d7.cam_d7 gpio106 INPUT | MODE0 */
+ 0xf6 0x100 /* cam_d8.cam_d8 gpio107 INPUT | MODE0 */
+ 0xf8 0x100 /* cam_d9.cam_d9 gpio108 INPUT | MODE0 */
+ 0xe4 0x4 /* cam_fld.gpio_98 gpio98 OUTPUT | MODE4 */
+ 0xdc 0x7 /* cam_hs.safe_mode gpio94 OUTPUT | MODE7 */
+ 0xe2 0x4 /* cam_pclk.gpio_97 gpio97 OUTPUT | MODE4 */
+ 0x102 0x0 /* cam_strobe.cam_strobe gpio126 OUTPUT | MODE0 */
+ 0xde 0x7 /* cam_vs.safe_mode gpio95 OUTPUT | MODE7 */
+ 0x100 0x104 /* cam_wen.gpio_167 gpio167 INPUT | MODE4 */
+ 0xe0 0x0 /* cam_xclka.cam_xclka gpio96 OUTPUT | MODE0 */
+ 0xfe 0x7 /* cam_xclkb.safe_mode gpio111 OUTPUT | MODE7 */
+ 0x104 0x7 /* csi2_dx0.safe_mode gpio112 OUTPUT | MODE7 */
+ 0x108 0x7 /* csi2_dx1.safe_mode gpio114 OUTPUT | MODE7 */
+ 0x106 0x4104 /* csi2_dy0.gpio_113 gpio113 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x10a 0x7 /* csi2_dy1.safe_mode gpio115 OUTPUT | MODE7 */
+ 0xaa 0x4104 /* dss_acbias.gpio_69 gpio69 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xac 0x4 /* dss_data0.gpio_70 gpio70 OUTPUT | MODE4 */
+ 0xae 0x4114 /* dss_data1.gpio_71 gpio71 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xc0 0x1 /* dss_data10.(null) gpio80 OUTPUT | MODE1 */
+ 0xc2 0x1 /* dss_data11.(null) gpio81 OUTPUT | MODE1 */
+ 0xc4 0x1 /* dss_data12.(null) gpio82 OUTPUT | MODE1 */
+ 0xc6 0x1 /* dss_data13.(null) gpio83 OUTPUT | MODE1 */
+ 0xc8 0x7 /* dss_data14.safe_mode gpio84 OUTPUT | MODE7 */
+ 0xca 0x7 /* dss_data15.safe_mode gpio85 OUTPUT | MODE7 */
+ 0xcc 0x4 /* dss_data16.gpio_86 gpio86 OUTPUT | MODE4 */
+ 0xce 0x4 /* dss_data17.gpio_87 gpio87 OUTPUT | MODE4 */
+ 0xd0 0x4 /* dss_data18.gpio_88 gpio88 OUTPUT | MODE4 */
+ 0xd2 0x4104 /* dss_data19.gpio_89 gpio89 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xd4 0x4 /* dss_data20.gpio_90 gpio90 OUTPUT | MODE4 */
+ 0xd6 0x4 /* dss_data21.gpio_91 gpio91 OUTPUT | MODE4 */
+ 0xd8 0x1 /* dss_data22.(null) gpio92 OUTPUT | MODE1 */
+ 0xda 0x1 /* dss_data23.(null) gpio93 OUTPUT | MODE1 */
+ 0xb0 0x4104 /* dss_data2.gpio_72 gpio72 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xb2 0x4 /* dss_data3.gpio_73 gpio73 OUTPUT | MODE4 */
+ 0xb4 0x10c /* dss_data4.gpio_74 gpio74 INPUT_PULLDOWN | MODE4 */
+ 0xb6 0x371c /* dss_data5.gpio_75 gpio75 INPUT_PULLUP | OFF_OUTPUT_LOW | MODE4 */
+ 0xb8 0x7 /* dss_data6.safe_mode gpio76 OUTPUT | MODE7 */
+ 0xba 0x7 /* dss_data7.safe_mode gpio77 OUTPUT | MODE7 */
+ 0xbc 0x7 /* dss_data8.safe_mode gpio78 OUTPUT | MODE7 */
+ 0xbe 0x7 /* dss_data9.safe_mode gpio79 OUTPUT | MODE7 */
+ 0xa6 0x4 /* dss_hsync.gpio_67 gpio67 OUTPUT | MODE4 */
+ 0xa4 0x7 /* dss_pclk.safe_mode gpio66 OUTPUT | MODE7 */
+ 0xa8 0x104 /* dss_vsync.gpio_68 gpio68 INPUT | MODE4 */
+ 0x5a8 0x114 /* etk_clk.gpio_12 gpio12 INPUT | MODE4 */
+ 0x5aa 0x7 /* etk_ctl.(null) gpio13 OUTPUT | MODE7 */
+ 0x5ac 0x7 /* etk_d0.(null) gpio14 OUTPUT | MODE7 */
+ 0x5ae 0x7 /* etk_d1.(null) gpio15 OUTPUT | MODE7 */
+ 0x5c0 0x11b /* etk_d10.hsusb2_clk gpio24 INPUT_PULLUP | MODE3 */
+ 0x5c2 0x7 /* etk_d11.(null) gpio25 OUTPUT | MODE7 */
+ 0x5c4 0x17 /* etk_d12.(null) gpio26 OUTPUT | MODE7 */
+ 0x5c6 0x11b /* etk_d13.hsusb2_nxt gpio27 INPUT_PULLUP | MODE3 */
+ 0x5c8 0x114 /* etk_d14.gpio_28 gpio28 INPUT | MODE4 */
+ 0x5ca 0x114 /* etk_d15.gpio_29 gpio29 INPUT | MODE4 */
+ 0x5b0 0x7 /* etk_d2.(null) gpio16 OUTPUT | MODE7 */
+ 0x5b2 0x7 /* etk_d3.(null) gpio17 OUTPUT | MODE7 */
+ 0x5b4 0x17 /* etk_d4.(null) gpio18 OUTPUT | MODE7 */
+ 0x5b6 0x7 /* etk_d5.(null) gpio19 OUTPUT | MODE7 */
+ 0x5b8 0x7 /* etk_d6.(null) gpio20 OUTPUT | MODE7 */
+ 0x5ba 0x7 /* etk_d7.(null) gpio21 OUTPUT | MODE7 */
+ 0x5bc 0x7 /* etk_d8.(null) gpio22 OUTPUT | MODE7 */
+ 0x5be 0x7 /* etk_d9.(null) gpio23 OUTPUT | MODE7 */
+ 0x4a 0x0 /* gpmc_a1.gpmc_a1 gpio34 OUTPUT | MODE0 */
+ 0x5c 0x411c /* gpmc_a10.gpio_43 gpio43 INPUT_PULLUP | OFF_WAKEUPENABLE | MODE4 */
+ 0x4c 0x0 /* gpmc_a2.gpmc_a2 gpio35 OUTPUT | MODE0 */
+ 0x4e 0x0 /* gpmc_a3.gpmc_a3 gpio36 OUTPUT | MODE0 */
+ 0x50 0x4 /* gpmc_a4.gpio_37 gpio37 OUTPUT | MODE4 */
+ 0x52 0x7 /* gpmc_a5.safe_mode gpio38 OUTPUT | MODE7 */
+ 0x54 0x7 /* gpmc_a6.safe_mode gpio39 OUTPUT | MODE7 */
+ 0x56 0x4 /* gpmc_a7.gpio_40 gpio40 OUTPUT | MODE4 */
+ 0x58 0x4 /* gpmc_a8.gpio_41 gpio41 OUTPUT | MODE4 */
+ 0x5a 0x4104 /* gpmc_a9.gpio_42 gpio42 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x8e 0x100 /* gpmc_clk.gpmc_clk gpio59 INPUT | MODE0 */
+ 0x72 0x100 /* gpmc_d10.gpmc_d10 gpio46 INPUT | MODE0 */
+ 0x74 0x100 /* gpmc_d11.gpmc_d11 gpio47 INPUT | MODE0 */
+ 0x76 0x100 /* gpmc_d12.gpmc_d12 gpio48 INPUT | MODE0 */
+ 0x78 0x100 /* gpmc_d13.gpmc_d13 gpio49 INPUT | MODE0 */
+ 0x7a 0x100 /* gpmc_d14.gpmc_d14 gpio50 INPUT | MODE0 */
+ 0x7c 0x100 /* gpmc_d15.gpmc_d15 gpio51 INPUT | MODE0 */
+ 0x6e 0x100 /* gpmc_d8.gpmc_d8 gpio44 INPUT | MODE0 */
+ 0x70 0x100 /* gpmc_d9.gpmc_d9 gpio45 INPUT | MODE0 */
+ 0x96 0x4 /* gpmc_nbe0_cle.gpio_60 gpio60 OUTPUT | MODE4 */
+ 0x98 0x4104 /* gpmc_nbe1.gpio_61 gpio61 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x80 0x18 /* gpmc_ncs1.gpmc_ncs1 gpio52 OUTPUT | MODE0 */
+ 0x82 0x410c /* gpmc_ncs2.gpio_53 gpio53 INPUT_PULLDOWN | OFF_WAKEUPENABLE | MODE4 */
+ 0x84 0x10c /* gpmc_ncs3.gpio_54 gpio54 INPUT_PULLDOWN | MODE4 */
+ 0x86 0x4104 /* gpmc_ncs4.gpio_55 gpio55 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x88 0x7 /* gpmc_ncs5.safe_mode gpio56 OUTPUT | MODE7 */
+ 0x8a 0x7 /* gpmc_ncs6.safe_mode gpio57 OUTPUT | MODE7 */
+ 0x8c 0x7 /* gpmc_ncs7.safe_mode gpio58 OUTPUT | MODE7 */
+ 0x9a 0x104 /* gpmc_nwp.gpio_62 gpio62 INPUT | MODE4 */
+ 0x9e 0x7 /* gpmc_wait1.safe_mode gpio63 OUTPUT | MODE7 */
+ 0xa0 0x7 /* gpmc_wait2.safe_mode gpio64 OUTPUT | MODE7 */
+ 0xa2 0x11c /* gpmc_wait3.gpio_65 gpio65 INPUT_PULLUP | MODE4 */
+ 0x196 0x7 /* hdq_sio.safe_mode gpio170 OUTPUT | MODE7 */
+ 0x172 0x100 /* hsusb0_clk.hsusb0_clk gpio120 INPUT | MODE0 */
+ 0x17a 0x100 /* hsusb0_data0.hsusb0_data0 gpio125 INPUT | MODE0 */
+ 0x17c 0x100 /* hsusb0_data1.hsusb0_data1 gpio130 INPUT | MODE0 */
+ 0x17e 0x100 /* hsusb0_data2.hsusb0_data2 gpio131 INPUT | MODE0 */
+ 0x180 0x100 /* hsusb0_data3.hsusb0_data3 gpio169 INPUT | MODE0 */
+ 0x182 0x100 /* hsusb0_data4.hsusb0_data4 gpio188 INPUT | MODE0 */
+ 0x184 0x100 /* hsusb0_data5.hsusb0_data5 gpio189 INPUT | MODE0 */
+ 0x186 0x100 /* hsusb0_data6.hsusb0_data6 gpio190 INPUT | MODE0 */
+ 0x188 0x100 /* hsusb0_data7.hsusb0_data7 gpio191 INPUT | MODE0 */
+ 0x176 0x100 /* hsusb0_dir.hsusb0_dir gpio122 INPUT | MODE0 */
+ 0x178 0x100 /* hsusb0_nxt.hsusb0_nxt gpio124 INPUT | MODE0 */
+ 0x174 0x0 /* hsusb0_stp.hsusb0_stp gpio121 OUTPUT | MODE0 */
+ 0x18e 0x100 /* i2c2_scl.i2c2_scl gpio168 INPUT | MODE0 */
+ 0x190 0x100 /* i2c2_sda.i2c2_sda gpio183 INPUT | MODE0 */
+ 0x192 0x100 /* i2c3_scl.i2c3_scl gpio184 INPUT | MODE0 */
+ 0x194 0x100 /* i2c3_sda.i2c3_sda gpio185 INPUT | MODE0 */
+ 0x9d0 0x100 /* i2c4_scl.i2c4_scl gpio0 INPUT | MODE0 */
+ 0x9d2 0x100 /* i2c4_sda.i2c4_sda gpio0 INPUT | MODE0 */
+ 0x9f4 0x100 /* jtag_emu0.jtag_emu0 gpio11 INPUT | MODE0 */
+ 0x9f6 0x100 /* jtag_emu1.jtag_emu1 gpio31 INPUT | MODE0 */
+ 0x15c 0x109 /* mcbsp1_clkr.mcspi4_clk gpio156 INPUT_PULLDOWN | MODE1 */
+ 0x168 0x14 /* mcbsp1_clkx.gpio_162 gpio162 OUTPUT | MODE4 */
+ 0x162 0x109 /* mcbsp1_dr.mcspi4_somi gpio159 INPUT_PULLDOWN | MODE1 */
+ 0x160 0x1 /* mcbsp1_dx.mcspi4_simo gpio158 OUTPUT | MODE1 */
+ 0x15e 0x7 /* mcbsp1_fsr.safe_mode gpio157 OUTPUT | MODE7 */
+ 0x166 0x1 /* mcbsp1_fsx.mcspi4_cs0 gpio161 OUTPUT | MODE1 */
+ 0x10e 0x100 /* mcbsp2_clkx.mcbsp2_clkx gpio117 INPUT | MODE0 */
+ 0x110 0x100 /* mcbsp2_dr.mcbsp2_dr gpio118 INPUT | MODE0 */
+ 0x112 0x0 /* mcbsp2_dx.mcbsp2_dx gpio119 OUTPUT | MODE0 */
+ 0x10c 0x100 /* mcbsp2_fsx.mcbsp2_fsx gpio116 INPUT | MODE0 */
+ 0x140 0x100 /* mcbsp3_clkx.mcbsp3_clkx gpio142 INPUT | MODE0 */
+ 0x13e 0x100 /* mcbsp3_dr.mcbsp3_dr gpio141 INPUT | MODE0 */
+ 0x13c 0x0 /* mcbsp3_dx.mcbsp3_dx gpio140 OUTPUT | MODE0 */
+ 0x142 0x100 /* mcbsp3_fsx.mcbsp3_fsx gpio143 INPUT | MODE0 */
+ 0x154 0x101 /* mcbsp4_clkx.(null) gpio152 INPUT | MODE1 */
+ 0x156 0x101 /* mcbsp4_dr.(null) gpio153 INPUT | MODE1 */
+ 0x158 0x1 /* mcbsp4_dx.(null) gpio154 OUTPUT | MODE1 */
+ 0x15a 0x1 /* mcbsp4_fsx.(null) gpio155 OUTPUT | MODE1 */
+ 0x164 0x11c /* mcbsp_clks.gpio_160 gpio160 INPUT_PULLUP | MODE4 */
+ 0x198 0x100 /* mcspi1_clk.mcspi1_clk gpio171 INPUT | MODE0 */
+ 0x19e 0x0 /* mcspi1_cs0.mcspi1_cs0 gpio174 OUTPUT | MODE0 */
+ 0x1a0 0x7 /* mcspi1_cs1.safe_mode gpio175 OUTPUT | MODE7 */
+ 0x1a2 0x0 /* mcspi1_cs2.mcspi1_cs2 gpio176 OUTPUT | MODE0 */
+ 0x1a4 0x4114 /* mcspi1_cs3.gpio_177 gpio177 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x19a 0x0 /* mcspi1_simo.mcspi1_simo gpio172 OUTPUT | MODE0 */
+ 0x19c 0x108 /* mcspi1_somi.mcspi1_somi gpio173 INPUT_PULLDOWN | MODE0 */
+ 0x1a6 0x7 /* mcspi2_clk.safe_mode gpio178 OUTPUT | MODE7 */
+ 0x1ac 0x4114 /* mcspi2_cs0.gpio_181 gpio181 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x1ae 0x14 /* mcspi2_cs1.gpio_182 gpio182 OUTPUT | MODE4 */
+ 0x1a8 0x1 /* mcspi2_simo.gpt9_pwm_evt gpio179 OUTPUT | MODE1 */
+ 0x1aa 0x4114 /* mcspi2_somi.gpio_180 gpio180 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x114 0x118 /* sdmmc1_clk.sdmmc1_clk gpio120 INPUT_PULLUP | MODE0 */
+ 0x116 0x118 /* sdmmc1_cmd.sdmmc1_cmd gpio121 INPUT_PULLUP | MODE0 */
+ 0x118 0x118 /* sdmmc1_dat0.sdmmc1_dat0 gpio122 INPUT_PULLUP | MODE0 */
+ 0x11a 0x118 /* sdmmc1_dat1.sdmmc1_dat1 gpio123 INPUT_PULLUP | MODE0 */
+ 0x11c 0x118 /* sdmmc1_dat2.sdmmc1_dat2 gpio124 INPUT_PULLUP | MODE0 */
+ 0x11e 0x118 /* sdmmc1_dat3.sdmmc1_dat3 gpio125 INPUT_PULLUP | MODE0 */
+ 0x120 0x7 /* sdmmc1_dat4.safe_mode gpio126 OUTPUT | MODE7 */
+ 0x122 0x7 /* sdmmc1_dat5.safe_mode gpio127 OUTPUT | MODE7 */
+ 0x124 0x7 /* sdmmc1_dat6.safe_mode gpio128 OUTPUT | MODE7 */
+ 0x126 0x7 /* sdmmc1_dat7.safe_mode gpio129 OUTPUT | MODE7 */
+ 0x128 0x118 /* sdmmc2_clk.sdmmc2_clk gpio130 INPUT_PULLUP | MODE0 */
+ 0x12a 0x118 /* sdmmc2_cmd.sdmmc2_cmd gpio131 INPUT_PULLUP | MODE0 */
+ 0x12c 0x118 /* sdmmc2_dat0.sdmmc2_dat0 gpio132 INPUT_PULLUP | MODE0 */
+ 0x12e 0x118 /* sdmmc2_dat1.sdmmc2_dat1 gpio133 INPUT_PULLUP | MODE0 */
+ 0x130 0x118 /* sdmmc2_dat2.sdmmc2_dat2 gpio134 INPUT_PULLUP | MODE0 */
+ 0x132 0x118 /* sdmmc2_dat3.sdmmc2_dat3 gpio135 INPUT_PULLUP | MODE0 */
+ 0x134 0x118 /* sdmmc2_dat4.sdmmc2_dat4 gpio136 INPUT_PULLUP | MODE0 */
+ 0x136 0x118 /* sdmmc2_dat5.sdmmc2_dat5 gpio137 INPUT_PULLUP | MODE0 */
+ 0x138 0x118 /* sdmmc2_dat6.sdmmc2_dat6 gpio138 INPUT_PULLUP | MODE0 */
+ 0x13a 0x118 /* sdmmc2_dat7.sdmmc2_dat7 gpio139 INPUT_PULLUP | MODE0 */
+ 0x232 0x100 /* sdrc_cke0.sdrc_cke0 gpio0 INPUT | MODE0 */
+ 0x234 0x100 /* sdrc_cke1.sdrc_cke1 gpio0 INPUT | MODE0 */
+ 0x9da 0x100 /* sys_boot0.sys_boot0 gpio2 INPUT | MODE0 */
+ 0x9dc 0x100 /* sys_boot1.sys_boot1 gpio3 INPUT | MODE0 */
+ 0x9de 0x100 /* sys_boot2.sys_boot2 gpio4 INPUT | MODE0 */
+ 0x9e0 0x100 /* sys_boot3.sys_boot3 gpio5 INPUT | MODE0 */
+ 0x9e2 0x100 /* sys_boot4.sys_boot4 gpio6 INPUT | MODE0 */
+ 0x9e4 0x104 /* sys_boot5.gpio_7 gpio7 INPUT | MODE4 */
+ 0x9e6 0x100 /* sys_boot6.sys_boot6 gpio8 INPUT | MODE0 */
+ 0x9ea 0x17 /* sys_clkout1.safe_mode gpio10 OUTPUT | MODE7 */
+ 0x1b2 0x17 /* sys_clkout2.safe_mode gpio186 OUTPUT | MODE7 */
+ 0x9d6 0x0 /* sys_clkreq.sys_clkreq gpio1 OUTPUT | MODE0 */
+ 0x1b0 0xc118 /* sys_nirq.sys_nirq gpio0 INPUT_PULLUP | OFF_WAKEUPENABLE | MODE0 */
+ 0x9d8 0x118 /* sys_nreswarm.sys_nreswarm gpio30 INPUT_PULLUP | MODE0 */
+ 0x9e8 0x0 /* sys_off_mode.sys_off_mode gpio9 OUTPUT | MODE0 */
+ 0x150 0x111 /* uart1_cts.ssi1_rdy_tx gpio150 INPUT | MODE1 */
+ 0x14e 0x1 /* uart1_rts.ssi1_flag_tx gpio149 OUTPUT | MODE1 */
+ 0x152 0x4104 /* uart1_rx.gpio_151 gpio151 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x14c 0x1 /* uart1_tx.ssi1_dat_tx gpio148 OUTPUT | MODE1 */
+ 0x144 0x118 /* uart2_cts.uart2_cts gpio144 INPUT_PULLUP | MODE0 */
+ 0x146 0x0 /* uart2_rts.uart2_rts gpio145 OUTPUT | MODE0 */
+ 0x14a 0x100 /* uart2_rx.uart2_rx gpio147 INPUT | MODE0 */
+ 0x148 0x0 /* uart2_tx.uart2_tx gpio146 OUTPUT | MODE0 */
+ 0x16a 0x4 /* uart3_cts_rctx.gpio_163 gpio163 OUTPUT | MODE4 */
+ 0x16c 0x4 /* uart3_rts_sd.gpio_164 gpio164 OUTPUT | MODE4 */
+ 0x16e 0x100 /* uart3_rx_irrx.uart3_rx_irrx gpio165 INPUT | MODE0 */
+ 0x170 0x0 /* uart3_tx_irtx.uart3_tx_irtx gpio166 OUTPUT | MODE0 */
+ >;
+ };
+};
\ No newline at end of file
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 597ade9..1acfd6c 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -129,8 +129,8 @@ void __init omap_generic_init(void)
#if 1
regulator_use_dummy_regulator();
- omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
#if 0
+ omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
spi_register_board_info(rx51_peripherals_spi_board_info,
ARRAY_SIZE(rx51_peripherals_spi_board_info));
#endif
diff --git a/dmesg.qemu b/dmesg.qemu
index 16267c5..a49d10e 100644
--- a/dmesg.qemu
+++ b/dmesg.qemu
@@ -117,11 +117,11 @@ Booting secondary
OMAP GPIO hardware version 2.5
platform 49022000.mcbsp: alias fck already exists
platform 49024000.mcbsp: alias fck already exists
- omap_mux_init: Add partition: #1: core, flags: 4
No ATAGs?
hw-breakpoint: debug architecture 0x0 unsupported.
OMAP DMA hardware revision 4.0
arm-pmu: alias fck already exists
+ rx51_video_init cannot configure MUX for LCD RESET
bio: create slab <bio-0> at 0
omap-dma-engine omap-dma-engine: OMAP DMA engine driver
usbcore: registered new interface driver usbfs
@@ -170,28 +170,6 @@ Booting secondary
msgmni has been set to 489
io scheduler noop registered
io scheduler cfq registered (default)
-------------
- WARNING: at drivers/video/omap2/dss/dss.c:495 dss_set_clock_div+0x90/0xbc()
- clk rate mismatch
- Modules linked in:
- (warn_slowpath_common+0x4c/0x68)
- (warn_slowpath_fmt+0x30/0x40)
- (dss_set_clock_div+0x90/0xbc)
- (omap_dsshw_probe+0x220/0x348)
- (platform_drv_probe+0x1c/0x24)
- (driver_probe_device+0xc0/0x21c)
- (__driver_attach+0x60/0x84)
- (bus_for_each_dev+0x50/0x98)
- (bus_add_driver+0xc0/0x228)
- (driver_register+0xa4/0x144)
- (platform_driver_probe+0x18/0xa4)
- (omap_dss_init2+0x1c/0xb0)
- (do_one_initcall+0x94/0x15c)
- (kernel_init_freeable+0xe0/0x1b8)
- (kernel_init+0x8/0x15c)
- (ret_from_fork+0x14/0x3c)
----
- OMAP DSS rev 2.0
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial.10: ttyO0 at MMIO 0x4806a000 (irq = 88) is a OMAP UART0
serial.11: ttyO1 at MMIO 0x4806c000 (irq = 89) is a OMAP UART1
@@ -202,7 +180,6 @@ Booting secondary
OneNAND driver initializing
omap-dma-engine omap-dma-engine: allocating channel for 40
omap-dma-engine omap-dma-engine: allocating channel for 39
- acx565akm spi1.2: omapfb: acx565akm rev 12 LCD detected
OMAP SSI hw driver loaded
port0: No Wake in support
musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
@@ -228,10 +205,58 @@ Booting secondary
Bootup reason: pwr_key
OMAP GPIO switch handler initializing
registered taskstats version 1
- Console: switching to colour frame buffer device 100x30
- VPLL2: disabling
- drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
- ALSA device list:
- No soundcards found.
- Waiting for root device /dev/mmcblk0p6...
+ Unable to handle kernel NULL pointer dereference at virtual address 00000014
+ pgd = c0004000
+ *pgd=00000000
+ PREEMPT ARM
+ Modules linked in:
+ CPU: 0 Not tainted (3.9.0+ #143)
+ PC is at dss_feat_get_num_ovls+0x8/0x14
+ LR is at omapdss_compat_init+0x34/0x2b8
+ psr: 60000153
+ sp : cf847db8 ip : c0773c90 fp : c07be280
+ r10: c0748528 r9 : 00000000 r8 : c07be28c
+ r7 : cf81c010 r6 : 00000000 r5 : c0773c90 r4 : c081701c
+ r3 : 00000000 r2 : c0816eac r1 : 00000000 r0 : c079cb38
+ Flags: nZCv IRQs on FIQs off Mode SVC_32 ISA ARM Segment kernel
+ Control: 10c53c7d Table: 80004059 DAC: 00000015
+ Process swapper (pid: 1, stack limit = 0xcf846238)
+ Stack: (0xcf847db8 to 0xcf848000)
+ 7da0: c0773c90 c081701c
+ 7dc0: c0773c90 00000000 cf81c010 c07be28c 00000000 c0748528 c07be280 c07485e4
+ 7de0: c0809800 000000b6 00000009 cf847e34 36215305 cf831950 c0773c90 c0773c80
+ 7e00: cfac5ec0 00000000 cf8dcc40 c014905c cf8dcbc0 cfac5ec0 cf847e70 c01493d4
+ 7e20: 0000a1ff cfac5e80 cf847e34 c01495d4 00000000 cfac5cc0 cfac5ec0 cf847e70
+ 7e40: 00000000 c0149490 00000000 cfac5ec0 cfab7f00 00000000 cf8dcbc0 c014a620
+ 7e60: 00000000 c0059034 00000000 c07be28c cf8dcbc0 00000000 00000000 c0773c90
+ 7e80: c0773c90 00000000 c079cd3c c07be28c 00000000 c0748528 c07be280 c02ba920
+ 7ea0: 00000000 c02b95c0 c07a1d00 c0773c90 c0773cc4 c079cd3c c079cd3c c02b977c
+ 7ec0: 00000000 c02b971c cf847ed0 c02b7e5c cf83a34c cf8d4b30 cfab7f34 cfab7f00
+ 7ee0: c079cd28 c079cd3c c07a1d00 c02b8644 c066c9d1 c07656fc c0765700 c0765700
+ 7f00: c079cd28 c079cd3c 0000007e c02b9da8 c07be280 c0765700 c079cd28 00000008
+ 7f20: 0000007e c02baca4 c0765700 c075a944 00000008 c074853c c07656f8 c00087d0
+ 7f40: c0702e14 c0a22b1c 00000000 00000007 c0765700 c075a944 00000008 0000007e
+ 7f60: c07be28c c075a904 c072a36c c072a294 00000007 00000007 c072a36c 00000000
+ 7f80: cf846000 00000000 c052afd0 00000000 00000000 00000000 00000000 00000000
+ 7fa0: 00000000 c052afd8 00000000 c000db18 00000000 00000000 00000000 00000000
+ 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+ 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
+ (omapdss_compat_init+0x34/0x2b8)
+ (omapfb_probe+0x80/0x10c8)
+ (platform_drv_probe+0x1c/0x24)
+ (driver_probe_device+0xc0/0x21c)
+ (__driver_attach+0x60/0x84)
+ (bus_for_each_dev+0x50/0x98)
+ (bus_add_driver+0xc0/0x228)
+ (driver_register+0xa4/0x144)
+ (platform_driver_probe+0x18/0xa4)
+ (omapfb_init+0x14/0x3c)
+ (do_one_initcall+0x94/0x15c)
+ (kernel_init_freeable+0xe0/0x1b8)
+ (kernel_init+0x8/0x15c)
+ (ret_from_fork+0x14/0x3c)
+ Code: e12fff1e c08159f0 e59f3008 e5933000 (e5930014)
+---
+ Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
+
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
* Pavel Machek <[email protected]> [130613 16:14]:
> Hi!
>
> > > Now, by chance, any idea what is DT equivalent of
> > >
> > > omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
> >
> > You can try the attached hack after calling the above to grep for
> > pins in /sys/kernel/debug/omap_mux/board/core and you get the pins
> > in DT suitable format. There's a bug where the the pins are not
> > correctly split between core and wkup domains in the legacy mux fwk,
> > but you probably won't need to mux many wkup domain pins.
> >
> > Then you just need to add the pinctr-single entries for each device,
> > but AFAIK most of the pins are muxed correctly in the bootloader
> > for the Nokia boards.
>
> Thanks a lot for the help. So far, I'm not playing with
> suspend/resume, so wkup/core split should not be issue (right?).
Well if you have any wkup mux registers mapped for core mux,
pinctrl-single will complain about offset being out of range
and not set the values. You can see that in dmesg, or at least
with CONFIG_DEBUG_PINCTRL set.
> How does it work with the devices? AFAICT omap4 groups it logically,
> but that's just for easy reading, no?
No, there really are two instances of mux registers even on omap3,
but I missed that earlier while reading the docs, and with the legacy
mux framework it does not matter which mux domain it is. But it
matters for pinctrl-single as it ioremaps the ranges separately.
> I tried this, but no luck, mux is not initialized correctly, so code
> in board-rx51-video fails, and later fbcon crashes.
>
> Any ideas?
You may have some wkup mux domain offsets in your .dts file, so
pinctrl-single will abort the muxing.
> --- a/arch/arm/boot/dts/omap3-n900.dts
> +++ b/arch/arm/boot/dts/omap3-n900.dts
> @@ -81,3 +81,218 @@
> power = <50>;
> };
> */
> +
> +
> +
> +&omap3_pmx_core {
> + pinctrl-names = "default";
> + pinctrl-0 = <
> + &all_pins
> + >;
> +
> + all_pins: pinmux_all_pins {
> + pinctrl-single,pins = <
> + 0xe6 0x4104 /* cam_d0.gpio_99 gpio99 INPUT | OFF_WAKEUPENABLE | MODE4 */
> + 0xe8 0x11c /* cam_d1.gpio_100 gpio100 INPUT_PULLUP | MODE4 */
> + 0xfa 0x7 /* cam_d10.safe_mode gpio109 OUTPUT | MODE7 */
...
This is not a good way of doing muxing, hogging all the pins under
omap3_pmx_core will make it impossible to unload pinctrl-single
as a module, which is not nice for distros and developers.
Further, if some pins need dynamic remuxing, we can't do it in
the device driver for the device. For n900, dynamic remuxing needs
to be done for eMMC at least, see rx51_mmc2_remux().
Also, see the recent patches that Benoit has queued to use the
preprocessor for the .dts files, we should modify the legacy mux
dump hack to output the mux mode defines instead.
Regards,
Tony
> * Pavel Machek <[email protected]> [130613 16:14]:
> > Hi!
> >
> > > > Now, by chance, any idea what is DT equivalent of
> > > >
> > > > omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
> > >
> > > You can try the attached hack after calling the above to grep for
> > > pins in /sys/kernel/debug/omap_mux/board/core and you get the pins
> > > in DT suitable format. There's a bug where the the pins are not
> > > correctly split between core and wkup domains in the legacy mux fwk,
> > > but you probably won't need to mux many wkup domain pins.
> > >
> > > Then you just need to add the pinctr-single entries for each device,
> > > but AFAIK most of the pins are muxed correctly in the bootloader
> > > for the Nokia boards.
> >
> > Thanks a lot for the help. So far, I'm not playing with
> > suspend/resume, so wkup/core split should not be issue (right?).
>
> Well if you have any wkup mux registers mapped for core mux,
> pinctrl-single will complain about offset being out of range
> and not set the values. You can see that in dmesg, or at least
> with CONFIG_DEBUG_PINCTRL set.
You are right, I did not have CONFIG_DEBUG_PINCTRL. (What is worse, I
did not even have CONFIG_PINCTRL set. Oops. I did not realize it needs
to be explicitely enabled. Unfortunately, when unkown elements of
device tree are encountered, no warning is given. ... OTOH I guess
that's understandable).
What is worse... bootloader already sets up pinctrls relevant to video
correctly... Again, that is understandable, as it already displayed
the splash screen. So this:
if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT))
{
pr_err("%s cannot configure MUX for LCD RESET\n", __func__);
return 0;
}
was breaking my video.
I now have somehow-valid-looking pinctrl assignments, but no way to
test them :-(.
> > How does it work with the devices? AFAICT omap4 groups it logically,
> > but that's just for easy reading, no?
>
> No, there really are two instances of mux registers even on omap3,
> but I missed that earlier while reading the docs, and with the legacy
> mux framework it does not matter which mux domain it is. But it
> matters for pinctrl-single as it ioremaps the ranges separately.
Yes, you are right, with debugging prints it was easy to fix.
> > + all_pins: pinmux_all_pins {
> > + pinctrl-single,pins = <
> > + 0xe6 0x4104 /* cam_d0.gpio_99 gpio99 INPUT | OFF_WAKEUPENABLE | MODE4 */
> > + 0xe8 0x11c /* cam_d1.gpio_100 gpio100 INPUT_PULLUP | MODE4 */
> > + 0xfa 0x7 /* cam_d10.safe_mode gpio109 OUTPUT | MODE7 */
> ...
>
> This is not a good way of doing muxing, hogging all the pins under
> omap3_pmx_core will make it impossible to unload pinctrl-single
> as a module, which is not nice for distros and developers.
Does omap4 do it correctly? I don't see how that works :-(.
Also... I split normal pins and wakeup pins, but I'll need to
substract some value from wakeup pins... I guess that's 0x9d0?
Anyway... here's my current version, and thanks for all the help. I
guess I'll need to figure out clocks next, because I'd really like to
have video going on device.
diff --git a/.config b/.config
index f673799..e1c9af0 100644
--- a/.config
+++ b/.config
@@ -1460,10 +1460,10 @@ CONFIG_PINCTRL=y
#
# Pin controllers
#
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
-# CONFIG_DEBUG_PINCTRL is not set
-# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_DEBUG_PINCTRL=y
+CONFIG_PINCTRL_SINGLE=y
# CONFIG_PINCTRL_EXYNOS is not set
# CONFIG_PINCTRL_EXYNOS5440 is not set
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
@@ -3052,8 +3052,7 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-CONFIG_DEBUG_INFO_REDUCED=y
+# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 10a880f..4edcb91 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -65,6 +65,14 @@
status = "disabled";
};
+&mcspi1 {
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ };
+};
+
/*
&usb_otg_hs {
interface-type = <0>;
@@ -73,3 +81,232 @@
power = <50>;
};
*/
+
+
+
+&omap3_pmx_core {
+ pinctrl-names = "default";
+ pinctrl-0 = <
+ &all_pins
+ >;
+
+ all_pins: pinmux_all_pins {
+ pinctrl-single,pins = <
+ 0xe6 0x4104 /* cam_d0.gpio_99 gpio99 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xe8 0x11c /* cam_d1.gpio_100 gpio100 INPUT_PULLUP | MODE4 */
+ 0xfa 0x7 /* cam_d10.safe_mode gpio109 OUTPUT | MODE7 */
+ 0xfc 0x4104 /* cam_d11.gpio_110 gpio110 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xea 0xc104 /* cam_d2.gpio_101 gpio101 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xec 0x4 /* cam_d3.gpio_102 gpio102 OUTPUT | MODE4 */
+ 0xee 0x7 /* cam_d4.safe_mode gpio103 OUTPUT | MODE7 */
+ 0xf0 0x4 /* cam_d5.gpio_104 gpio104 OUTPUT | MODE4 */
+ 0xf2 0x100 /* cam_d6.cam_d6 gpio105 INPUT | MODE0 */
+ 0xf4 0x100 /* cam_d7.cam_d7 gpio106 INPUT | MODE0 */
+ 0xf6 0x100 /* cam_d8.cam_d8 gpio107 INPUT | MODE0 */
+ 0xf8 0x100 /* cam_d9.cam_d9 gpio108 INPUT | MODE0 */
+ 0xe4 0x4 /* cam_fld.gpio_98 gpio98 OUTPUT | MODE4 */
+ 0xdc 0x7 /* cam_hs.safe_mode gpio94 OUTPUT | MODE7 */
+ 0xe2 0x4 /* cam_pclk.gpio_97 gpio97 OUTPUT | MODE4 */
+ 0x102 0x0 /* cam_strobe.cam_strobe gpio126 OUTPUT | MODE0 */
+ 0xde 0x7 /* cam_vs.safe_mode gpio95 OUTPUT | MODE7 */
+ 0x100 0x104 /* cam_wen.gpio_167 gpio167 INPUT | MODE4 */
+ 0xe0 0x0 /* cam_xclka.cam_xclka gpio96 OUTPUT | MODE0 */
+ 0xfe 0x7 /* cam_xclkb.safe_mode gpio111 OUTPUT | MODE7 */
+ 0x104 0x7 /* csi2_dx0.safe_mode gpio112 OUTPUT | MODE7 */
+ 0x108 0x7 /* csi2_dx1.safe_mode gpio114 OUTPUT | MODE7 */
+ 0x106 0x4104 /* csi2_dy0.gpio_113 gpio113 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x10a 0x7 /* csi2_dy1.safe_mode gpio115 OUTPUT | MODE7 */
+ 0xaa 0x4104 /* dss_acbias.gpio_69 gpio69 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xac 0x4 /* dss_data0.gpio_70 gpio70 OUTPUT | MODE4 */
+ 0xae 0x4114 /* dss_data1.gpio_71 gpio71 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xc0 0x1 /* dss_data10.(null) gpio80 OUTPUT | MODE1 */
+ 0xc2 0x1 /* dss_data11.(null) gpio81 OUTPUT | MODE1 */
+ 0xc4 0x1 /* dss_data12.(null) gpio82 OUTPUT | MODE1 */
+ 0xc6 0x1 /* dss_data13.(null) gpio83 OUTPUT | MODE1 */
+ 0xc8 0x7 /* dss_data14.safe_mode gpio84 OUTPUT | MODE7 */
+ 0xca 0x7 /* dss_data15.safe_mode gpio85 OUTPUT | MODE7 */
+ 0xcc 0x4 /* dss_data16.gpio_86 gpio86 OUTPUT | MODE4 */
+ 0xce 0x4 /* dss_data17.gpio_87 gpio87 OUTPUT | MODE4 */
+ 0xd0 0x4 /* dss_data18.gpio_88 gpio88 OUTPUT | MODE4 */
+ 0xd2 0x4104 /* dss_data19.gpio_89 gpio89 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xd4 0x4 /* dss_data20.gpio_90 gpio90 OUTPUT | MODE4 */
+ 0xd6 0x4 /* dss_data21.gpio_91 gpio91 OUTPUT | MODE4 */
+ 0xd8 0x1 /* dss_data22.(null) gpio92 OUTPUT | MODE1 */
+ 0xda 0x1 /* dss_data23.(null) gpio93 OUTPUT | MODE1 */
+ 0xb0 0x4104 /* dss_data2.gpio_72 gpio72 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0xb2 0x4 /* dss_data3.gpio_73 gpio73 OUTPUT | MODE4 */
+ 0xb4 0x10c /* dss_data4.gpio_74 gpio74 INPUT_PULLDOWN | MODE4 */
+ 0xb6 0x371c /* dss_data5.gpio_75 gpio75 INPUT_PULLUP | OFF_OUTPUT_LOW | MODE4 */
+ 0xb8 0x7 /* dss_data6.safe_mode gpio76 OUTPUT | MODE7 */
+ 0xba 0x7 /* dss_data7.safe_mode gpio77 OUTPUT | MODE7 */
+ 0xbc 0x7 /* dss_data8.safe_mode gpio78 OUTPUT | MODE7 */
+ 0xbe 0x7 /* dss_data9.safe_mode gpio79 OUTPUT | MODE7 */
+ 0xa6 0x4 /* dss_hsync.gpio_67 gpio67 OUTPUT | MODE4 */
+ 0xa4 0x7 /* dss_pclk.safe_mode gpio66 OUTPUT | MODE7 */
+ 0xa8 0x104 /* dss_vsync.gpio_68 gpio68 INPUT | MODE4 */
+ 0x5a8 0x114 /* etk_clk.gpio_12 gpio12 INPUT | MODE4 */
+ 0x5aa 0x7 /* etk_ctl.(null) gpio13 OUTPUT | MODE7 */
+ 0x5ac 0x7 /* etk_d0.(null) gpio14 OUTPUT | MODE7 */
+ 0x5ae 0x7 /* etk_d1.(null) gpio15 OUTPUT | MODE7 */
+ 0x5c0 0x11b /* etk_d10.hsusb2_clk gpio24 INPUT_PULLUP | MODE3 */
+ 0x5c2 0x7 /* etk_d11.(null) gpio25 OUTPUT | MODE7 */
+ 0x5c4 0x17 /* etk_d12.(null) gpio26 OUTPUT | MODE7 */
+ 0x5c6 0x11b /* etk_d13.hsusb2_nxt gpio27 INPUT_PULLUP | MODE3 */
+ 0x5c8 0x114 /* etk_d14.gpio_28 gpio28 INPUT | MODE4 */
+ 0x5ca 0x114 /* etk_d15.gpio_29 gpio29 INPUT | MODE4 */
+ 0x5b0 0x7 /* etk_d2.(null) gpio16 OUTPUT | MODE7 */
+ 0x5b2 0x7 /* etk_d3.(null) gpio17 OUTPUT | MODE7 */
+ 0x5b4 0x17 /* etk_d4.(null) gpio18 OUTPUT | MODE7 */
+ 0x5b6 0x7 /* etk_d5.(null) gpio19 OUTPUT | MODE7 */
+ 0x5b8 0x7 /* etk_d6.(null) gpio20 OUTPUT | MODE7 */
+ 0x5ba 0x7 /* etk_d7.(null) gpio21 OUTPUT | MODE7 */
+ 0x5bc 0x7 /* etk_d8.(null) gpio22 OUTPUT | MODE7 */
+ 0x5be 0x7 /* etk_d9.(null) gpio23 OUTPUT | MODE7 */
+ 0x4a 0x0 /* gpmc_a1.gpmc_a1 gpio34 OUTPUT | MODE0 */
+ 0x5c 0x411c /* gpmc_a10.gpio_43 gpio43 INPUT_PULLUP | OFF_WAKEUPENABLE | MODE4 */
+ 0x4c 0x0 /* gpmc_a2.gpmc_a2 gpio35 OUTPUT | MODE0 */
+ 0x4e 0x0 /* gpmc_a3.gpmc_a3 gpio36 OUTPUT | MODE0 */
+ 0x50 0x4 /* gpmc_a4.gpio_37 gpio37 OUTPUT | MODE4 */
+ 0x52 0x7 /* gpmc_a5.safe_mode gpio38 OUTPUT | MODE7 */
+ 0x54 0x7 /* gpmc_a6.safe_mode gpio39 OUTPUT | MODE7 */
+ 0x56 0x4 /* gpmc_a7.gpio_40 gpio40 OUTPUT | MODE4 */
+ 0x58 0x4 /* gpmc_a8.gpio_41 gpio41 OUTPUT | MODE4 */
+ 0x5a 0x4104 /* gpmc_a9.gpio_42 gpio42 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x8e 0x100 /* gpmc_clk.gpmc_clk gpio59 INPUT | MODE0 */
+ 0x72 0x100 /* gpmc_d10.gpmc_d10 gpio46 INPUT | MODE0 */
+ 0x74 0x100 /* gpmc_d11.gpmc_d11 gpio47 INPUT | MODE0 */
+ 0x76 0x100 /* gpmc_d12.gpmc_d12 gpio48 INPUT | MODE0 */
+ 0x78 0x100 /* gpmc_d13.gpmc_d13 gpio49 INPUT | MODE0 */
+ 0x7a 0x100 /* gpmc_d14.gpmc_d14 gpio50 INPUT | MODE0 */
+ 0x7c 0x100 /* gpmc_d15.gpmc_d15 gpio51 INPUT | MODE0 */
+ 0x6e 0x100 /* gpmc_d8.gpmc_d8 gpio44 INPUT | MODE0 */
+ 0x70 0x100 /* gpmc_d9.gpmc_d9 gpio45 INPUT | MODE0 */
+ 0x96 0x4 /* gpmc_nbe0_cle.gpio_60 gpio60 OUTPUT | MODE4 */
+ 0x98 0x4104 /* gpmc_nbe1.gpio_61 gpio61 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x80 0x18 /* gpmc_ncs1.gpmc_ncs1 gpio52 OUTPUT | MODE0 */
+ 0x82 0x410c /* gpmc_ncs2.gpio_53 gpio53 INPUT_PULLDOWN | OFF_WAKEUPENABLE | MODE4 */
+ 0x84 0x10c /* gpmc_ncs3.gpio_54 gpio54 INPUT_PULLDOWN | MODE4 */
+ 0x86 0x4104 /* gpmc_ncs4.gpio_55 gpio55 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x88 0x7 /* gpmc_ncs5.safe_mode gpio56 OUTPUT | MODE7 */
+ 0x8a 0x7 /* gpmc_ncs6.safe_mode gpio57 OUTPUT | MODE7 */
+ 0x8c 0x7 /* gpmc_ncs7.safe_mode gpio58 OUTPUT | MODE7 */
+ 0x9a 0x104 /* gpmc_nwp.gpio_62 gpio62 INPUT | MODE4 */
+ 0x9e 0x7 /* gpmc_wait1.safe_mode gpio63 OUTPUT | MODE7 */
+ 0xa0 0x7 /* gpmc_wait2.safe_mode gpio64 OUTPUT | MODE7 */
+ 0xa2 0x11c /* gpmc_wait3.gpio_65 gpio65 INPUT_PULLUP | MODE4 */
+ 0x196 0x7 /* hdq_sio.safe_mode gpio170 OUTPUT | MODE7 */
+ 0x172 0x100 /* hsusb0_clk.hsusb0_clk gpio120 INPUT | MODE0 */
+ 0x17a 0x100 /* hsusb0_data0.hsusb0_data0 gpio125 INPUT | MODE0 */
+ 0x17c 0x100 /* hsusb0_data1.hsusb0_data1 gpio130 INPUT | MODE0 */
+ 0x17e 0x100 /* hsusb0_data2.hsusb0_data2 gpio131 INPUT | MODE0 */
+ 0x180 0x100 /* hsusb0_data3.hsusb0_data3 gpio169 INPUT | MODE0 */
+ 0x182 0x100 /* hsusb0_data4.hsusb0_data4 gpio188 INPUT | MODE0 */
+ 0x184 0x100 /* hsusb0_data5.hsusb0_data5 gpio189 INPUT | MODE0 */
+ 0x186 0x100 /* hsusb0_data6.hsusb0_data6 gpio190 INPUT | MODE0 */
+ 0x188 0x100 /* hsusb0_data7.hsusb0_data7 gpio191 INPUT | MODE0 */
+ 0x176 0x100 /* hsusb0_dir.hsusb0_dir gpio122 INPUT | MODE0 */
+ 0x178 0x100 /* hsusb0_nxt.hsusb0_nxt gpio124 INPUT | MODE0 */
+ 0x174 0x0 /* hsusb0_stp.hsusb0_stp gpio121 OUTPUT | MODE0 */
+ 0x18e 0x100 /* i2c2_scl.i2c2_scl gpio168 INPUT | MODE0 */
+ 0x190 0x100 /* i2c2_sda.i2c2_sda gpio183 INPUT | MODE0 */
+ 0x192 0x100 /* i2c3_scl.i2c3_scl gpio184 INPUT | MODE0 */
+ 0x194 0x100 /* i2c3_sda.i2c3_sda gpio185 INPUT | MODE0 */
+ 0x15c 0x109 /* mcbsp1_clkr.mcspi4_clk gpio156 INPUT_PULLDOWN | MODE1 */
+ 0x168 0x14 /* mcbsp1_clkx.gpio_162 gpio162 OUTPUT | MODE4 */
+ 0x162 0x109 /* mcbsp1_dr.mcspi4_somi gpio159 INPUT_PULLDOWN | MODE1 */
+ 0x160 0x1 /* mcbsp1_dx.mcspi4_simo gpio158 OUTPUT | MODE1 */
+ 0x15e 0x7 /* mcbsp1_fsr.safe_mode gpio157 OUTPUT | MODE7 */
+ 0x166 0x1 /* mcbsp1_fsx.mcspi4_cs0 gpio161 OUTPUT | MODE1 */
+ 0x10e 0x100 /* mcbsp2_clkx.mcbsp2_clkx gpio117 INPUT | MODE0 */
+ 0x110 0x100 /* mcbsp2_dr.mcbsp2_dr gpio118 INPUT | MODE0 */
+ 0x112 0x0 /* mcbsp2_dx.mcbsp2_dx gpio119 OUTPUT | MODE0 */
+ 0x10c 0x100 /* mcbsp2_fsx.mcbsp2_fsx gpio116 INPUT | MODE0 */
+ 0x140 0x100 /* mcbsp3_clkx.mcbsp3_clkx gpio142 INPUT | MODE0 */
+ 0x13e 0x100 /* mcbsp3_dr.mcbsp3_dr gpio141 INPUT | MODE0 */
+ 0x13c 0x0 /* mcbsp3_dx.mcbsp3_dx gpio140 OUTPUT | MODE0 */
+ 0x142 0x100 /* mcbsp3_fsx.mcbsp3_fsx gpio143 INPUT | MODE0 */
+ 0x154 0x101 /* mcbsp4_clkx.(null) gpio152 INPUT | MODE1 */
+ 0x156 0x101 /* mcbsp4_dr.(null) gpio153 INPUT | MODE1 */
+ 0x158 0x1 /* mcbsp4_dx.(null) gpio154 OUTPUT | MODE1 */
+ 0x15a 0x1 /* mcbsp4_fsx.(null) gpio155 OUTPUT | MODE1 */
+ 0x164 0x11c /* mcbsp_clks.gpio_160 gpio160 INPUT_PULLUP | MODE4 */
+ 0x198 0x100 /* mcspi1_clk.mcspi1_clk gpio171 INPUT | MODE0 */
+ 0x19e 0x0 /* mcspi1_cs0.mcspi1_cs0 gpio174 OUTPUT | MODE0 */
+ 0x1a0 0x7 /* mcspi1_cs1.safe_mode gpio175 OUTPUT | MODE7 */
+ 0x1a2 0x0 /* mcspi1_cs2.mcspi1_cs2 gpio176 OUTPUT | MODE0 */
+ 0x1a4 0x4114 /* mcspi1_cs3.gpio_177 gpio177 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x19a 0x0 /* mcspi1_simo.mcspi1_simo gpio172 OUTPUT | MODE0 */
+ 0x19c 0x108 /* mcspi1_somi.mcspi1_somi gpio173 INPUT_PULLDOWN | MODE0 */
+ 0x1a6 0x7 /* mcspi2_clk.safe_mode gpio178 OUTPUT | MODE7 */
+ 0x1ac 0x4114 /* mcspi2_cs0.gpio_181 gpio181 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x1ae 0x14 /* mcspi2_cs1.gpio_182 gpio182 OUTPUT | MODE4 */
+ 0x1a8 0x1 /* mcspi2_simo.gpt9_pwm_evt gpio179 OUTPUT | MODE1 */
+ 0x1aa 0x4114 /* mcspi2_somi.gpio_180 gpio180 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x114 0x118 /* sdmmc1_clk.sdmmc1_clk gpio120 INPUT_PULLUP | MODE0 */
+ 0x116 0x118 /* sdmmc1_cmd.sdmmc1_cmd gpio121 INPUT_PULLUP | MODE0 */
+ 0x118 0x118 /* sdmmc1_dat0.sdmmc1_dat0 gpio122 INPUT_PULLUP | MODE0 */
+ 0x11a 0x118 /* sdmmc1_dat1.sdmmc1_dat1 gpio123 INPUT_PULLUP | MODE0 */
+ 0x11c 0x118 /* sdmmc1_dat2.sdmmc1_dat2 gpio124 INPUT_PULLUP | MODE0 */
+ 0x11e 0x118 /* sdmmc1_dat3.sdmmc1_dat3 gpio125 INPUT_PULLUP | MODE0 */
+ 0x120 0x7 /* sdmmc1_dat4.safe_mode gpio126 OUTPUT | MODE7 */
+ 0x122 0x7 /* sdmmc1_dat5.safe_mode gpio127 OUTPUT | MODE7 */
+ 0x124 0x7 /* sdmmc1_dat6.safe_mode gpio128 OUTPUT | MODE7 */
+ 0x126 0x7 /* sdmmc1_dat7.safe_mode gpio129 OUTPUT | MODE7 */
+ 0x128 0x118 /* sdmmc2_clk.sdmmc2_clk gpio130 INPUT_PULLUP | MODE0 */
+ 0x12a 0x118 /* sdmmc2_cmd.sdmmc2_cmd gpio131 INPUT_PULLUP | MODE0 */
+ 0x12c 0x118 /* sdmmc2_dat0.sdmmc2_dat0 gpio132 INPUT_PULLUP | MODE0 */
+ 0x12e 0x118 /* sdmmc2_dat1.sdmmc2_dat1 gpio133 INPUT_PULLUP | MODE0 */
+ 0x130 0x118 /* sdmmc2_dat2.sdmmc2_dat2 gpio134 INPUT_PULLUP | MODE0 */
+ 0x132 0x118 /* sdmmc2_dat3.sdmmc2_dat3 gpio135 INPUT_PULLUP | MODE0 */
+ 0x134 0x118 /* sdmmc2_dat4.sdmmc2_dat4 gpio136 INPUT_PULLUP | MODE0 */
+ 0x136 0x118 /* sdmmc2_dat5.sdmmc2_dat5 gpio137 INPUT_PULLUP | MODE0 */
+ 0x138 0x118 /* sdmmc2_dat6.sdmmc2_dat6 gpio138 INPUT_PULLUP | MODE0 */
+ 0x13a 0x118 /* sdmmc2_dat7.sdmmc2_dat7 gpio139 INPUT_PULLUP | MODE0 */
+ 0x232 0x100 /* sdrc_cke0.sdrc_cke0 gpio0 INPUT | MODE0 */
+ 0x234 0x100 /* sdrc_cke1.sdrc_cke1 gpio0 INPUT | MODE0 */
+ 0x1b2 0x17 /* sys_clkout2.safe_mode gpio186 OUTPUT | MODE7 */
+ 0x1b0 0xc118 /* sys_nirq.sys_nirq gpio0 INPUT_PULLUP | OFF_WAKEUPENABLE | MODE0 */
+ 0x150 0x111 /* uart1_cts.ssi1_rdy_tx gpio150 INPUT | MODE1 */
+ 0x14e 0x1 /* uart1_rts.ssi1_flag_tx gpio149 OUTPUT | MODE1 */
+ 0x152 0x4104 /* uart1_rx.gpio_151 gpio151 INPUT | OFF_WAKEUPENABLE | MODE4 */
+ 0x14c 0x1 /* uart1_tx.ssi1_dat_tx gpio148 OUTPUT | MODE1 */
+ 0x144 0x118 /* uart2_cts.uart2_cts gpio144 INPUT_PULLUP | MODE0 */
+ 0x146 0x0 /* uart2_rts.uart2_rts gpio145 OUTPUT | MODE0 */
+ 0x14a 0x100 /* uart2_rx.uart2_rx gpio147 INPUT | MODE0 */
+ 0x148 0x0 /* uart2_tx.uart2_tx gpio146 OUTPUT | MODE0 */
+ 0x16a 0x4 /* uart3_cts_rctx.gpio_163 gpio163 OUTPUT | MODE4 */
+ 0x16c 0x4 /* uart3_rts_sd.gpio_164 gpio164 OUTPUT | MODE4 */
+ 0x16e 0x100 /* uart3_rx_irrx.uart3_rx_irrx gpio165 INPUT | MODE0 */
+ 0x170 0x0 /* uart3_tx_irtx.uart3_tx_irtx gpio166 OUTPUT | MODE0 */
+ >;
+ };
+};
+
+&omap3_pmx_wkup {
+ pinctrl-names = "default";
+ pinctrl-0 = <
+ &wakeup_pins
+ >;
+
+ wakeup_pins: pinmux_wakeup_pins {
+ pinctrl-single,pins = <
+ /* FIXME: something needs to be substracted from these...? */
+ 0x9d0 0x100 /* i2c4_scl.i2c4_scl gpio0 INPUT | MODE0 */
+ 0x9d2 0x100 /* i2c4_sda.i2c4_sda gpio0 INPUT | MODE0 */
+ 0x9f4 0x100 /* jtag_emu0.jtag_emu0 gpio11 INPUT | MODE0 */
+ 0x9f6 0x100 /* jtag_emu1.jtag_emu1 gpio31 INPUT | MODE0 */
+ 0x9da 0x100 /* sys_boot0.sys_boot0 gpio2 INPUT | MODE0 */
+ 0x9dc 0x100 /* sys_boot1.sys_boot1 gpio3 INPUT | MODE0 */
+ 0x9de 0x100 /* sys_boot2.sys_boot2 gpio4 INPUT | MODE0 */
+ 0x9e0 0x100 /* sys_boot3.sys_boot3 gpio5 INPUT | MODE0 */
+ 0x9e2 0x100 /* sys_boot4.sys_boot4 gpio6 INPUT | MODE0 */
+ 0x9e4 0x104 /* sys_boot5.gpio_7 gpio7 INPUT | MODE4 */
+ 0x9e6 0x100 /* sys_boot6.sys_boot6 gpio8 INPUT | MODE0 */
+ 0x9ea 0x17 /* sys_clkout1.safe_mode gpio10 OUTPUT | MODE7 */
+ 0x9d6 0x0 /* sys_clkreq.sys_clkreq gpio1 OUTPUT | MODE0 */
+ 0x9d8 0x118 /* sys_nreswarm.sys_nreswarm gpio30 INPUT_PULLUP | MODE0 */
+ 0x9e8 0x0 /* sys_off_mode.sys_off_mode gpio9 OUTPUT | MODE0 */
+
+ >;
+ };
+};
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 996ffc3..1acfd6c 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -129,10 +129,11 @@ void __init omap_generic_init(void)
#if 1
regulator_use_dummy_regulator();
+#if 0
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-
spi_register_board_info(rx51_peripherals_spi_board_info,
ARRAY_SIZE(rx51_peripherals_spi_board_info));
+#endif
#else
rx51_video_init();
#endif
diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c
index 022bff0..b9cc21c 100644
--- a/arch/arm/mach-omap2/board-rx51-video.c
+++ b/arch/arm/mach-omap2/board-rx51-video.c
@@ -66,15 +66,17 @@ static struct omap_dss_board_info rx51_dss_board_info = {
.default_device = &rx51_lcd_device,
};
-static int __init rx51_video_init(void)
+int __init rx51_video_init(void)
{
if (!of_machine_is_compatible("nokia,omap3-n900"))
return 0;
+#if 0
if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT)) {
pr_err("%s cannot configure MUX for LCD RESET\n", __func__);
return 0;
}
+#endif
if (gpio_request_one(RX51_LCD_RESET_GPIO, GPIOF_OUT_INIT_HIGH,
"LCD ACX565AKM reset")) {
diff --git a/dmesg.qemu b/dmesg.qemu
index 39403b9..3d5ad31 100644
--- a/dmesg.qemu
+++ b/dmesg.qemu
@@ -34,7 +34,6 @@ Booting secondary
Machine: Nokia N900 (Flattened Device Tree), model: Nokia N900
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 65280
- free_area_init_node: node 0, pgdat c07ba978, node_mem_map c081e000
Normal zone: 512 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 65280 pages, LIFO batch:15
@@ -55,8 +54,6 @@ Booting secondary
lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
- .data : 0xc0766000 - 0xc07be258 ( 353 kB)
- .bss : 0xc07be258 - 0xc081d1ec ( 380 kB)
SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:16 nr_irqs:16 16
IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
@@ -74,7 +71,6 @@ Booting secondary
Machine: Nokia N900 (Flattened Device Tree), model: Nokia N900
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 65280
- free_area_init_node: node 0, pgdat c07ba978, node_mem_map c081e000
Normal zone: 512 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 65280 pages, LIFO batch:15
@@ -95,8 +91,6 @@ Booting secondary
lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
- .data : 0xc0766000 - 0xc07be258 ( 353 kB)
- .bss : 0xc07be258 - 0xc081d1ec ( 380 kB)
SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:16 nr_irqs:16 16
IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
@@ -113,45 +107,73 @@ Booting secondary
Initializing cgroup subsys freezer
Initializing cgroup subsys blkio
CPU: Testing write buffer coherency: ok
- Setting up static identity map for 0xc0533710 - 0xc0533768
devtmpfs: initialized
omap_hdq1w_reset: hdq1w: softreset failed (waited 10000 usec)
pinctrl core: initialized pinctrl subsystem
+ reg-dummy reg-dummy: no of_node; not parsing pinctrl DT
regulator-dummy: no parameters
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
+ omap_l3_smx omap_l3_smx.0: no of_node; not parsing pinctrl DT
Reprogramming SDRC clock to 332000000 Hz
OMAP GPIO hardware version 2.5
platform 49022000.mcbsp: alias fck already exists
platform 49024000.mcbsp: alias fck already exists
- omap_mux_init: Add partition: #1: core, flags: 4
No ATAGs?
hw-breakpoint: debug architecture 0x0 unsupported.
+ omap_dma_system omap_dma_system.0: no of_node; not parsing pinctrl DT
+ omap_dma_system omap_dma_system.0: using pinctrl dummy state (default)
OMAP DMA hardware revision 4.0
arm-pmu: alias fck already exists
bio: create slab <bio-0> at 0
+ omap-dma-engine omap-dma-engine: no of_node; not parsing pinctrl DT
+ omap-dma-engine omap-dma-engine: using pinctrl dummy state (default)
omap-dma-engine omap-dma-engine: OMAP DMA engine driver
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
+ omap_i2c i2c.13: using pinctrl dummy state (default)
+ omap_i2c i2c.13: obtain a copy of previously claimed pinctrl
omap_i2c i2c.13: bus 0 rev3.3 at 2200 kHz
+ twl 0-0048: using pinctrl dummy state (default)
+ dummy 0-0049: no of_node; not parsing pinctrl DT
+ dummy 0-0049: using pinctrl dummy state (default)
+ dummy 0-004a: no of_node; not parsing pinctrl DT
+ dummy 0-004a: using pinctrl dummy state (default)
+ dummy 0-004b: no of_node; not parsing pinctrl DT
+ dummy 0-004b: using pinctrl dummy state (default)
twl 0-0048: PIH (irq 23) chaining IRQs 336..344
twl 0-0048: power (irq 341) chaining IRQs 344..351
+ twl_reg regulator-vdac.23: using pinctrl dummy state (default)
VDAC: 1800 mV
+ twl_reg regulator-vpll2.24: using pinctrl dummy state (default)
VPLL2: 1800 mV
+ twl_reg regulator-vmmc1.25: using pinctrl dummy state (default)
VMMC1: 1850 <--> 3150 mV at 1850 mV
+ twl_reg regulator-vusb1v5.26: using pinctrl dummy state (default)
VUSB1V5: 1500 mV
+ twl_reg regulator-vusb1v8.27: using pinctrl dummy state (default)
VUSB1V8: 1800 mV
+ twl_reg regulator-vusb3v1.28: using pinctrl dummy state (default)
VUSB3V1: 3100 mV
+ twl_reg regulator-vsim.29: using pinctrl dummy state (default)
VSIM: 1800 <--> 3000 mV at 1800 mV
+ twl4030_gpio gpio.30: using pinctrl dummy state (default)
twl4030_gpio gpio.30: gpio (irq 336) chaining IRQs 352..369
+ twl4030_usb twl4030-usb.31: using pinctrl dummy state (default)
twl4030_usb twl4030-usb.31: HW_CONDITIONS 0x04/4; link 1
omap_musb_mailbox: musb core is not yet initialized
twl4030_usb twl4030-usb.31: Initialized TWL4030 USB module
+ omap_i2c i2c.14: using pinctrl dummy state (default)
+ omap_i2c i2c.14: obtain a copy of previously claimed pinctrl
omap_i2c i2c.14: bus 1 rev3.3 at 400 kHz
+ omap_i2c i2c.15: using pinctrl dummy state (default)
+ omap_i2c i2c.15: obtain a copy of previously claimed pinctrl
omap_i2c i2c.15: bus 2 rev3.3 at 100 kHz
media: Linux media interface: v0.10
Linux video capture interface: v2.00
+ omap-iommu omap-iommu.0: no of_node; not parsing pinctrl DT
+ omap-iommu omap-iommu.0: using pinctrl dummy state (default)
omap-iommu omap-iommu.0: mmu_isp registered
Advanced Linux Sound Architecture Driver Initialized.
Bluetooth: Core ver 2.16
@@ -170,13 +192,1024 @@ Booting secondary
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
+ arm-pmu arm-pmu: no of_node; not parsing pinctrl DT
+ arm-pmu arm-pmu: using pinctrl dummy state (default)
CPU PMU: probing PMU on CPU 0
hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 1 counters available
+ omap_timer 49032000.timer: using pinctrl dummy state (default)
+ omap_timer 49034000.timer: using pinctrl dummy state (default)
+ omap_timer 49036000.timer: using pinctrl dummy state (default)
+ omap_timer 49038000.timer: using pinctrl dummy state (default)
+ omap_timer 4903a000.timer: using pinctrl dummy state (default)
+ omap_timer 4903c000.timer: using pinctrl dummy state (default)
+ omap_timer 4903e000.timer: using pinctrl dummy state (default)
+ omap_timer 49040000.timer: using pinctrl dummy state (default)
+ omap_timer 48086000.timer: using pinctrl dummy state (default)
+ omap_timer 48088000.timer: using pinctrl dummy state (default)
+ omap_timer 48304000.timer: using pinctrl dummy state (default)
+ alarmtimer alarmtimer: no of_node; not parsing pinctrl DT
+ alarmtimer alarmtimer: using pinctrl dummy state (default)
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
msgmni has been set to 489
io scheduler noop registered
io scheduler cfq registered (default)
+ pinctrl-single 48002030.pinmux: allocating 742 pins
+ pinctrl-single 48002030.pinmux: try to register 742 pins ...
+ pinctrl core: registered pin 0 (48002030) on pinctrl-single
+ pinctrl core: registered pin 1 (48002032) on pinctrl-single
+ pinctrl core: registered pin 2 (48002034) on pinctrl-single
+ pinctrl core: registered pin 3 (48002036) on pinctrl-single
+ pinctrl core: registered pin 4 (48002038) on pinctrl-single
+ pinctrl core: registered pin 5 (4800203a) on pinctrl-single
+ pinctrl core: registered pin 6 (4800203c) on pinctrl-single
+ pinctrl core: registered pin 7 (4800203e) on pinctrl-single
+ pinctrl core: registered pin 8 (48002040) on pinctrl-single
+ pinctrl core: registered pin 9 (48002042) on pinctrl-single
+ pinctrl core: registered pin 10 (48002044) on pinctrl-single
+ pinctrl core: registered pin 11 (48002046) on pinctrl-single
+ pinctrl core: registered pin 12 (48002048) on pinctrl-single
+ pinctrl core: registered pin 13 (4800204a) on pinctrl-single
+ pinctrl core: registered pin 14 (4800204c) on pinctrl-single
+ pinctrl core: registered pin 15 (4800204e) on pinctrl-single
+ pinctrl core: registered pin 16 (48002050) on pinctrl-single
+ pinctrl core: registered pin 17 (48002052) on pinctrl-single
+ pinctrl core: registered pin 18 (48002054) on pinctrl-single
+ pinctrl core: registered pin 19 (48002056) on pinctrl-single
+ pinctrl core: registered pin 20 (48002058) on pinctrl-single
+ pinctrl core: registered pin 21 (4800205a) on pinctrl-single
+ pinctrl core: registered pin 22 (4800205c) on pinctrl-single
+ pinctrl core: registered pin 23 (4800205e) on pinctrl-single
+ pinctrl core: registered pin 24 (48002060) on pinctrl-single
+ pinctrl core: registered pin 25 (48002062) on pinctrl-single
+ pinctrl core: registered pin 26 (48002064) on pinctrl-single
+ pinctrl core: registered pin 27 (48002066) on pinctrl-single
+ pinctrl core: registered pin 28 (48002068) on pinctrl-single
+ pinctrl core: registered pin 29 (4800206a) on pinctrl-single
+ pinctrl core: registered pin 30 (4800206c) on pinctrl-single
+ pinctrl core: registered pin 31 (4800206e) on pinctrl-single
+ pinctrl core: registered pin 32 (48002070) on pinctrl-single
+ pinctrl core: registered pin 33 (48002072) on pinctrl-single
+ pinctrl core: registered pin 34 (48002074) on pinctrl-single
+ pinctrl core: registered pin 35 (48002076) on pinctrl-single
+ pinctrl core: registered pin 36 (48002078) on pinctrl-single
+ pinctrl core: registered pin 37 (4800207a) on pinctrl-single
+ pinctrl core: registered pin 38 (4800207c) on pinctrl-single
+ pinctrl core: registered pin 39 (4800207e) on pinctrl-single
+ pinctrl core: registered pin 40 (48002080) on pinctrl-single
+ pinctrl core: registered pin 41 (48002082) on pinctrl-single
+ pinctrl core: registered pin 42 (48002084) on pinctrl-single
+ pinctrl core: registered pin 43 (48002086) on pinctrl-single
+ pinctrl core: registered pin 44 (48002088) on pinctrl-single
+ pinctrl core: registered pin 45 (4800208a) on pinctrl-single
+ pinctrl core: registered pin 46 (4800208c) on pinctrl-single
+ pinctrl core: registered pin 47 (4800208e) on pinctrl-single
+ pinctrl core: registered pin 48 (48002090) on pinctrl-single
+ pinctrl core: registered pin 49 (48002092) on pinctrl-single
+ pinctrl core: registered pin 50 (48002094) on pinctrl-single
+ pinctrl core: registered pin 51 (48002096) on pinctrl-single
+ pinctrl core: registered pin 52 (48002098) on pinctrl-single
+ pinctrl core: registered pin 53 (4800209a) on pinctrl-single
+ pinctrl core: registered pin 54 (4800209c) on pinctrl-single
+ pinctrl core: registered pin 55 (4800209e) on pinctrl-single
+ pinctrl core: registered pin 56 (480020a0) on pinctrl-single
+ pinctrl core: registered pin 57 (480020a2) on pinctrl-single
+ pinctrl core: registered pin 58 (480020a4) on pinctrl-single
+ pinctrl core: registered pin 59 (480020a6) on pinctrl-single
+ pinctrl core: registered pin 60 (480020a8) on pinctrl-single
+ pinctrl core: registered pin 61 (480020aa) on pinctrl-single
+ pinctrl core: registered pin 62 (480020ac) on pinctrl-single
+ pinctrl core: registered pin 63 (480020ae) on pinctrl-single
+ pinctrl core: registered pin 64 (480020b0) on pinctrl-single
+ pinctrl core: registered pin 65 (480020b2) on pinctrl-single
+ pinctrl core: registered pin 66 (480020b4) on pinctrl-single
+ pinctrl core: registered pin 67 (480020b6) on pinctrl-single
+ pinctrl core: registered pin 68 (480020b8) on pinctrl-single
+ pinctrl core: registered pin 69 (480020ba) on pinctrl-single
+ pinctrl core: registered pin 70 (480020bc) on pinctrl-single
+ pinctrl core: registered pin 71 (480020be) on pinctrl-single
+ pinctrl core: registered pin 72 (480020c0) on pinctrl-single
+ pinctrl core: registered pin 73 (480020c2) on pinctrl-single
+ pinctrl core: registered pin 74 (480020c4) on pinctrl-single
+ pinctrl core: registered pin 75 (480020c6) on pinctrl-single
+ pinctrl core: registered pin 76 (480020c8) on pinctrl-single
+ pinctrl core: registered pin 77 (480020ca) on pinctrl-single
+ pinctrl core: registered pin 78 (480020cc) on pinctrl-single
+ pinctrl core: registered pin 79 (480020ce) on pinctrl-single
+ pinctrl core: registered pin 80 (480020d0) on pinctrl-single
+ pinctrl core: registered pin 81 (480020d2) on pinctrl-single
+ pinctrl core: registered pin 82 (480020d4) on pinctrl-single
+ pinctrl core: registered pin 83 (480020d6) on pinctrl-single
+ pinctrl core: registered pin 84 (480020d8) on pinctrl-single
+ pinctrl core: registered pin 85 (480020da) on pinctrl-single
+ pinctrl core: registered pin 86 (480020dc) on pinctrl-single
+ pinctrl core: registered pin 87 (480020de) on pinctrl-single
+ pinctrl core: registered pin 88 (480020e0) on pinctrl-single
+ pinctrl core: registered pin 89 (480020e2) on pinctrl-single
+ pinctrl core: registered pin 90 (480020e4) on pinctrl-single
+ pinctrl core: registered pin 91 (480020e6) on pinctrl-single
+ pinctrl core: registered pin 92 (480020e8) on pinctrl-single
+ pinctrl core: registered pin 93 (480020ea) on pinctrl-single
+ pinctrl core: registered pin 94 (480020ec) on pinctrl-single
+ pinctrl core: registered pin 95 (480020ee) on pinctrl-single
+ pinctrl core: registered pin 96 (480020f0) on pinctrl-single
+ pinctrl core: registered pin 97 (480020f2) on pinctrl-single
+ pinctrl core: registered pin 98 (480020f4) on pinctrl-single
+ pinctrl core: registered pin 99 (480020f6) on pinctrl-single
+ pinctrl core: registered pin 100 (480020f8) on pinctrl-single
+ pinctrl core: registered pin 101 (480020fa) on pinctrl-single
+ pinctrl core: registered pin 102 (480020fc) on pinctrl-single
+ pinctrl core: registered pin 103 (480020fe) on pinctrl-single
+ pinctrl core: registered pin 104 (48002100) on pinctrl-single
+ pinctrl core: registered pin 105 (48002102) on pinctrl-single
+ pinctrl core: registered pin 106 (48002104) on pinctrl-single
+ pinctrl core: registered pin 107 (48002106) on pinctrl-single
+ pinctrl core: registered pin 108 (48002108) on pinctrl-single
+ pinctrl core: registered pin 109 (4800210a) on pinctrl-single
+ pinctrl core: registered pin 110 (4800210c) on pinctrl-single
+ pinctrl core: registered pin 111 (4800210e) on pinctrl-single
+ pinctrl core: registered pin 112 (48002110) on pinctrl-single
+ pinctrl core: registered pin 113 (48002112) on pinctrl-single
+ pinctrl core: registered pin 114 (48002114) on pinctrl-single
+ pinctrl core: registered pin 115 (48002116) on pinctrl-single
+ pinctrl core: registered pin 116 (48002118) on pinctrl-single
+ pinctrl core: registered pin 117 (4800211a) on pinctrl-single
+ pinctrl core: registered pin 118 (4800211c) on pinctrl-single
+ pinctrl core: registered pin 119 (4800211e) on pinctrl-single
+ pinctrl core: registered pin 120 (48002120) on pinctrl-single
+ pinctrl core: registered pin 121 (48002122) on pinctrl-single
+ pinctrl core: registered pin 122 (48002124) on pinctrl-single
+ pinctrl core: registered pin 123 (48002126) on pinctrl-single
+ pinctrl core: registered pin 124 (48002128) on pinctrl-single
+ pinctrl core: registered pin 125 (4800212a) on pinctrl-single
+ pinctrl core: registered pin 126 (4800212c) on pinctrl-single
+ pinctrl core: registered pin 127 (4800212e) on pinctrl-single
+ pinctrl core: registered pin 128 (48002130) on pinctrl-single
+ pinctrl core: registered pin 129 (48002132) on pinctrl-single
+ pinctrl core: registered pin 130 (48002134) on pinctrl-single
+ pinctrl core: registered pin 131 (48002136) on pinctrl-single
+ pinctrl core: registered pin 132 (48002138) on pinctrl-single
+ pinctrl core: registered pin 133 (4800213a) on pinctrl-single
+ pinctrl core: registered pin 134 (4800213c) on pinctrl-single
+ pinctrl core: registered pin 135 (4800213e) on pinctrl-single
+ pinctrl core: registered pin 136 (48002140) on pinctrl-single
+ pinctrl core: registered pin 137 (48002142) on pinctrl-single
+ pinctrl core: registered pin 138 (48002144) on pinctrl-single
+ pinctrl core: registered pin 139 (48002146) on pinctrl-single
+ pinctrl core: registered pin 140 (48002148) on pinctrl-single
+ pinctrl core: registered pin 141 (4800214a) on pinctrl-single
+ pinctrl core: registered pin 142 (4800214c) on pinctrl-single
+ pinctrl core: registered pin 143 (4800214e) on pinctrl-single
+ pinctrl core: registered pin 144 (48002150) on pinctrl-single
+ pinctrl core: registered pin 145 (48002152) on pinctrl-single
+ pinctrl core: registered pin 146 (48002154) on pinctrl-single
+ pinctrl core: registered pin 147 (48002156) on pinctrl-single
+ pinctrl core: registered pin 148 (48002158) on pinctrl-single
+ pinctrl core: registered pin 149 (4800215a) on pinctrl-single
+ pinctrl core: registered pin 150 (4800215c) on pinctrl-single
+ pinctrl core: registered pin 151 (4800215e) on pinctrl-single
+ pinctrl core: registered pin 152 (48002160) on pinctrl-single
+ pinctrl core: registered pin 153 (48002162) on pinctrl-single
+ pinctrl core: registered pin 154 (48002164) on pinctrl-single
+ pinctrl core: registered pin 155 (48002166) on pinctrl-single
+ pinctrl core: registered pin 156 (48002168) on pinctrl-single
+ pinctrl core: registered pin 157 (4800216a) on pinctrl-single
+ pinctrl core: registered pin 158 (4800216c) on pinctrl-single
+ pinctrl core: registered pin 159 (4800216e) on pinctrl-single
+ pinctrl core: registered pin 160 (48002170) on pinctrl-single
+ pinctrl core: registered pin 161 (48002172) on pinctrl-single
+ pinctrl core: registered pin 162 (48002174) on pinctrl-single
+ pinctrl core: registered pin 163 (48002176) on pinctrl-single
+ pinctrl core: registered pin 164 (48002178) on pinctrl-single
+ pinctrl core: registered pin 165 (4800217a) on pinctrl-single
+ pinctrl core: registered pin 166 (4800217c) on pinctrl-single
+ pinctrl core: registered pin 167 (4800217e) on pinctrl-single
+ pinctrl core: registered pin 168 (48002180) on pinctrl-single
+ pinctrl core: registered pin 169 (48002182) on pinctrl-single
+ pinctrl core: registered pin 170 (48002184) on pinctrl-single
+ pinctrl core: registered pin 171 (48002186) on pinctrl-single
+ pinctrl core: registered pin 172 (48002188) on pinctrl-single
+ pinctrl core: registered pin 173 (4800218a) on pinctrl-single
+ pinctrl core: registered pin 174 (4800218c) on pinctrl-single
+ pinctrl core: registered pin 175 (4800218e) on pinctrl-single
+ pinctrl core: registered pin 176 (48002190) on pinctrl-single
+ pinctrl core: registered pin 177 (48002192) on pinctrl-single
+ pinctrl core: registered pin 178 (48002194) on pinctrl-single
+ pinctrl core: registered pin 179 (48002196) on pinctrl-single
+ pinctrl core: registered pin 180 (48002198) on pinctrl-single
+ pinctrl core: registered pin 181 (4800219a) on pinctrl-single
+ pinctrl core: registered pin 182 (4800219c) on pinctrl-single
+ pinctrl core: registered pin 183 (4800219e) on pinctrl-single
+ pinctrl core: registered pin 184 (480021a0) on pinctrl-single
+ pinctrl core: registered pin 185 (480021a2) on pinctrl-single
+ pinctrl core: registered pin 186 (480021a4) on pinctrl-single
+ pinctrl core: registered pin 187 (480021a6) on pinctrl-single
+ pinctrl core: registered pin 188 (480021a8) on pinctrl-single
+ pinctrl core: registered pin 189 (480021aa) on pinctrl-single
+ pinctrl core: registered pin 190 (480021ac) on pinctrl-single
+ pinctrl core: registered pin 191 (480021ae) on pinctrl-single
+ pinctrl core: registered pin 192 (480021b0) on pinctrl-single
+ pinctrl core: registered pin 193 (480021b2) on pinctrl-single
+ pinctrl core: registered pin 194 (480021b4) on pinctrl-single
+ pinctrl core: registered pin 195 (480021b6) on pinctrl-single
+ pinctrl core: registered pin 196 (480021b8) on pinctrl-single
+ pinctrl core: registered pin 197 (480021ba) on pinctrl-single
+ pinctrl core: registered pin 198 (480021bc) on pinctrl-single
+ pinctrl core: registered pin 199 (480021be) on pinctrl-single
+ pinctrl core: registered pin 200 (480021c0) on pinctrl-single
+ pinctrl core: registered pin 201 (480021c2) on pinctrl-single
+ pinctrl core: registered pin 202 (480021c4) on pinctrl-single
+ pinctrl core: registered pin 203 (480021c6) on pinctrl-single
+ pinctrl core: registered pin 204 (480021c8) on pinctrl-single
+ pinctrl core: registered pin 205 (480021ca) on pinctrl-single
+ pinctrl core: registered pin 206 (480021cc) on pinctrl-single
+ pinctrl core: registered pin 207 (480021ce) on pinctrl-single
+ pinctrl core: registered pin 208 (480021d0) on pinctrl-single
+ pinctrl core: registered pin 209 (480021d2) on pinctrl-single
+ pinctrl core: registered pin 210 (480021d4) on pinctrl-single
+ pinctrl core: registered pin 211 (480021d6) on pinctrl-single
+ pinctrl core: registered pin 212 (480021d8) on pinctrl-single
+ pinctrl core: registered pin 213 (480021da) on pinctrl-single
+ pinctrl core: registered pin 214 (480021dc) on pinctrl-single
+ pinctrl core: registered pin 215 (480021de) on pinctrl-single
+ pinctrl core: registered pin 216 (480021e0) on pinctrl-single
+ pinctrl core: registered pin 217 (480021e2) on pinctrl-single
+ pinctrl core: registered pin 218 (480021e4) on pinctrl-single
+ pinctrl core: registered pin 219 (480021e6) on pinctrl-single
+ pinctrl core: registered pin 220 (480021e8) on pinctrl-single
+ pinctrl core: registered pin 221 (480021ea) on pinctrl-single
+ pinctrl core: registered pin 222 (480021ec) on pinctrl-single
+ pinctrl core: registered pin 223 (480021ee) on pinctrl-single
+ pinctrl core: registered pin 224 (480021f0) on pinctrl-single
+ pinctrl core: registered pin 225 (480021f2) on pinctrl-single
+ pinctrl core: registered pin 226 (480021f4) on pinctrl-single
+ pinctrl core: registered pin 227 (480021f6) on pinctrl-single
+ pinctrl core: registered pin 228 (480021f8) on pinctrl-single
+ pinctrl core: registered pin 229 (480021fa) on pinctrl-single
+ pinctrl core: registered pin 230 (480021fc) on pinctrl-single
+ pinctrl core: registered pin 231 (480021fe) on pinctrl-single
+ pinctrl core: registered pin 232 (48002200) on pinctrl-single
+ pinctrl core: registered pin 233 (48002202) on pinctrl-single
+ pinctrl core: registered pin 234 (48002204) on pinctrl-single
+ pinctrl core: registered pin 235 (48002206) on pinctrl-single
+ pinctrl core: registered pin 236 (48002208) on pinctrl-single
+ pinctrl core: registered pin 237 (4800220a) on pinctrl-single
+ pinctrl core: registered pin 238 (4800220c) on pinctrl-single
+ pinctrl core: registered pin 239 (4800220e) on pinctrl-single
+ pinctrl core: registered pin 240 (48002210) on pinctrl-single
+ pinctrl core: registered pin 241 (48002212) on pinctrl-single
+ pinctrl core: registered pin 242 (48002214) on pinctrl-single
+ pinctrl core: registered pin 243 (48002216) on pinctrl-single
+ pinctrl core: registered pin 244 (48002218) on pinctrl-single
+ pinctrl core: registered pin 245 (4800221a) on pinctrl-single
+ pinctrl core: registered pin 246 (4800221c) on pinctrl-single
+ pinctrl core: registered pin 247 (4800221e) on pinctrl-single
+ pinctrl core: registered pin 248 (48002220) on pinctrl-single
+ pinctrl core: registered pin 249 (48002222) on pinctrl-single
+ pinctrl core: registered pin 250 (48002224) on pinctrl-single
+ pinctrl core: registered pin 251 (48002226) on pinctrl-single
+ pinctrl core: registered pin 252 (48002228) on pinctrl-single
+ pinctrl core: registered pin 253 (4800222a) on pinctrl-single
+ pinctrl core: registered pin 254 (4800222c) on pinctrl-single
+ pinctrl core: registered pin 255 (4800222e) on pinctrl-single
+ pinctrl core: registered pin 256 (48002230) on pinctrl-single
+ pinctrl core: registered pin 257 (48002232) on pinctrl-single
+ pinctrl core: registered pin 258 (48002234) on pinctrl-single
+ pinctrl core: registered pin 259 (48002236) on pinctrl-single
+ pinctrl core: registered pin 260 (48002238) on pinctrl-single
+ pinctrl core: registered pin 261 (4800223a) on pinctrl-single
+ pinctrl core: registered pin 262 (4800223c) on pinctrl-single
+ pinctrl core: registered pin 263 (4800223e) on pinctrl-single
+ pinctrl core: registered pin 264 (48002240) on pinctrl-single
+ pinctrl core: registered pin 265 (48002242) on pinctrl-single
+ pinctrl core: registered pin 266 (48002244) on pinctrl-single
+ pinctrl core: registered pin 267 (48002246) on pinctrl-single
+ pinctrl core: registered pin 268 (48002248) on pinctrl-single
+ pinctrl core: registered pin 269 (4800224a) on pinctrl-single
+ pinctrl core: registered pin 270 (4800224c) on pinctrl-single
+ pinctrl core: registered pin 271 (4800224e) on pinctrl-single
+ pinctrl core: registered pin 272 (48002250) on pinctrl-single
+ pinctrl core: registered pin 273 (48002252) on pinctrl-single
+ pinctrl core: registered pin 274 (48002254) on pinctrl-single
+ pinctrl core: registered pin 275 (48002256) on pinctrl-single
+ pinctrl core: registered pin 276 (48002258) on pinctrl-single
+ pinctrl core: registered pin 277 (4800225a) on pinctrl-single
+ pinctrl core: registered pin 278 (4800225c) on pinctrl-single
+ pinctrl core: registered pin 279 (4800225e) on pinctrl-single
+ pinctrl core: registered pin 280 (48002260) on pinctrl-single
+ pinctrl core: registered pin 281 (48002262) on pinctrl-single
+ pinctrl core: registered pin 282 (48002264) on pinctrl-single
+ pinctrl core: registered pin 283 (48002266) on pinctrl-single
+ pinctrl core: registered pin 284 (48002268) on pinctrl-single
+ pinctrl core: registered pin 285 (4800226a) on pinctrl-single
+ pinctrl core: registered pin 286 (4800226c) on pinctrl-single
+ pinctrl core: registered pin 287 (4800226e) on pinctrl-single
+ pinctrl core: registered pin 288 (48002270) on pinctrl-single
+ pinctrl core: registered pin 289 (48002272) on pinctrl-single
+ pinctrl core: registered pin 290 (48002274) on pinctrl-single
+ pinctrl core: registered pin 291 (48002276) on pinctrl-single
+ pinctrl core: registered pin 292 (48002278) on pinctrl-single
+ pinctrl core: registered pin 293 (4800227a) on pinctrl-single
+ pinctrl core: registered pin 294 (4800227c) on pinctrl-single
+ pinctrl core: registered pin 295 (4800227e) on pinctrl-single
+ pinctrl core: registered pin 296 (48002280) on pinctrl-single
+ pinctrl core: registered pin 297 (48002282) on pinctrl-single
+ pinctrl core: registered pin 298 (48002284) on pinctrl-single
+ pinctrl core: registered pin 299 (48002286) on pinctrl-single
+ pinctrl core: registered pin 300 (48002288) on pinctrl-single
+ pinctrl core: registered pin 301 (4800228a) on pinctrl-single
+ pinctrl core: registered pin 302 (4800228c) on pinctrl-single
+ pinctrl core: registered pin 303 (4800228e) on pinctrl-single
+ pinctrl core: registered pin 304 (48002290) on pinctrl-single
+ pinctrl core: registered pin 305 (48002292) on pinctrl-single
+ pinctrl core: registered pin 306 (48002294) on pinctrl-single
+ pinctrl core: registered pin 307 (48002296) on pinctrl-single
+ pinctrl core: registered pin 308 (48002298) on pinctrl-single
+ pinctrl core: registered pin 309 (4800229a) on pinctrl-single
+ pinctrl core: registered pin 310 (4800229c) on pinctrl-single
+ pinctrl core: registered pin 311 (4800229e) on pinctrl-single
+ pinctrl core: registered pin 312 (480022a0) on pinctrl-single
+ pinctrl core: registered pin 313 (480022a2) on pinctrl-single
+ pinctrl core: registered pin 314 (480022a4) on pinctrl-single
+ pinctrl core: registered pin 315 (480022a6) on pinctrl-single
+ pinctrl core: registered pin 316 (480022a8) on pinctrl-single
+ pinctrl core: registered pin 317 (480022aa) on pinctrl-single
+ pinctrl core: registered pin 318 (480022ac) on pinctrl-single
+ pinctrl core: registered pin 319 (480022ae) on pinctrl-single
+ pinctrl core: registered pin 320 (480022b0) on pinctrl-single
+ pinctrl core: registered pin 321 (480022b2) on pinctrl-single
+ pinctrl core: registered pin 322 (480022b4) on pinctrl-single
+ pinctrl core: registered pin 323 (480022b6) on pinctrl-single
+ pinctrl core: registered pin 324 (480022b8) on pinctrl-single
+ pinctrl core: registered pin 325 (480022ba) on pinctrl-single
+ pinctrl core: registered pin 326 (480022bc) on pinctrl-single
+ pinctrl core: registered pin 327 (480022be) on pinctrl-single
+ pinctrl core: registered pin 328 (480022c0) on pinctrl-single
+ pinctrl core: registered pin 329 (480022c2) on pinctrl-single
+ pinctrl core: registered pin 330 (480022c4) on pinctrl-single
+ pinctrl core: registered pin 331 (480022c6) on pinctrl-single
+ pinctrl core: registered pin 332 (480022c8) on pinctrl-single
+ pinctrl core: registered pin 333 (480022ca) on pinctrl-single
+ pinctrl core: registered pin 334 (480022cc) on pinctrl-single
+ pinctrl core: registered pin 335 (480022ce) on pinctrl-single
+ pinctrl core: registered pin 336 (480022d0) on pinctrl-single
+ pinctrl core: registered pin 337 (480022d2) on pinctrl-single
+ pinctrl core: registered pin 338 (480022d4) on pinctrl-single
+ pinctrl core: registered pin 339 (480022d6) on pinctrl-single
+ pinctrl core: registered pin 340 (480022d8) on pinctrl-single
+ pinctrl core: registered pin 341 (480022da) on pinctrl-single
+ pinctrl core: registered pin 342 (480022dc) on pinctrl-single
+ pinctrl core: registered pin 343 (480022de) on pinctrl-single
+ pinctrl core: registered pin 344 (480022e0) on pinctrl-single
+ pinctrl core: registered pin 345 (480022e2) on pinctrl-single
+ pinctrl core: registered pin 346 (480022e4) on pinctrl-single
+ pinctrl core: registered pin 347 (480022e6) on pinctrl-single
+ pinctrl core: registered pin 348 (480022e8) on pinctrl-single
+ pinctrl core: registered pin 349 (480022ea) on pinctrl-single
+ pinctrl core: registered pin 350 (480022ec) on pinctrl-single
+ pinctrl core: registered pin 351 (480022ee) on pinctrl-single
+ pinctrl core: registered pin 352 (480022f0) on pinctrl-single
+ pinctrl core: registered pin 353 (480022f2) on pinctrl-single
+ pinctrl core: registered pin 354 (480022f4) on pinctrl-single
+ pinctrl core: registered pin 355 (480022f6) on pinctrl-single
+ pinctrl core: registered pin 356 (480022f8) on pinctrl-single
+ pinctrl core: registered pin 357 (480022fa) on pinctrl-single
+ pinctrl core: registered pin 358 (480022fc) on pinctrl-single
+ pinctrl core: registered pin 359 (480022fe) on pinctrl-single
+ pinctrl core: registered pin 360 (48002300) on pinctrl-single
+ pinctrl core: registered pin 361 (48002302) on pinctrl-single
+ pinctrl core: registered pin 362 (48002304) on pinctrl-single
+ pinctrl core: registered pin 363 (48002306) on pinctrl-single
+ pinctrl core: registered pin 364 (48002308) on pinctrl-single
+ pinctrl core: registered pin 365 (4800230a) on pinctrl-single
+ pinctrl core: registered pin 366 (4800230c) on pinctrl-single
+ pinctrl core: registered pin 367 (4800230e) on pinctrl-single
+ pinctrl core: registered pin 368 (48002310) on pinctrl-single
+ pinctrl core: registered pin 369 (48002312) on pinctrl-single
+ pinctrl core: registered pin 370 (48002314) on pinctrl-single
+ pinctrl core: registered pin 371 (48002316) on pinctrl-single
+ pinctrl core: registered pin 372 (48002318) on pinctrl-single
+ pinctrl core: registered pin 373 (4800231a) on pinctrl-single
+ pinctrl core: registered pin 374 (4800231c) on pinctrl-single
+ pinctrl core: registered pin 375 (4800231e) on pinctrl-single
+ pinctrl core: registered pin 376 (48002320) on pinctrl-single
+ pinctrl core: registered pin 377 (48002322) on pinctrl-single
+ pinctrl core: registered pin 378 (48002324) on pinctrl-single
+ pinctrl core: registered pin 379 (48002326) on pinctrl-single
+ pinctrl core: registered pin 380 (48002328) on pinctrl-single
+ pinctrl core: registered pin 381 (4800232a) on pinctrl-single
+ pinctrl core: registered pin 382 (4800232c) on pinctrl-single
+ pinctrl core: registered pin 383 (4800232e) on pinctrl-single
+ pinctrl core: registered pin 384 (48002330) on pinctrl-single
+ pinctrl core: registered pin 385 (48002332) on pinctrl-single
+ pinctrl core: registered pin 386 (48002334) on pinctrl-single
+ pinctrl core: registered pin 387 (48002336) on pinctrl-single
+ pinctrl core: registered pin 388 (48002338) on pinctrl-single
+ pinctrl core: registered pin 389 (4800233a) on pinctrl-single
+ pinctrl core: registered pin 390 (4800233c) on pinctrl-single
+ pinctrl core: registered pin 391 (4800233e) on pinctrl-single
+ pinctrl core: registered pin 392 (48002340) on pinctrl-single
+ pinctrl core: registered pin 393 (48002342) on pinctrl-single
+ pinctrl core: registered pin 394 (48002344) on pinctrl-single
+ pinctrl core: registered pin 395 (48002346) on pinctrl-single
+ pinctrl core: registered pin 396 (48002348) on pinctrl-single
+ pinctrl core: registered pin 397 (4800234a) on pinctrl-single
+ pinctrl core: registered pin 398 (4800234c) on pinctrl-single
+ pinctrl core: registered pin 399 (4800234e) on pinctrl-single
+ pinctrl core: registered pin 400 (48002350) on pinctrl-single
+ pinctrl core: registered pin 401 (48002352) on pinctrl-single
+ pinctrl core: registered pin 402 (48002354) on pinctrl-single
+ pinctrl core: registered pin 403 (48002356) on pinctrl-single
+ pinctrl core: registered pin 404 (48002358) on pinctrl-single
+ pinctrl core: registered pin 405 (4800235a) on pinctrl-single
+ pinctrl core: registered pin 406 (4800235c) on pinctrl-single
+ pinctrl core: registered pin 407 (4800235e) on pinctrl-single
+ pinctrl core: registered pin 408 (48002360) on pinctrl-single
+ pinctrl core: registered pin 409 (48002362) on pinctrl-single
+ pinctrl core: registered pin 410 (48002364) on pinctrl-single
+ pinctrl core: registered pin 411 (48002366) on pinctrl-single
+ pinctrl core: registered pin 412 (48002368) on pinctrl-single
+ pinctrl core: registered pin 413 (4800236a) on pinctrl-single
+ pinctrl core: registered pin 414 (4800236c) on pinctrl-single
+ pinctrl core: registered pin 415 (4800236e) on pinctrl-single
+ pinctrl core: registered pin 416 (48002370) on pinctrl-single
+ pinctrl core: registered pin 417 (48002372) on pinctrl-single
+ pinctrl core: registered pin 418 (48002374) on pinctrl-single
+ pinctrl core: registered pin 419 (48002376) on pinctrl-single
+ pinctrl core: registered pin 420 (48002378) on pinctrl-single
+ pinctrl core: registered pin 421 (4800237a) on pinctrl-single
+ pinctrl core: registered pin 422 (4800237c) on pinctrl-single
+ pinctrl core: registered pin 423 (4800237e) on pinctrl-single
+ pinctrl core: registered pin 424 (48002380) on pinctrl-single
+ pinctrl core: registered pin 425 (48002382) on pinctrl-single
+ pinctrl core: registered pin 426 (48002384) on pinctrl-single
+ pinctrl core: registered pin 427 (48002386) on pinctrl-single
+ pinctrl core: registered pin 428 (48002388) on pinctrl-single
+ pinctrl core: registered pin 429 (4800238a) on pinctrl-single
+ pinctrl core: registered pin 430 (4800238c) on pinctrl-single
+ pinctrl core: registered pin 431 (4800238e) on pinctrl-single
+ pinctrl core: registered pin 432 (48002390) on pinctrl-single
+ pinctrl core: registered pin 433 (48002392) on pinctrl-single
+ pinctrl core: registered pin 434 (48002394) on pinctrl-single
+ pinctrl core: registered pin 435 (48002396) on pinctrl-single
+ pinctrl core: registered pin 436 (48002398) on pinctrl-single
+ pinctrl core: registered pin 437 (4800239a) on pinctrl-single
+ pinctrl core: registered pin 438 (4800239c) on pinctrl-single
+ pinctrl core: registered pin 439 (4800239e) on pinctrl-single
+ pinctrl core: registered pin 440 (480023a0) on pinctrl-single
+ pinctrl core: registered pin 441 (480023a2) on pinctrl-single
+ pinctrl core: registered pin 442 (480023a4) on pinctrl-single
+ pinctrl core: registered pin 443 (480023a6) on pinctrl-single
+ pinctrl core: registered pin 444 (480023a8) on pinctrl-single
+ pinctrl core: registered pin 445 (480023aa) on pinctrl-single
+ pinctrl core: registered pin 446 (480023ac) on pinctrl-single
+ pinctrl core: registered pin 447 (480023ae) on pinctrl-single
+ pinctrl core: registered pin 448 (480023b0) on pinctrl-single
+ pinctrl core: registered pin 449 (480023b2) on pinctrl-single
+ pinctrl core: registered pin 450 (480023b4) on pinctrl-single
+ pinctrl core: registered pin 451 (480023b6) on pinctrl-single
+ pinctrl core: registered pin 452 (480023b8) on pinctrl-single
+ pinctrl core: registered pin 453 (480023ba) on pinctrl-single
+ pinctrl core: registered pin 454 (480023bc) on pinctrl-single
+ pinctrl core: registered pin 455 (480023be) on pinctrl-single
+ pinctrl core: registered pin 456 (480023c0) on pinctrl-single
+ pinctrl core: registered pin 457 (480023c2) on pinctrl-single
+ pinctrl core: registered pin 458 (480023c4) on pinctrl-single
+ pinctrl core: registered pin 459 (480023c6) on pinctrl-single
+ pinctrl core: registered pin 460 (480023c8) on pinctrl-single
+ pinctrl core: registered pin 461 (480023ca) on pinctrl-single
+ pinctrl core: registered pin 462 (480023cc) on pinctrl-single
+ pinctrl core: registered pin 463 (480023ce) on pinctrl-single
+ pinctrl core: registered pin 464 (480023d0) on pinctrl-single
+ pinctrl core: registered pin 465 (480023d2) on pinctrl-single
+ pinctrl core: registered pin 466 (480023d4) on pinctrl-single
+ pinctrl core: registered pin 467 (480023d6) on pinctrl-single
+ pinctrl core: registered pin 468 (480023d8) on pinctrl-single
+ pinctrl core: registered pin 469 (480023da) on pinctrl-single
+ pinctrl core: registered pin 470 (480023dc) on pinctrl-single
+ pinctrl core: registered pin 471 (480023de) on pinctrl-single
+ pinctrl core: registered pin 472 (480023e0) on pinctrl-single
+ pinctrl core: registered pin 473 (480023e2) on pinctrl-single
+ pinctrl core: registered pin 474 (480023e4) on pinctrl-single
+ pinctrl core: registered pin 475 (480023e6) on pinctrl-single
+ pinctrl core: registered pin 476 (480023e8) on pinctrl-single
+ pinctrl core: registered pin 477 (480023ea) on pinctrl-single
+ pinctrl core: registered pin 478 (480023ec) on pinctrl-single
+ pinctrl core: registered pin 479 (480023ee) on pinctrl-single
+ pinctrl core: registered pin 480 (480023f0) on pinctrl-single
+ pinctrl core: registered pin 481 (480023f2) on pinctrl-single
+ pinctrl core: registered pin 482 (480023f4) on pinctrl-single
+ pinctrl core: registered pin 483 (480023f6) on pinctrl-single
+ pinctrl core: registered pin 484 (480023f8) on pinctrl-single
+ pinctrl core: registered pin 485 (480023fa) on pinctrl-single
+ pinctrl core: registered pin 486 (480023fc) on pinctrl-single
+ pinctrl core: registered pin 487 (480023fe) on pinctrl-single
+ pinctrl core: registered pin 488 (48002400) on pinctrl-single
+ pinctrl core: registered pin 489 (48002402) on pinctrl-single
+ pinctrl core: registered pin 490 (48002404) on pinctrl-single
+ pinctrl core: registered pin 491 (48002406) on pinctrl-single
+ pinctrl core: registered pin 492 (48002408) on pinctrl-single
+ pinctrl core: registered pin 493 (4800240a) on pinctrl-single
+ pinctrl core: registered pin 494 (4800240c) on pinctrl-single
+ pinctrl core: registered pin 495 (4800240e) on pinctrl-single
+ pinctrl core: registered pin 496 (48002410) on pinctrl-single
+ pinctrl core: registered pin 497 (48002412) on pinctrl-single
+ pinctrl core: registered pin 498 (48002414) on pinctrl-single
+ pinctrl core: registered pin 499 (48002416) on pinctrl-single
+ pinctrl core: registered pin 500 (48002418) on pinctrl-single
+ pinctrl core: registered pin 501 (4800241a) on pinctrl-single
+ pinctrl core: registered pin 502 (4800241c) on pinctrl-single
+ pinctrl core: registered pin 503 (4800241e) on pinctrl-single
+ pinctrl core: registered pin 504 (48002420) on pinctrl-single
+ pinctrl core: registered pin 505 (48002422) on pinctrl-single
+ pinctrl core: registered pin 506 (48002424) on pinctrl-single
+ pinctrl core: registered pin 507 (48002426) on pinctrl-single
+ pinctrl core: registered pin 508 (48002428) on pinctrl-single
+ pinctrl core: registered pin 509 (4800242a) on pinctrl-single
+ pinctrl core: registered pin 510 (4800242c) on pinctrl-single
+ pinctrl core: registered pin 511 (4800242e) on pinctrl-single
+ pinctrl core: registered pin 512 (48002430) on pinctrl-single
+ pinctrl core: registered pin 513 (48002432) on pinctrl-single
+ pinctrl core: registered pin 514 (48002434) on pinctrl-single
+ pinctrl core: registered pin 515 (48002436) on pinctrl-single
+ pinctrl core: registered pin 516 (48002438) on pinctrl-single
+ pinctrl core: registered pin 517 (4800243a) on pinctrl-single
+ pinctrl core: registered pin 518 (4800243c) on pinctrl-single
+ pinctrl core: registered pin 519 (4800243e) on pinctrl-single
+ pinctrl core: registered pin 520 (48002440) on pinctrl-single
+ pinctrl core: registered pin 521 (48002442) on pinctrl-single
+ pinctrl core: registered pin 522 (48002444) on pinctrl-single
+ pinctrl core: registered pin 523 (48002446) on pinctrl-single
+ pinctrl core: registered pin 524 (48002448) on pinctrl-single
+ pinctrl core: registered pin 525 (4800244a) on pinctrl-single
+ pinctrl core: registered pin 526 (4800244c) on pinctrl-single
+ pinctrl core: registered pin 527 (4800244e) on pinctrl-single
+ pinctrl core: registered pin 528 (48002450) on pinctrl-single
+ pinctrl core: registered pin 529 (48002452) on pinctrl-single
+ pinctrl core: registered pin 530 (48002454) on pinctrl-single
+ pinctrl core: registered pin 531 (48002456) on pinctrl-single
+ pinctrl core: registered pin 532 (48002458) on pinctrl-single
+ pinctrl core: registered pin 533 (4800245a) on pinctrl-single
+ pinctrl core: registered pin 534 (4800245c) on pinctrl-single
+ pinctrl core: registered pin 535 (4800245e) on pinctrl-single
+ pinctrl core: registered pin 536 (48002460) on pinctrl-single
+ pinctrl core: registered pin 537 (48002462) on pinctrl-single
+ pinctrl core: registered pin 538 (48002464) on pinctrl-single
+ pinctrl core: registered pin 539 (48002466) on pinctrl-single
+ pinctrl core: registered pin 540 (48002468) on pinctrl-single
+ pinctrl core: registered pin 541 (4800246a) on pinctrl-single
+ pinctrl core: registered pin 542 (4800246c) on pinctrl-single
+ pinctrl core: registered pin 543 (4800246e) on pinctrl-single
+ pinctrl core: registered pin 544 (48002470) on pinctrl-single
+ pinctrl core: registered pin 545 (48002472) on pinctrl-single
+ pinctrl core: registered pin 546 (48002474) on pinctrl-single
+ pinctrl core: registered pin 547 (48002476) on pinctrl-single
+ pinctrl core: registered pin 548 (48002478) on pinctrl-single
+ pinctrl core: registered pin 549 (4800247a) on pinctrl-single
+ pinctrl core: registered pin 550 (4800247c) on pinctrl-single
+ pinctrl core: registered pin 551 (4800247e) on pinctrl-single
+ pinctrl core: registered pin 552 (48002480) on pinctrl-single
+ pinctrl core: registered pin 553 (48002482) on pinctrl-single
+ pinctrl core: registered pin 554 (48002484) on pinctrl-single
+ pinctrl core: registered pin 555 (48002486) on pinctrl-single
+ pinctrl core: registered pin 556 (48002488) on pinctrl-single
+ pinctrl core: registered pin 557 (4800248a) on pinctrl-single
+ pinctrl core: registered pin 558 (4800248c) on pinctrl-single
+ pinctrl core: registered pin 559 (4800248e) on pinctrl-single
+ pinctrl core: registered pin 560 (48002490) on pinctrl-single
+ pinctrl core: registered pin 561 (48002492) on pinctrl-single
+ pinctrl core: registered pin 562 (48002494) on pinctrl-single
+ pinctrl core: registered pin 563 (48002496) on pinctrl-single
+ pinctrl core: registered pin 564 (48002498) on pinctrl-single
+ pinctrl core: registered pin 565 (4800249a) on pinctrl-single
+ pinctrl core: registered pin 566 (4800249c) on pinctrl-single
+ pinctrl core: registered pin 567 (4800249e) on pinctrl-single
+ pinctrl core: registered pin 568 (480024a0) on pinctrl-single
+ pinctrl core: registered pin 569 (480024a2) on pinctrl-single
+ pinctrl core: registered pin 570 (480024a4) on pinctrl-single
+ pinctrl core: registered pin 571 (480024a6) on pinctrl-single
+ pinctrl core: registered pin 572 (480024a8) on pinctrl-single
+ pinctrl core: registered pin 573 (480024aa) on pinctrl-single
+ pinctrl core: registered pin 574 (480024ac) on pinctrl-single
+ pinctrl core: registered pin 575 (480024ae) on pinctrl-single
+ pinctrl core: registered pin 576 (480024b0) on pinctrl-single
+ pinctrl core: registered pin 577 (480024b2) on pinctrl-single
+ pinctrl core: registered pin 578 (480024b4) on pinctrl-single
+ pinctrl core: registered pin 579 (480024b6) on pinctrl-single
+ pinctrl core: registered pin 580 (480024b8) on pinctrl-single
+ pinctrl core: registered pin 581 (480024ba) on pinctrl-single
+ pinctrl core: registered pin 582 (480024bc) on pinctrl-single
+ pinctrl core: registered pin 583 (480024be) on pinctrl-single
+ pinctrl core: registered pin 584 (480024c0) on pinctrl-single
+ pinctrl core: registered pin 585 (480024c2) on pinctrl-single
+ pinctrl core: registered pin 586 (480024c4) on pinctrl-single
+ pinctrl core: registered pin 587 (480024c6) on pinctrl-single
+ pinctrl core: registered pin 588 (480024c8) on pinctrl-single
+ pinctrl core: registered pin 589 (480024ca) on pinctrl-single
+ pinctrl core: registered pin 590 (480024cc) on pinctrl-single
+ pinctrl core: registered pin 591 (480024ce) on pinctrl-single
+ pinctrl core: registered pin 592 (480024d0) on pinctrl-single
+ pinctrl core: registered pin 593 (480024d2) on pinctrl-single
+ pinctrl core: registered pin 594 (480024d4) on pinctrl-single
+ pinctrl core: registered pin 595 (480024d6) on pinctrl-single
+ pinctrl core: registered pin 596 (480024d8) on pinctrl-single
+ pinctrl core: registered pin 597 (480024da) on pinctrl-single
+ pinctrl core: registered pin 598 (480024dc) on pinctrl-single
+ pinctrl core: registered pin 599 (480024de) on pinctrl-single
+ pinctrl core: registered pin 600 (480024e0) on pinctrl-single
+ pinctrl core: registered pin 601 (480024e2) on pinctrl-single
+ pinctrl core: registered pin 602 (480024e4) on pinctrl-single
+ pinctrl core: registered pin 603 (480024e6) on pinctrl-single
+ pinctrl core: registered pin 604 (480024e8) on pinctrl-single
+ pinctrl core: registered pin 605 (480024ea) on pinctrl-single
+ pinctrl core: registered pin 606 (480024ec) on pinctrl-single
+ pinctrl core: registered pin 607 (480024ee) on pinctrl-single
+ pinctrl core: registered pin 608 (480024f0) on pinctrl-single
+ pinctrl core: registered pin 609 (480024f2) on pinctrl-single
+ pinctrl core: registered pin 610 (480024f4) on pinctrl-single
+ pinctrl core: registered pin 611 (480024f6) on pinctrl-single
+ pinctrl core: registered pin 612 (480024f8) on pinctrl-single
+ pinctrl core: registered pin 613 (480024fa) on pinctrl-single
+ pinctrl core: registered pin 614 (480024fc) on pinctrl-single
+ pinctrl core: registered pin 615 (480024fe) on pinctrl-single
+ pinctrl core: registered pin 616 (48002500) on pinctrl-single
+ pinctrl core: registered pin 617 (48002502) on pinctrl-single
+ pinctrl core: registered pin 618 (48002504) on pinctrl-single
+ pinctrl core: registered pin 619 (48002506) on pinctrl-single
+ pinctrl core: registered pin 620 (48002508) on pinctrl-single
+ pinctrl core: registered pin 621 (4800250a) on pinctrl-single
+ pinctrl core: registered pin 622 (4800250c) on pinctrl-single
+ pinctrl core: registered pin 623 (4800250e) on pinctrl-single
+ pinctrl core: registered pin 624 (48002510) on pinctrl-single
+ pinctrl core: registered pin 625 (48002512) on pinctrl-single
+ pinctrl core: registered pin 626 (48002514) on pinctrl-single
+ pinctrl core: registered pin 627 (48002516) on pinctrl-single
+ pinctrl core: registered pin 628 (48002518) on pinctrl-single
+ pinctrl core: registered pin 629 (4800251a) on pinctrl-single
+ pinctrl core: registered pin 630 (4800251c) on pinctrl-single
+ pinctrl core: registered pin 631 (4800251e) on pinctrl-single
+ pinctrl core: registered pin 632 (48002520) on pinctrl-single
+ pinctrl core: registered pin 633 (48002522) on pinctrl-single
+ pinctrl core: registered pin 634 (48002524) on pinctrl-single
+ pinctrl core: registered pin 635 (48002526) on pinctrl-single
+ pinctrl core: registered pin 636 (48002528) on pinctrl-single
+ pinctrl core: registered pin 637 (4800252a) on pinctrl-single
+ pinctrl core: registered pin 638 (4800252c) on pinctrl-single
+ pinctrl core: registered pin 639 (4800252e) on pinctrl-single
+ pinctrl core: registered pin 640 (48002530) on pinctrl-single
+ pinctrl core: registered pin 641 (48002532) on pinctrl-single
+ pinctrl core: registered pin 642 (48002534) on pinctrl-single
+ pinctrl core: registered pin 643 (48002536) on pinctrl-single
+ pinctrl core: registered pin 644 (48002538) on pinctrl-single
+ pinctrl core: registered pin 645 (4800253a) on pinctrl-single
+ pinctrl core: registered pin 646 (4800253c) on pinctrl-single
+ pinctrl core: registered pin 647 (4800253e) on pinctrl-single
+ pinctrl core: registered pin 648 (48002540) on pinctrl-single
+ pinctrl core: registered pin 649 (48002542) on pinctrl-single
+ pinctrl core: registered pin 650 (48002544) on pinctrl-single
+ pinctrl core: registered pin 651 (48002546) on pinctrl-single
+ pinctrl core: registered pin 652 (48002548) on pinctrl-single
+ pinctrl core: registered pin 653 (4800254a) on pinctrl-single
+ pinctrl core: registered pin 654 (4800254c) on pinctrl-single
+ pinctrl core: registered pin 655 (4800254e) on pinctrl-single
+ pinctrl core: registered pin 656 (48002550) on pinctrl-single
+ pinctrl core: registered pin 657 (48002552) on pinctrl-single
+ pinctrl core: registered pin 658 (48002554) on pinctrl-single
+ pinctrl core: registered pin 659 (48002556) on pinctrl-single
+ pinctrl core: registered pin 660 (48002558) on pinctrl-single
+ pinctrl core: registered pin 661 (4800255a) on pinctrl-single
+ pinctrl core: registered pin 662 (4800255c) on pinctrl-single
+ pinctrl core: registered pin 663 (4800255e) on pinctrl-single
+ pinctrl core: registered pin 664 (48002560) on pinctrl-single
+ pinctrl core: registered pin 665 (48002562) on pinctrl-single
+ pinctrl core: registered pin 666 (48002564) on pinctrl-single
+ pinctrl core: registered pin 667 (48002566) on pinctrl-single
+ pinctrl core: registered pin 668 (48002568) on pinctrl-single
+ pinctrl core: registered pin 669 (4800256a) on pinctrl-single
+ pinctrl core: registered pin 670 (4800256c) on pinctrl-single
+ pinctrl core: registered pin 671 (4800256e) on pinctrl-single
+ pinctrl core: registered pin 672 (48002570) on pinctrl-single
+ pinctrl core: registered pin 673 (48002572) on pinctrl-single
+ pinctrl core: registered pin 674 (48002574) on pinctrl-single
+ pinctrl core: registered pin 675 (48002576) on pinctrl-single
+ pinctrl core: registered pin 676 (48002578) on pinctrl-single
+ pinctrl core: registered pin 677 (4800257a) on pinctrl-single
+ pinctrl core: registered pin 678 (4800257c) on pinctrl-single
+ pinctrl core: registered pin 679 (4800257e) on pinctrl-single
+ pinctrl core: registered pin 680 (48002580) on pinctrl-single
+ pinctrl core: registered pin 681 (48002582) on pinctrl-single
+ pinctrl core: registered pin 682 (48002584) on pinctrl-single
+ pinctrl core: registered pin 683 (48002586) on pinctrl-single
+ pinctrl core: registered pin 684 (48002588) on pinctrl-single
+ pinctrl core: registered pin 685 (4800258a) on pinctrl-single
+ pinctrl core: registered pin 686 (4800258c) on pinctrl-single
+ pinctrl core: registered pin 687 (4800258e) on pinctrl-single
+ pinctrl core: registered pin 688 (48002590) on pinctrl-single
+ pinctrl core: registered pin 689 (48002592) on pinctrl-single
+ pinctrl core: registered pin 690 (48002594) on pinctrl-single
+ pinctrl core: registered pin 691 (48002596) on pinctrl-single
+ pinctrl core: registered pin 692 (48002598) on pinctrl-single
+ pinctrl core: registered pin 693 (4800259a) on pinctrl-single
+ pinctrl core: registered pin 694 (4800259c) on pinctrl-single
+ pinctrl core: registered pin 695 (4800259e) on pinctrl-single
+ pinctrl core: registered pin 696 (480025a0) on pinctrl-single
+ pinctrl core: registered pin 697 (480025a2) on pinctrl-single
+ pinctrl core: registered pin 698 (480025a4) on pinctrl-single
+ pinctrl core: registered pin 699 (480025a6) on pinctrl-single
+ pinctrl core: registered pin 700 (480025a8) on pinctrl-single
+ pinctrl core: registered pin 701 (480025aa) on pinctrl-single
+ pinctrl core: registered pin 702 (480025ac) on pinctrl-single
+ pinctrl core: registered pin 703 (480025ae) on pinctrl-single
+ pinctrl core: registered pin 704 (480025b0) on pinctrl-single
+ pinctrl core: registered pin 705 (480025b2) on pinctrl-single
+ pinctrl core: registered pin 706 (480025b4) on pinctrl-single
+ pinctrl core: registered pin 707 (480025b6) on pinctrl-single
+ pinctrl core: registered pin 708 (480025b8) on pinctrl-single
+ pinctrl core: registered pin 709 (480025ba) on pinctrl-single
+ pinctrl core: registered pin 710 (480025bc) on pinctrl-single
+ pinctrl core: registered pin 711 (480025be) on pinctrl-single
+ pinctrl core: registered pin 712 (480025c0) on pinctrl-single
+ pinctrl core: registered pin 713 (480025c2) on pinctrl-single
+ pinctrl core: registered pin 714 (480025c4) on pinctrl-single
+ pinctrl core: registered pin 715 (480025c6) on pinctrl-single
+ pinctrl core: registered pin 716 (480025c8) on pinctrl-single
+ pinctrl core: registered pin 717 (480025ca) on pinctrl-single
+ pinctrl core: registered pin 718 (480025cc) on pinctrl-single
+ pinctrl core: registered pin 719 (480025ce) on pinctrl-single
+ pinctrl core: registered pin 720 (480025d0) on pinctrl-single
+ pinctrl core: registered pin 721 (480025d2) on pinctrl-single
+ pinctrl core: registered pin 722 (480025d4) on pinctrl-single
+ pinctrl core: registered pin 723 (480025d6) on pinctrl-single
+ pinctrl core: registered pin 724 (480025d8) on pinctrl-single
+ pinctrl core: registered pin 725 (480025da) on pinctrl-single
+ pinctrl core: registered pin 726 (480025dc) on pinctrl-single
+ pinctrl core: registered pin 727 (480025de) on pinctrl-single
+ pinctrl core: registered pin 728 (480025e0) on pinctrl-single
+ pinctrl core: registered pin 729 (480025e2) on pinctrl-single
+ pinctrl core: registered pin 730 (480025e4) on pinctrl-single
+ pinctrl core: registered pin 731 (480025e6) on pinctrl-single
+ pinctrl core: registered pin 732 (480025e8) on pinctrl-single
+ pinctrl core: registered pin 733 (480025ea) on pinctrl-single
+ pinctrl core: registered pin 734 (480025ec) on pinctrl-single
+ pinctrl core: registered pin 735 (480025ee) on pinctrl-single
+ pinctrl core: registered pin 736 (480025f0) on pinctrl-single
+ pinctrl core: registered pin 737 (480025f2) on pinctrl-single
+ pinctrl core: registered pin 738 (480025f4) on pinctrl-single
+ pinctrl core: registered pin 739 (480025f6) on pinctrl-single
+ pinctrl core: registered pin 740 (480025f8) on pinctrl-single
+ pinctrl core: registered pin 741 (480025fa) on pinctrl-single
+ pinctrl core: add 1 pinmux maps
+ pinctrl-single 48002030.pinmux: found group selector 0 for pinmux_all_pins
+ pinctrl-single 48002030.pinmux: request pin 115 (48002116) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 116 (48002118) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 125 (4800212a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 126 (4800212c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 117 (4800211a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 118 (4800211c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 119 (4800211e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 120 (48002120) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 121 (48002122) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 122 (48002124) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 123 (48002126) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 124 (48002128) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 114 (48002114) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 110 (4800210c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 113 (48002112) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 129 (48002132) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 111 (4800210e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 128 (48002130) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 112 (48002110) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 127 (4800212e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 130 (48002134) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 132 (48002138) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 131 (48002136) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 133 (4800213a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 85 (480020da) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 86 (480020dc) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 87 (480020de) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 96 (480020f0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 97 (480020f2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 98 (480020f4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 99 (480020f6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 100 (480020f8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 101 (480020fa) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 102 (480020fc) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 103 (480020fe) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 104 (48002100) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 105 (48002102) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 106 (48002104) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 107 (48002106) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 108 (48002108) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 109 (4800210a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 88 (480020e0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 89 (480020e2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 90 (480020e4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 91 (480020e6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 92 (480020e8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 93 (480020ea) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 94 (480020ec) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 95 (480020ee) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 83 (480020d6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 82 (480020d4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 84 (480020d8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 724 (480025d8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 725 (480025da) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 726 (480025dc) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 727 (480025de) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 736 (480025f0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 737 (480025f2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 738 (480025f4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 739 (480025f6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 740 (480025f8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 741 (480025fa) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 728 (480025e0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 729 (480025e2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 730 (480025e4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 731 (480025e6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 732 (480025e8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 733 (480025ea) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 734 (480025ec) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 735 (480025ee) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 37 (4800207a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 46 (4800208c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 38 (4800207c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 39 (4800207e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 40 (48002080) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 41 (48002082) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 42 (48002084) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 43 (48002086) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 44 (48002088) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 45 (4800208a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 71 (480020be) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 57 (480020a2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 58 (480020a4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 59 (480020a6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 60 (480020a8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 61 (480020aa) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 62 (480020ac) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 55 (4800209e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 56 (480020a0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 75 (480020c6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 76 (480020c8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 64 (480020b0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 65 (480020b2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 66 (480020b4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 67 (480020b6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 68 (480020b8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 69 (480020ba) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 70 (480020bc) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 77 (480020ca) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 79 (480020ce) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 80 (480020d0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 81 (480020d2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 203 (480021c6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 185 (480021a2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 189 (480021aa) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 190 (480021ac) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 191 (480021ae) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 192 (480021b0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 193 (480021b2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 194 (480021b4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 195 (480021b6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 196 (480021b8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 187 (480021a6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 188 (480021a8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 186 (480021a4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 199 (480021be) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 200 (480021c0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 201 (480021c2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 202 (480021c4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 174 (4800218c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 180 (48002198) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 177 (48002192) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 176 (48002190) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 175 (4800218e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 179 (48002196) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 135 (4800213e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 136 (48002140) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 137 (48002142) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 134 (4800213c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 160 (48002170) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 159 (4800216e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 158 (4800216c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 161 (48002172) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 170 (48002184) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 171 (48002186) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 172 (48002188) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 173 (4800218a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 178 (48002194) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 204 (480021c8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 207 (480021ce) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 208 (480021d0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 209 (480021d2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 210 (480021d4) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 205 (480021ca) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 206 (480021cc) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 211 (480021d6) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 214 (480021dc) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 215 (480021de) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 212 (480021d8) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 213 (480021da) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 138 (48002144) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 139 (48002146) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 140 (48002148) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 141 (4800214a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 142 (4800214c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 143 (4800214e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 144 (48002150) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 145 (48002152) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 146 (48002154) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 147 (48002156) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 148 (48002158) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 149 (4800215a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 150 (4800215c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 151 (4800215e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 152 (48002160) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 153 (48002162) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 154 (48002164) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 155 (48002166) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 156 (48002168) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 157 (4800216a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 281 (48002262) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 282 (48002264) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 217 (480021e2) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 216 (480021e0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 168 (48002180) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 167 (4800217e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 169 (48002182) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 166 (4800217c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 162 (48002174) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 163 (48002176) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 165 (4800217a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 164 (48002178) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 181 (4800219a) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 182 (4800219c) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 183 (4800219e) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: request pin 184 (480021a0) for 48002030.pinmux
+ pinctrl-single 48002030.pinmux: enabling pinmux_all_pins function0
+ pinctrl-single 48002030.pinmux: using pinctrl dummy state (sleep)
+ pinctrl-single 48002030.pinmux: 742 pins at pa fa002030 size 1484
+ pinctrl-single 48002a58.pinmux: allocating 46 pins
+ pinctrl-single 48002a58.pinmux: try to register 46 pins ...
+ pinctrl core: registered pin 0 (48002a58) on pinctrl-single
+ pinctrl core: registered pin 1 (48002a5a) on pinctrl-single
+ pinctrl core: registered pin 2 (48002a5c) on pinctrl-single
+ pinctrl core: registered pin 3 (48002a5e) on pinctrl-single
+ pinctrl core: registered pin 4 (48002a60) on pinctrl-single
+ pinctrl core: registered pin 5 (48002a62) on pinctrl-single
+ pinctrl core: registered pin 6 (48002a64) on pinctrl-single
+ pinctrl core: registered pin 7 (48002a66) on pinctrl-single
+ pinctrl core: registered pin 8 (48002a68) on pinctrl-single
+ pinctrl core: registered pin 9 (48002a6a) on pinctrl-single
+ pinctrl core: registered pin 10 (48002a6c) on pinctrl-single
+ pinctrl core: registered pin 11 (48002a6e) on pinctrl-single
+ pinctrl core: registered pin 12 (48002a70) on pinctrl-single
+ pinctrl core: registered pin 13 (48002a72) on pinctrl-single
+ pinctrl core: registered pin 14 (48002a74) on pinctrl-single
+ pinctrl core: registered pin 15 (48002a76) on pinctrl-single
+ pinctrl core: registered pin 16 (48002a78) on pinctrl-single
+ pinctrl core: registered pin 17 (48002a7a) on pinctrl-single
+ pinctrl core: registered pin 18 (48002a7c) on pinctrl-single
+ pinctrl core: registered pin 19 (48002a7e) on pinctrl-single
+ pinctrl core: registered pin 20 (48002a80) on pinctrl-single
+ pinctrl core: registered pin 21 (48002a82) on pinctrl-single
+ pinctrl core: registered pin 22 (48002a84) on pinctrl-single
+ pinctrl core: registered pin 23 (48002a86) on pinctrl-single
+ pinctrl core: registered pin 24 (48002a88) on pinctrl-single
+ pinctrl core: registered pin 25 (48002a8a) on pinctrl-single
+ pinctrl core: registered pin 26 (48002a8c) on pinctrl-single
+ pinctrl core: registered pin 27 (48002a8e) on pinctrl-single
+ pinctrl core: registered pin 28 (48002a90) on pinctrl-single
+ pinctrl core: registered pin 29 (48002a92) on pinctrl-single
+ pinctrl core: registered pin 30 (48002a94) on pinctrl-single
+ pinctrl core: registered pin 31 (48002a96) on pinctrl-single
+ pinctrl core: registered pin 32 (48002a98) on pinctrl-single
+ pinctrl core: registered pin 33 (48002a9a) on pinctrl-single
+ pinctrl core: registered pin 34 (48002a9c) on pinctrl-single
+ pinctrl core: registered pin 35 (48002a9e) on pinctrl-single
+ pinctrl core: registered pin 36 (48002aa0) on pinctrl-single
+ pinctrl core: registered pin 37 (48002aa2) on pinctrl-single
+ pinctrl core: registered pin 38 (48002aa4) on pinctrl-single
+ pinctrl core: registered pin 39 (48002aa6) on pinctrl-single
+ pinctrl core: registered pin 40 (48002aa8) on pinctrl-single
+ pinctrl core: registered pin 41 (48002aaa) on pinctrl-single
+ pinctrl core: registered pin 42 (48002aac) on pinctrl-single
+ pinctrl core: registered pin 43 (48002aae) on pinctrl-single
+ pinctrl core: registered pin 44 (48002ab0) on pinctrl-single
+ pinctrl core: registered pin 45 (48002ab2) on pinctrl-single
+ pinctrl-single 48002a58.pinmux: mux offset out of range: 0x9d0 (0x5c)
+ pinctrl-single 48002a58.pinmux: could not add functions for pinmux_wakeup_pins 2512x
+ pinctrl core: add 1 pinmux maps
+ pinctrl-single 48002a58.pinmux: found group selector 0 for pinmux_wakeup_pins
+ pinctrl-single 48002a58.pinmux: enabling pinmux_wakeup_pins function0
+ pinctrl-single 48002a58.pinmux: using pinctrl dummy state (sleep)
+ pinctrl-single 48002a58.pinmux: 46 pins at pa fa002a58 size 92
+ omapvrfb omapvrfb: no of_node; not parsing pinctrl DT
+ omapvrfb omapvrfb: using pinctrl dummy state (default)
+ omapdss omapdss: no of_node; not parsing pinctrl DT
+ omapdss omapdss: using pinctrl dummy state (default)
+ omapdss_dss omapdss_dss: no of_node; not parsing pinctrl DT
+ omapdss_dss omapdss_dss: using pinctrl dummy state (default)
------------
WARNING: at drivers/video/omap2/dss/dss.c:495 dss_set_clock_div+0x90/0xbc()
clk rate mismatch
@@ -199,18 +1232,47 @@ Booting secondary
(ret_from_fork+0x14/0x3c)
---
OMAP DSS rev 2.0
+ omapdss_dispc omapdss_dispc: no of_node; not parsing pinctrl DT
+ omapdss_dispc omapdss_dispc: using pinctrl dummy state (default)
+ omapdss_sdi omapdss_sdi: no of_node; not parsing pinctrl DT
+ omapdss_sdi omapdss_sdi: using pinctrl dummy state (default)
+ omapdss_venc omapdss_venc: no of_node; not parsing pinctrl DT
+ omapdss_venc omapdss_venc: using pinctrl dummy state (default)
+ venc display1: no of_node; not parsing pinctrl DT
+ venc display1: using pinctrl dummy state (default)
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
+ serial8250 serial8250: no of_node; not parsing pinctrl DT
+ serial8250 serial8250: using pinctrl dummy state (default)
+ omap_uart serial.10: using pinctrl dummy state (default)
+ omap_uart serial.10: obtain a copy of previously claimed pinctrl
serial.10: ttyO0 at MMIO 0x4806a000 (irq = 88) is a OMAP UART0
+ omap_uart serial.11: using pinctrl dummy state (default)
+ omap_uart serial.11: obtain a copy of previously claimed pinctrl
serial.11: ttyO1 at MMIO 0x4806c000 (irq = 89) is a OMAP UART1
+ omap_uart serial.12: using pinctrl dummy state (default)
+ omap_uart serial.12: obtain a copy of previously claimed pinctrl
serial.12: ttyO2 at MMIO 0x49020000 (irq = 90) is a OMAP UART2
brd: module loaded
loop: module loaded
mtdoops: mtd device (mtddev=name/number) must be supplied
OneNAND driver initializing
+ omap2_mcspi spi.16: using pinctrl dummy state (default)
+ omap2_mcspi spi.16: obtain a copy of previously claimed pinctrl
omap-dma-engine omap-dma-engine: allocating channel for 40
omap-dma-engine omap-dma-engine: allocating channel for 39
+ acx565akm spi1.2: using pinctrl dummy state (default)
+ panel-acx565akm display0: no of_node; not parsing pinctrl DT
+ panel-acx565akm display0: using pinctrl dummy state (default)
acx565akm spi1.2: omapfb: acx565akm rev 12 LCD detected
+ omap2_mcspi spi.17: using pinctrl dummy state (default)
+ omap2_mcspi spi.17: obtain a copy of previously claimed pinctrl
+ omap2_mcspi spi.18: using pinctrl dummy state (default)
+ omap2_mcspi spi.18: obtain a copy of previously claimed pinctrl
+ omap2_mcspi spi.19: using pinctrl dummy state (default)
+ omap2_mcspi spi.19: obtain a copy of previously claimed pinctrl
OMAP SSI hw driver loaded
+ omap_ssi omap_ssi.0: no of_node; not parsing pinctrl DT
+ omap_ssi omap_ssi.0: using pinctrl dummy state (default)
port0: No Wake in support
musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
i2c /dev entries driver
@@ -219,11 +1281,22 @@ Booting secondary
using legacy suspend method
using legacy resume method
I2C driver for BCM2048 FM Radio Receiver
+ omap_wdt wdt.20: using pinctrl dummy state (default)
omap_wdt: OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
+ twl4030_wdt watchdog.22: using pinctrl dummy state (default)
omap_cpufreq_init: physical regulator not present for MPU
cpuidle: using governor ladder
cpuidle: using governor menu
ledtrig-cpu: registered to indicate activity on CPUs
+ snd-soc-dummy snd-soc-dummy: no of_node; not parsing pinctrl DT
+ snd-soc-dummy snd-soc-dummy: using pinctrl dummy state (default)
+ omap-pcm-audio omap-pcm-audio: no of_node; not parsing pinctrl DT
+ omap-pcm-audio omap-pcm-audio: using pinctrl dummy state (default)
+ omap-mcbsp 48074000.mcbsp: using pinctrl dummy state (default)
+ omap-mcbsp 49022000.mcbsp: using pinctrl dummy state (default)
+ omap-mcbsp 49024000.mcbsp: using pinctrl dummy state (default)
+ omap-mcbsp 49026000.mcbsp: using pinctrl dummy state (default)
+ omap-mcbsp 48096000.mcbsp: using pinctrl dummy state (default)
TCP: cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 17
@@ -234,7 +1307,11 @@ Booting secondary
ThumbEE CPU extension supported.
Bootup reason: pwr_key
OMAP GPIO switch handler initializing
+ gpio-switch gpio-switch: no of_node; not parsing pinctrl DT
+ gpio-switch gpio-switch: using pinctrl dummy state (default)
registered taskstats version 1
+ omapfb omapfb: no of_node; not parsing pinctrl DT
+ omapfb omapfb: using pinctrl dummy state (default)
Console: switching to colour frame buffer device 100x30
VPLL2: disabling
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
* Pavel Machek <[email protected]> [130614 14:34]:
> > * Pavel Machek <[email protected]> [130613 16:14]:
> >
> > No, there really are two instances of mux registers even on omap3,
> > but I missed that earlier while reading the docs, and with the legacy
> > mux framework it does not matter which mux domain it is. But it
> > matters for pinctrl-single as it ioremaps the ranges separately.
>
> Yes, you are right, with debugging prints it was easy to fix.
OK cool.
> > This is not a good way of doing muxing, hogging all the pins under
> > omap3_pmx_core will make it impossible to unload pinctrl-single
> > as a module, which is not nice for distros and developers.
>
> Does omap4 do it correctly? I don't see how that works :-(.
Just group the pins for each device using them. You can do:
$ grep hsmmc1 /sys/kernel/debug/omap_mux/board/core
And then you get the mmc1 pin settings that you can place under
&mmc1 entry in your board specific .dts file.
> Anyway... here's my current version, and thanks for all the help. I
> guess I'll need to figure out clocks next, because I'd really like to
> have video going on device.
Well DSS is still using pdata based init because of the DT bindings
are not ready yet.
Regards,
Tony
Hi!
After major fight, I ended up with patch that can be posted to the
mailing list without major risk, and where video still works on
emulator & real hardware...
So... here it is.
One hack that is still neccessary is old-style spi init. Without that,
I get display on emulator, but not on actual hardware. Bad. Ideas
welcome.
Oh and this all is with very reduced .config.
Not for merge, but
Signed-off-by: Pavel Machek <[email protected]>
Enjoy :-),
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..3918ae1
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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";
+};
+
+&mcspi1 {
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ };
+};
+
+/*
+&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..5aacde2 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -21,6 +21,10 @@
#include "common.h"
#include "common-board-devices.h"
#include "dss-common.h"
+#include "sdram-nokia.h"
+#include "soc.h"
+#include "board-rx51-secure.h"
+#include <linux/regulator/machine.h>
#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
#define intc_of_init NULL
@@ -35,20 +39,57 @@ static struct of_device_id omap_dt_match_table[] __initdata = {
{ }
};
-static void __init omap_generic_init(void)
+extern void rx51_init_base(void);
+extern void rx51_init(void);
+extern int __init rx51_i2c_init(void);
+extern void __init rx51_peripherals_init(void);
+extern void __init rx51_spi_init(void);
+
+
+void __init omap_generic_init(void)
{
- omap_sdrc_init(NULL, NULL);
+ struct omap_sdrc_params *sdrc_params;
+
+#ifdef CONFIG_ARM_ERRATA_430973
+ if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
+ printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
+ /* set IBE to 1 */
+ rx51_secure_update_aux_cr(1 << 6, 0);
+ } else {
+ extern bool early_print_redirect;
+
+ early_print_redirect = 1;
+ }
+#endif
+ sdrc_params = nokia_get_sdram_timings();
+ omap_sdrc_init(sdrc_params, sdrc_params);
+
+#if 1
+ printk("*** omap: populating platform\n");
of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
+#endif
/*
* 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")) {
+ regulator_use_dummy_regulator();
+ rx51_spi_init();
+ return;
+ }
+ panic("really want to init video\n");
+#endif
}
#ifdef CONFIG_SOC_OMAP2420
diff --git a/arch/arm/mach-omap2/board-rx51-compat.c b/arch/arm/mach-omap2/board-rx51-compat.c
index 0ffa909..f4223ff 100644
--- a/arch/arm/mach-omap2/board-rx51-compat.c
+++ b/arch/arm/mach-omap2/board-rx51-compat.c
@@ -131,6 +131,7 @@ static long twl4030_madc_ioctl(struct file *filp, unsigned int cmd,
switch (cmd) {
case TWL4030_MADC_IOCX_ADC_RAW_READ: {
+#if 0
struct twl4030_madc_request req;
if (par.channel >= TWL4030_MADC_MAX_CHANNELS)
return -EINVAL;
@@ -151,6 +152,9 @@ static long twl4030_madc_ioctl(struct file *filp, unsigned int cmd,
} else {
par.status = val;
}
+#else
+ panic("no raw readings from adc");
+#endif
break;
}
default:
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index 64485d7..cc6c2e8 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -1647,6 +1647,12 @@ fail:
printk(KERN_ERR "Bluetooth device registration failed\n");
}
+void __init rx51_spi_init(void)
+{
+ spi_register_board_info(rx51_peripherals_spi_board_info,
+ ARRAY_SIZE(rx51_peripherals_spi_board_info));
+}
+
void __init rx51_peripherals_init(void)
{
rx51_i2c_init();
@@ -1664,8 +1670,7 @@ void __init rx51_peripherals_init(void)
rx51_cmt_init();
rx51_ssi_init();
rx51_bt_init();
- spi_register_board_info(rx51_peripherals_spi_board_info,
- ARRAY_SIZE(rx51_peripherals_spi_board_info));
+ rx51_spi_init();
partition = omap_mux_get("core");
if (partition)
diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c
index eb66726..4c834c1 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 (!machine_is_nokia_rx51() && !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..81f7b9f 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -33,9 +33,12 @@
#include "pm.h"
#include "sdram-nokia.h"
#include "board-rx51-secure.h"
+#include "soc.h"
#define RX51_GPIO_SLEEP_IND 162
+/* This lights up left part of keyboard */
+
static struct gpio_led gpio_leds[] = {
{
.name = "sleep_ind",
@@ -107,9 +110,11 @@ static void __init rx51_init(void)
rx51_camera_init();
#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);
+ if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
+ printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
+ /* set IBE to 1 */
+ rx51_secure_update_aux_cr(1 << 6, 0);
+ }
#endif
/* Ensure SDRC pins are mux'd for self-refresh */
@@ -124,6 +129,7 @@ static void __init rx51_reserve(void)
omap_reserve();
}
+#if 0
MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
/* Maintainer: Lauri Leukkunen <[email protected]> */
.atag_offset = 0x100,
@@ -137,3 +143,4 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
.init_time = omap3_sync32k_timer_init,
.restart = omap3xxx_restart,
MACHINE_END
+#endif
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 0b6260a1..7959946 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -39,6 +39,8 @@
#include "devices.h"
#include "dma.h"
+#define OF_DT 0
+
#define L3_MODULES_MAX_LEN 12
#define L3_MODULES 3
@@ -764,7 +766,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 (!OF_DT)
pinctrl_provide_dummies();
/*
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c
index 62b5374..081838b 100644
--- a/drivers/video/omap2/dss/sdi.c
+++ b/drivers/video/omap2/dss/sdi.c
@@ -194,6 +194,7 @@ static int __init sdi_init_display(struct omap_dss_device *dssdev)
if (IS_ERR(vdds_sdi)) {
DSSERR("can't get VDDS_SDI regulator\n");
return PTR_ERR(vdds_sdi);
+// return 0;
}
sdi.vdds_sdi_reg = vdds_sdi;
diff --git a/kernel/printk.c b/kernel/printk.c
index abbdd9e..dc3c6bc 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -757,11 +757,24 @@ static int __init ignore_loglevel_setup(char *str)
return 0;
}
+bool __read_mostly early_print_redirect;
+
+static int __init early_print_setup(char *str)
+{
+ early_print_redirect = 1;
+ early_printk("copying printk to early_printk\n");
+
+ return 0;
+}
+
+
early_param("ignore_loglevel", ignore_loglevel_setup);
module_param(ignore_loglevel, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to"
"print all kernel messages to the console.");
+early_param("early_print", early_print_setup);
+
#ifdef CONFIG_BOOT_PRINTK_DELAY
static int boot_delay; /* msecs delay after each printk during bootup */
@@ -1265,6 +1278,12 @@ static void call_console_drivers(int level, const char *text, size_t len)
{
struct console *con;
+ if (early_print_redirect) {
+ int i;
+ for (i=0; i<len; i++)
+ early_printk("%c", text[i]);
+ }
+
trace_console(text, 0, len, len);
if (level >= console_loglevel && !ignore_loglevel)
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
Hi!
> > Anyway... here's my current version, and thanks for all the help. I
> > guess I'll need to figure out clocks next, because I'd really like to
> > have video going on device.
>
> Well DSS is still using pdata based init because of the DT bindings
> are not ready yet.
Yes, I know. But as nokia already initializes DSS "by hand", that
should not be a problem.
I have something working at this point: remaining issue was that to
get display working, tsc2005 binding has to be present. (That is true
both before and after devicetree conversion).
What would be procedure for merging the patch? Would you be able to
take it in one piece, or does it need to be split somehow?
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..c5538a6
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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";
+};
+
+&mcspi1 {
+ // For some reason, touchscreen is neccessary for screen to work at
+ // all on real hw. It works well without it on emulator.
+ //
+ // Also... order in the device tree actually matters here.
+ tsc2005@0 {
+ compatible = "tsc2005";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ };
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ // turbo_mode = 0,
+ // cs_per_word = 0
+ };
+};
+
+/*
+&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-rx51-compat.c b/arch/arm/mach-omap2/board-rx51-compat.c
index 0ffa909..f4223ff 100644
--- a/arch/arm/mach-omap2/board-rx51-compat.c
+++ b/arch/arm/mach-omap2/board-rx51-compat.c
@@ -131,6 +131,7 @@ static long twl4030_madc_ioctl(struct file *filp, unsigned int cmd,
switch (cmd) {
case TWL4030_MADC_IOCX_ADC_RAW_READ: {
+#if 0
struct twl4030_madc_request req;
if (par.channel >= TWL4030_MADC_MAX_CHANNELS)
return -EINVAL;
@@ -151,6 +152,9 @@ static long twl4030_madc_ioctl(struct file *filp, unsigned int cmd,
} else {
par.status = val;
}
+#else
+ panic("no raw readings from adc");
+#endif
break;
}
default:
diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c
index eb66726..4c834c1 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 (!machine_is_nokia_rx51() && !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..81f7b9f 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -33,9 +33,12 @@
#include "pm.h"
#include "sdram-nokia.h"
#include "board-rx51-secure.h"
+#include "soc.h"
#define RX51_GPIO_SLEEP_IND 162
+/* This lights up left part of keyboard */
+
static struct gpio_led gpio_leds[] = {
{
.name = "sleep_ind",
@@ -107,9 +110,11 @@ static void __init rx51_init(void)
rx51_camera_init();
#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);
+ if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
+ printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
+ /* set IBE to 1 */
+ rx51_secure_update_aux_cr(1 << 6, 0);
+ }
#endif
/* Ensure SDRC pins are mux'd for self-refresh */
@@ -124,6 +129,7 @@ static void __init rx51_reserve(void)
omap_reserve();
}
+#if 0
MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
/* Maintainer: Lauri Leukkunen <[email protected]> */
.atag_offset = 0x100,
@@ -137,3 +143,4 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
.init_time = omap3_sync32k_timer_init,
.restart = omap3xxx_restart,
MACHINE_END
+#endif
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -396,7 +396,7 @@ 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 (!machine_is_nokia_rx51() && !of_machine_is_compatible("nokia,omap3-n900"))
return -ENODEV;
err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Errata workarounds for N900 hardware actually break operation on
emulator. Fix it.
This approach was suggested by Pali Roh?r <[email protected]>
(thanks!).
(Also explain what "sleep_ind" led actually does).
Signed-off-by: Pavel Machek <[email protected]>
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 74f83a5..81f7b9f 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -33,9 +33,12 @@
#include "pm.h"
#include "sdram-nokia.h"
#include "board-rx51-secure.h"
+#include "soc.h"
#define RX51_GPIO_SLEEP_IND 162
+/* This lights up left part of keyboard */
+
static struct gpio_led gpio_leds[] = {
{
.name = "sleep_ind",
@@ -107,9 +110,11 @@ static void __init rx51_init(void)
rx51_camera_init();
#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);
+ if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
+ printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
+ /* set IBE to 1 */
+ rx51_secure_update_aux_cr(1 << 6, 0);
+ }
#endif
/* Ensure SDRC pins are mux'd for self-refresh */
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hello.
On 07/01/2013 06:03 PM, Pavel Machek wrote:
> Errata workarounds for N900 hardware actually break operation on
> emulator. Fix it.
> This approach was suggested by Pali Roh?r <[email protected]>
> (thanks!).
> (Also explain what "sleep_ind" led actually does).
Looks like unrelated change and probably worth another patch?
> Signed-off-by: Pavel Machek <[email protected]>
> diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
> index 74f83a5..81f7b9f 100644
> --- a/arch/arm/mach-omap2/board-rx51.c
> +++ b/arch/arm/mach-omap2/board-rx51.c
> @@ -33,9 +33,12 @@
> #include "pm.h"
> #include "sdram-nokia.h"
> #include "board-rx51-secure.h"
> +#include "soc.h"
>
> #define RX51_GPIO_SLEEP_IND 162
>
> +/* This lights up left part of keyboard */
> +
> static struct gpio_led gpio_leds[] = {
> {
> .name = "sleep_ind",
> @@ -107,9 +110,11 @@ static void __init rx51_init(void)
> rx51_camera_init();
>
> #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);
> + if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
> + printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
How about pr_info() instead?
WBR, Sergei
On Mon 2013-07-01 22:22:21, Sergei Shtylyov wrote:
> Hello.
>
> On 07/01/2013 06:03 PM, Pavel Machek wrote:
>
> >Errata workarounds for N900 hardware actually break operation on
> >emulator. Fix it.
>
> >This approach was suggested by Pali Roh?r <[email protected]>
> >(thanks!).
>
> >(Also explain what "sleep_ind" led actually does).
>
> Looks like unrelated change and probably worth another patch?
Separate patch for adding single-line comment?
> >--- a/arch/arm/mach-omap2/board-rx51.c
> >+++ b/arch/arm/mach-omap2/board-rx51.c
> >@@ -33,9 +33,12 @@
> > #include "pm.h"
> > #include "sdram-nokia.h"
> > #include "board-rx51-secure.h"
> >+#include "soc.h"
> >
> > #define RX51_GPIO_SLEEP_IND 162
> >
> >+/* This lights up left part of keyboard */
> >+
> > static struct gpio_led gpio_leds[] = {
...
> > #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);
> >+ if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
> >+ printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
>
> How about pr_info() instead?
<sarcasm>Would not that be unrelated change and worth of separate
patch?</sarcasm>
:-).
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hello.
On 07/01/2013 11:51 PM, Pavel Machek wrote:
>>> Errata workarounds for N900 hardware actually break operation on
>>> emulator. Fix it.
>>> This approach was suggested by Pali Roh?r <[email protected]>
>>> (thanks!).
>>> (Also explain what "sleep_ind" led actually does).
>> Looks like unrelated change and probably worth another patch?
> Separate patch for adding single-line comment?
If it's unrelated to the main patch purpose, yes. As the Russians
say: "cutlets separately and flies separately".
>>> --- a/arch/arm/mach-omap2/board-rx51.c
>>> +++ b/arch/arm/mach-omap2/board-rx51.c
>>> @@ -33,9 +33,12 @@
>>> #include "pm.h"
>>> #include "sdram-nokia.h"
>>> #include "board-rx51-secure.h"
>>> +#include "soc.h"
>>>
>>> #define RX51_GPIO_SLEEP_IND 162
>>>
>>> +/* This lights up left part of keyboard */
>>> +
>>> static struct gpio_led gpio_leds[] = {
> ...
>>> #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);
>>> + if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
>>> + printk(KERN_INFO "RX-51: Enabling ARM errata 430973 workaround.\n");
>> How about pr_info() instead?
> <sarcasm>Would not that be unrelated change and worth of separate
> patch?</sarcasm>
No, this would be a related change. Sarcasm wasted.
> :-).
> Pavel
WBR, Sergei
Hi!
> >Errata workarounds for N900 hardware actually break operation on
> >emulator. Fix it.
>
> >This approach was suggested by Pali Roh?r <[email protected]>
> >(thanks!).
>
> >(Also explain what "sleep_ind" led actually does).
>
> Looks like unrelated change and probably worth another patch?
Ok, more serious issue is that code this was modifying is not yet in
mainline. Sorry.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
We still need video & sound drivers with device tree enabled.
Signed-off-by: Pavel Machek <[email protected]>
---
Patch against 3.10.
--- linux-delme-clean//arch/arm/mach-omap2/board-rx51-video.c 2013-07-01 21:51:07.000000000 +0200
+++ linux-delme/arch/arm/mach-omap2/board-rx51-video.c 2013-07-01 22:50:27.000000000 +0200
@@ -61,7 +61,7 @@
static int __init rx51_video_init(void)
{
- if (!machine_is_nokia_rx51())
+ if (!machine_is_nokia_rx51() && !of_machine_is_compatible("nokia,omap3-n900"))
return 0;
if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT)) {
diff -urN linux-delme-clean//sound/soc/omap/rx51.c linux-delme/sound/soc/omap/rx51.c
--- linux-delme-clean//sound/soc/omap/rx51.c 2013-07-01 21:54:49.000000000 +0200
+++ linux-delme/sound/soc/omap/rx51.c 2013-07-01 22:50:27.000000000 +0200
@@ -396,7 +396,7 @@
{
int err;
- if (!machine_is_nokia_rx51())
+ if (!machine_is_nokia_rx51() && !of_machine_is_compatible("nokia,omap3-n900"))
return -ENODEV;
err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
This adds device tree with neccessary support to boot with functional
video (on both emulator and real N900 device).
Signed-off-by: Pavel Machek <[email protected]>
--- linux-delme-clean//arch/arm/boot/dts/Makefile 2013-07-01 21:51:00.000000000 +0200
+++ linux-delme/arch/arm/boot/dts/Makefile 2013-07-01 22:53:06.000000000 +0200
@@ -141,6 +141,7 @@
omap3-devkit8000.dtb \
omap3-beagle-xm.dtb \
omap3-evm.dtb \
+ omap3-n900.dtb \
omap3-tobi.dtb \
omap3-igep0020.dtb \
omap3-igep0030.dtb \
--- linux-delme-clean//arch/arm/boot/dts/omap3-n900.dts 1970-01-01 01:00:00.000000000 +0100
+++ linux-delme/arch/arm/boot/dts/omap3-n900.dts 2013-07-01 22:50:21.000000000 +0200
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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";
+};
+
+&mcspi1 {
+ // For some reason, touchscreen is neccessary for screen to work at
+ // all on real hw. It works well without it on emulator.
+ //
+ // Also... order in the device tree actually matters here.
+ tsc2005@0 {
+ compatible = "tsc2005";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ };
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ // turbo_mode = 0,
+ // cs_per_word = 0
+ };
+};
+
+/*
+&usb_otg_hs {
+ interface-type = <0>;
+ usb-phy = <&usb2_phy>;
+ mode = <2>;
+ power = <50>;
+};
+*/
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
* Pavel Machek <[email protected]> [130701 14:21]:
>
> We still need video & sound drivers with device tree enabled.
>
> Signed-off-by: Pavel Machek <[email protected]>
Thanks, applying this into omap-for-v3.11/fixes. Benoit should
queue the .dts related changes.
Tony
>
> ---
>
> Patch against 3.10.
>
> --- linux-delme-clean//arch/arm/mach-omap2/board-rx51-video.c 2013-07-01 21:51:07.000000000 +0200
> +++ linux-delme/arch/arm/mach-omap2/board-rx51-video.c 2013-07-01 22:50:27.000000000 +0200
> @@ -61,7 +61,7 @@
>
> static int __init rx51_video_init(void)
> {
> - if (!machine_is_nokia_rx51())
> + if (!machine_is_nokia_rx51() && !of_machine_is_compatible("nokia,omap3-n900"))
> return 0;
>
> if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT)) {
> diff -urN linux-delme-clean//sound/soc/omap/rx51.c linux-delme/sound/soc/omap/rx51.c
> --- linux-delme-clean//sound/soc/omap/rx51.c 2013-07-01 21:54:49.000000000 +0200
> +++ linux-delme/sound/soc/omap/rx51.c 2013-07-01 22:50:27.000000000 +0200
> @@ -396,7 +396,7 @@
> {
> int err;
>
> - if (!machine_is_nokia_rx51())
> + if (!machine_is_nokia_rx51() && !of_machine_is_compatible("nokia,omap3-n900"))
> return -ENODEV;
>
> err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
>
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Mon, Jul 01, 2013 at 11:17:54PM +0200, Pavel Machek wrote:
> This adds device tree with neccessary support to boot with functional
> video (on both emulator and real N900 device).
Is this really correct? You have commented out the USB, so there is no
way for a developer to interact with the device.
Some minor issue too:
> +/*
> + * Copyright (C) 2013 Pavel Machek <[email protected]>
> + * Copyright 2013 Aaro Koskinen <[email protected]>
> + *
> + * 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.
Should be just GPLv2.
A.
Hi!
> > This adds device tree with neccessary support to boot with functional
> > video (on both emulator and real N900 device).
>
> Is this really correct? You have commented out the USB, so there is no
> way for a developer to interact with the device.
Well... I do not have USB & SDcard set up, so my testing was "does it
show failed to mount root message on screen".
Now, if I do quick test of enabling it on 3.9, I get:
DTC arch/arm/boot/dts/omap3-n900.dtb
Error: arch/arm/boot/dts/omap3-n900.dts:92.2-3 label or path,
'usb_otg_hs', not found
FATAL ERROR: Syntax error parsing input tree
make[1]: *** [arch/arm/boot/dts/omap3-n900.dtb] Error 1
make: *** [dtbs] Error 2
. If you could test the patches with the USB support uncommented, that
would be very good...
Thanks,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi,
On Thu, Jul 04, 2013 at 10:21:45PM +0200, Pavel Machek wrote:
> > > This adds device tree with neccessary support to boot with functional
> > > video (on both emulator and real N900 device).
> >
> > Is this really correct? You have commented out the USB, so there is no
> > way for a developer to interact with the device.
>
> Well... I do not have USB & SDcard set up, so my testing was "does it
> show failed to mount root message on screen".
>
> Now, if I do quick test of enabling it on 3.9, I get:
>
> DTC arch/arm/boot/dts/omap3-n900.dtb
> Error: arch/arm/boot/dts/omap3-n900.dts:92.2-3 label or path,
> 'usb_otg_hs', not found
> FATAL ERROR: Syntax error parsing input tree
> make[1]: *** [arch/arm/boot/dts/omap3-n900.dtb] Error 1
> make: *** [dtbs] Error 2
You need 3.10. It was added in ad871c10b55654910ba97af00a00e65725da5e40
(ARM: dts: OMAP: Add usb_otg and glue data to OMAP3+ boards).
3.9 is very old. :-)
> If you could test the patches with the USB support uncommented, that
> would be very good...
I can do that, but not before next week.
A.
This adds device tree with neccessary support to boot with functional
video (on both emulator and real N900 device).
Signed-off-by: Pavel Machek <[email protected]>
---
>From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
can be enabled on 3.10, and tested it on that kernel.
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index f0895c5..1950aed 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
omap3-devkit8000.dtb \
omap3-beagle-xm.dtb \
omap3-evm.dtb \
+ omap3-n900.dtb \
omap3-tobi.dtb \
omap3-igep0020.dtb \
omap3-igep0030.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..fb461bf
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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
+ * 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";
+};
+
+&mcspi1 {
+ // For some reason, touchscreen is neccessary for screen to work at
+ // all on real hw. It works well without it on emulator.
+ //
+ // Also... order in the device tree actually matters here.
+ tsc2005@0 {
+ compatible = "tsc2005";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ };
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ // turbo_mode = 0,
+ // cs_per_word = 0
+ };
+};
+
+&usb_otg_hs {
+ interface-type = <0>;
+ usb-phy = <&usb2_phy>;
+ mode = <2>;
+ power = <50>;
+};
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi,
On Sat, Jul 13, 2013 at 02:17:09PM +0200, Pavel Machek wrote:
>
> This adds device tree with neccessary support to boot with functional
> video (on both emulator and real N900 device).
>
> Signed-off-by: Pavel Machek <[email protected]>
You can also add:
Signed-off-by: Aaro Koskinen <[email protected]>
Thanks,
A.
>
> ---
>
> From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> can be enabled on 3.10, and tested it on that kernel.
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index f0895c5..1950aed 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> omap3-devkit8000.dtb \
> omap3-beagle-xm.dtb \
> omap3-evm.dtb \
> + omap3-n900.dtb \
> omap3-tobi.dtb \
> omap3-igep0020.dtb \
> omap3-igep0030.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..fb461bf
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-n900.dts
> @@ -0,0 +1,92 @@
> +/*
> + * Copyright (C) 2013 Pavel Machek <[email protected]>
> + * Copyright 2013 Aaro Koskinen <[email protected]>
> + *
> + * 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
> + * 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";
> +};
> +
> +&mcspi1 {
> + // For some reason, touchscreen is neccessary for screen to work at
> + // all on real hw. It works well without it on emulator.
> + //
> + // Also... order in the device tree actually matters here.
> + tsc2005@0 {
> + compatible = "tsc2005";
> + spi-max-frequency = <6000000>;
> + reg = <0>;
> + };
> + mipid@2 {
> + compatible = "acx565akm";
> + spi-max-frequency = <6000000>;
> + reg = <2>;
> + // turbo_mode = 0,
> + // cs_per_word = 0
> + };
> +};
> +
> +&usb_otg_hs {
> + interface-type = <0>;
> + usb-phy = <&usb2_phy>;
> + mode = <2>;
> + power = <50>;
> +};
>
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi,
On Sun, Jun 09, 2013 at 03:59:44AM +0200, Pavel Machek wrote:
> 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?)
One way to get one is building it yourself. I finished mine yesterday:
http://elektranox.org/n900/adapter/index.html
-- Sebastian
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?)
>
> One way to get one is building it yourself. I finished mine yesterday:
>
> http://elektranox.org/n900/adapter/index.html
Nice but a bit above my hardware hacking skills. For now, I'm using
automated scripts to run qemu... (They are available at
http://tui.cvs.sourceforge.net/viewvc/tui/tui/auto/
). They should allow automated testing for regressions and automatic
bisect.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Mon 2013-07-15 01:28:19, Aaro Koskinen wrote:
> Hi,
>
> On Sat, Jul 13, 2013 at 02:17:09PM +0200, Pavel Machek wrote:
> >
> > This adds device tree with neccessary support to boot with functional
> > video (on both emulator and real N900 device).
> >
> > Signed-off-by: Pavel Machek <[email protected]>
>
> You can also add:
>
> Signed-off-by: Aaro Koskinen <[email protected]>
Benoit, could you apply this? Tony said you are doing dts changes, and
the patch seems to be ready.
> > From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> > can be enabled on 3.10, and tested it on that kernel.
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index f0895c5..1950aed 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> > omap3-devkit8000.dtb \
> > omap3-beagle-xm.dtb \
> > omap3-evm.dtb \
> > + omap3-n900.dtb \
> > omap3-tobi.dtb \
> > omap3-igep0020.dtb \
> > omap3-igep0030.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..fb461bf
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/omap3-n900.dts
> > @@ -0,0 +1,92 @@
> > +/*
> > + * Copyright (C) 2013 Pavel Machek <[email protected]>
> > + * Copyright 2013 Aaro Koskinen <[email protected]>
> > + *
> > + * 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
> > + * 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";
> > +};
> > +
> > +&mcspi1 {
> > + // For some reason, touchscreen is neccessary for screen to work at
> > + // all on real hw. It works well without it on emulator.
> > + //
> > + // Also... order in the device tree actually matters here.
> > + tsc2005@0 {
> > + compatible = "tsc2005";
> > + spi-max-frequency = <6000000>;
> > + reg = <0>;
> > + };
> > + mipid@2 {
> > + compatible = "acx565akm";
> > + spi-max-frequency = <6000000>;
> > + reg = <2>;
> > + // turbo_mode = 0,
> > + // cs_per_word = 0
> > + };
> > +};
> > +
> > +&usb_otg_hs {
> > + interface-type = <0>;
> > + usb-phy = <&usb2_phy>;
> > + mode = <2>;
> > + power = <50>;
> > +};
> >
> > --
> > (english) http://www.livejournal.com/~pavelmachek
> > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Sun 2013-07-28 15:44:09, Pavel Machek wrote:
> On Mon 2013-07-15 01:28:19, Aaro Koskinen wrote:
> > Hi,
> >
> > On Sat, Jul 13, 2013 at 02:17:09PM +0200, Pavel Machek wrote:
> > >
> > > This adds device tree with neccessary support to boot with functional
> > > video (on both emulator and real N900 device).
> > >
> > > Signed-off-by: Pavel Machek <[email protected]>
> >
> > You can also add:
> >
> > Signed-off-by: Aaro Koskinen <[email protected]>
>
> Benoit, could you apply this? Tony said you are doing dts changes, and
> the patch seems to be ready.
Tony, Benoit was apparently abducted by aliens or something. Is there
chance you could take the patch?
Thanks,
Pavel
> > > From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> > > can be enabled on 3.10, and tested it on that kernel.
> > >
> > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > > index f0895c5..1950aed 100644
> > > --- a/arch/arm/boot/dts/Makefile
> > > +++ b/arch/arm/boot/dts/Makefile
> > > @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> > > omap3-devkit8000.dtb \
> > > omap3-beagle-xm.dtb \
> > > omap3-evm.dtb \
> > > + omap3-n900.dtb \
> > > omap3-tobi.dtb \
> > > omap3-igep0020.dtb \
> > > omap3-igep0030.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..fb461bf
> > > --- /dev/null
> > > +++ b/arch/arm/boot/dts/omap3-n900.dts
> > > @@ -0,0 +1,92 @@
> > > +/*
> > > + * Copyright (C) 2013 Pavel Machek <[email protected]>
> > > + * Copyright 2013 Aaro Koskinen <[email protected]>
> > > + *
> > > + * 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
> > > + * 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";
> > > +};
> > > +
> > > +&mcspi1 {
> > > + // For some reason, touchscreen is neccessary for screen to work at
> > > + // all on real hw. It works well without it on emulator.
> > > + //
> > > + // Also... order in the device tree actually matters here.
> > > + tsc2005@0 {
> > > + compatible = "tsc2005";
> > > + spi-max-frequency = <6000000>;
> > > + reg = <0>;
> > > + };
> > > + mipid@2 {
> > > + compatible = "acx565akm";
> > > + spi-max-frequency = <6000000>;
> > > + reg = <2>;
> > > + // turbo_mode = 0,
> > > + // cs_per_word = 0
> > > + };
> > > +};
> > > +
> > > +&usb_otg_hs {
> > > + interface-type = <0>;
> > > + usb-phy = <&usb2_phy>;
> > > + mode = <2>;
> > > + power = <50>;
> > > +};
> > >
> > > --
> > > (english) http://www.livejournal.com/~pavelmachek
> > > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
>
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Fri 2013-08-02 01:43:55, Pavel Machek wrote:
> On Sun 2013-07-28 15:44:09, Pavel Machek wrote:
> > On Mon 2013-07-15 01:28:19, Aaro Koskinen wrote:
> > > Hi,
> > >
> > > On Sat, Jul 13, 2013 at 02:17:09PM +0200, Pavel Machek wrote:
> > > >
> > > > This adds device tree with neccessary support to boot with functional
> > > > video (on both emulator and real N900 device).
> > > >
> > > > Signed-off-by: Pavel Machek <[email protected]>
> > >
> > > You can also add:
> > >
> > > Signed-off-by: Aaro Koskinen <[email protected]>
> >
> > Benoit, could you apply this? Tony said you are doing dts changes, and
> > the patch seems to be ready.
>
> Tony, Benoit was apparently abducted by aliens or something. Is there
> chance you could take the patch?
Hello, is there anybody out there?
There's nice and simple patch enabling device tree on n900, it is even
reviewed by Aaro, and it is neither applied nor are negative comments
coming? ...for a month...?
Tony also seen the patch and comment was "Benoit takes these", so I
assume it looks basically ok.
Benoit, you are supposed to maintain device tree for omap2.
[I wonder if this is clean-enough cause for "trivial in resubmit
mode?]
Pavel
---
This adds device tree with neccessary support to boot with functional
video (on both emulator and real N900 device).
Signed-off-by: Pavel Machek <[email protected]>
Signed-off-by: Aaro Koskinen <[email protected]>
---
>From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
can be enabled on 3.10, and tested it on that kernel.
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index f0895c5..1950aed 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
omap3-devkit8000.dtb \
omap3-beagle-xm.dtb \
omap3-evm.dtb \
+ omap3-n900.dtb \
omap3-tobi.dtb \
omap3-igep0020.dtb \
omap3-igep0030.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..fb461bf
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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
+ * 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";
+};
+
+&mcspi1 {
+ // For some reason, touchscreen is neccessary for screen to work at
+ // all on real hw. It works well without it on emulator.
+ //
+ // Also... order in the device tree actually matters here.
+ tsc2005@0 {
+ compatible = "tsc2005";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ };
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ // turbo_mode = 0,
+ // cs_per_word = 0
+ };
+};
+
+&usb_otg_hs {
+ interface-type = <0>;
+ usb-phy = <&usb2_phy>;
+ mode = <2>;
+ power = <50>;
+};
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Sat 2013-08-10 13:09:55, Pavel Machek wrote:
> On Fri 2013-08-02 01:43:55, Pavel Machek wrote:
> > On Sun 2013-07-28 15:44:09, Pavel Machek wrote:
> > > On Mon 2013-07-15 01:28:19, Aaro Koskinen wrote:
> > > > Hi,
> > > >
> > > > On Sat, Jul 13, 2013 at 02:17:09PM +0200, Pavel Machek wrote:
> > > > >
> > > > > This adds device tree with neccessary support to boot with functional
> > > > > video (on both emulator and real N900 device).
> > > > >
> > > > > Signed-off-by: Pavel Machek <[email protected]>
> > > >
> > > > You can also add:
> > > >
> > > > Signed-off-by: Aaro Koskinen <[email protected]>
> > >
> > > Benoit, could you apply this? Tony said you are doing dts changes, and
> > > the patch seems to be ready.
> >
> > Tony, Benoit was apparently abducted by aliens or something. Is there
> > chance you could take the patch?
>
> Hello, is there anybody out there?
>
> There's nice and simple patch enabling device tree on n900, it is even
> reviewed by Aaro, and it is neither applied nor are negative comments
> coming? ...for a month...?
>
> Tony also seen the patch and comment was "Benoit takes these", so I
> assume it looks basically ok.
>
> Benoit, you are supposed to maintain device tree for omap2.
>From archives I see Benoit is normally quite active... so I tried
adding few more keywords to the subject line. Hopefully he's back from
holidays and notices this...?
> [I wonder if this is clean-enough cause for "trivial in resubmit
> mode?]
> Pavel
> ---
>
> This adds device tree with neccessary support to boot with functional
> video (on both emulator and real N900 device).
>
> Signed-off-by: Pavel Machek <[email protected]>
> Signed-off-by: Aaro Koskinen <[email protected]>
>
> ---
>
> From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> can be enabled on 3.10, and tested it on that kernel.
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index f0895c5..1950aed 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> omap3-devkit8000.dtb \
> omap3-beagle-xm.dtb \
> omap3-evm.dtb \
> + omap3-n900.dtb \
> omap3-tobi.dtb \
> omap3-igep0020.dtb \
> omap3-igep0030.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..fb461bf
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-n900.dts
> @@ -0,0 +1,92 @@
> +/*
> + * Copyright (C) 2013 Pavel Machek <[email protected]>
> + * Copyright 2013 Aaro Koskinen <[email protected]>
> + *
> + * 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
> + * 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";
> +};
> +
> +&mcspi1 {
> + // For some reason, touchscreen is neccessary for screen to work at
> + // all on real hw. It works well without it on emulator.
> + //
> + // Also... order in the device tree actually matters here.
> + tsc2005@0 {
> + compatible = "tsc2005";
> + spi-max-frequency = <6000000>;
> + reg = <0>;
> + };
> + mipid@2 {
> + compatible = "acx565akm";
> + spi-max-frequency = <6000000>;
> + reg = <2>;
> + // turbo_mode = 0,
> + // cs_per_word = 0
> + };
> +};
> +
> +&usb_otg_hs {
> + interface-type = <0>;
> + usb-phy = <&usb2_phy>;
> + mode = <2>;
> + power = <50>;
> +};
>
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi All,
On Sat, Aug 10, 2013 at 1:09 PM, Pavel Machek <[email protected]> wrote:
> On Fri 2013-08-02 01:43:55, Pavel Machek wrote:
>> On Sun 2013-07-28 15:44:09, Pavel Machek wrote:
>> > On Mon 2013-07-15 01:28:19, Aaro Koskinen wrote:
>> > > Hi,
>> > >
>> > > On Sat, Jul 13, 2013 at 02:17:09PM +0200, Pavel Machek wrote:
>> > > >
>> > > > This adds device tree with neccessary support to boot with functional
>> > > > video (on both emulator and real N900 device).
>> > > >
>> > > > Signed-off-by: Pavel Machek <[email protected]>
>> > >
>> > > You can also add:
>> > >
>> > > Signed-off-by: Aaro Koskinen <[email protected]>
>> >
>> > Benoit, could you apply this? Tony said you are doing dts changes, and
>> > the patch seems to be ready.
>>
>> Tony, Benoit was apparently abducted by aliens or something. Is there
>> chance you could take the patch?
>
> Hello, is there anybody out there?
>
> There's nice and simple patch enabling device tree on n900, it is even
> reviewed by Aaro, and it is neither applied nor are negative comments
> coming? ...for a month...?
Same for gta04 (omap3 based device) [1].
It was send upstream 2 times and second time there is no reply from 1.3.2013.
>
> Tony also seen the patch and comment was "Benoit takes these", so I
> assume it looks basically ok.
>
> Benoit, you are supposed to maintain device tree for omap2.
>
> [I wonder if this is clean-enough cause for "trivial in resubmit
> mode?]
> Pavel
> ---
>
> This adds device tree with neccessary support to boot with functional
> video (on both emulator and real N900 device).
>
> Signed-off-by: Pavel Machek <[email protected]>
> Signed-off-by: Aaro Koskinen <[email protected]>
>
> ---
>
> From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> can be enabled on 3.10, and tested it on that kernel.
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index f0895c5..1950aed 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> omap3-devkit8000.dtb \
> omap3-beagle-xm.dtb \
> omap3-evm.dtb \
> + omap3-n900.dtb \
> omap3-tobi.dtb \
> omap3-igep0020.dtb \
> omap3-igep0030.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..fb461bf
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-n900.dts
> @@ -0,0 +1,92 @@
> +/*
> + * Copyright (C) 2013 Pavel Machek <[email protected]>
> + * Copyright 2013 Aaro Koskinen <[email protected]>
> + *
> + * 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
> + * 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";
> +};
> +
> +&mcspi1 {
> + // For some reason, touchscreen is neccessary for screen to work at
> + // all on real hw. It works well without it on emulator.
> + //
> + // Also... order in the device tree actually matters here.
> + tsc2005@0 {
> + compatible = "tsc2005";
> + spi-max-frequency = <6000000>;
> + reg = <0>;
> + };
> + mipid@2 {
> + compatible = "acx565akm";
> + spi-max-frequency = <6000000>;
> + reg = <2>;
> + // turbo_mode = 0,
> + // cs_per_word = 0
> + };
> +};
> +
> +&usb_otg_hs {
> + interface-type = <0>;
> + usb-phy = <&usb2_phy>;
> + mode = <2>;
> + power = <50>;
> +};
>
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[1] - https://lkml.org/lkml/2013/3/1/526
marek
--
as simple and primitive as possible
-------------------------------------------------
Marek Belisko - OPEN-NANDRA
Freelance Developer
Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
Tel: +421 915 052 184
skype: marekwhite
twitter: #opennandra
web: http://open-nandra.com
On Sat, 10 Aug 2013, Pavel Machek wrote:
> [I wonder if this is clean-enough cause for "trivial in resubmit
> mode?]
On Sat, 10 Aug 2013, Belisko Marek wrote:
> Same for gta04 (omap3 based device) [1].
> It was send upstream 2 times and second time there is no reply from 1.3.2013.
Hi guys,
once I am able to match signoffs in the patches to MAINTAINERS, I can take
those through trivial.git in "re-transmission mode" (or feeeding those
thgough akpm si an option as well).
Please just send the patches to me in a new thread properly with all the
Acks/Signoffs, and mark those appropriately (i.e. maintainer that would
normally push this upstream desurfaced).
--
Jiri Kosina
SUSE Labs
Hi!
> > [I wonder if this is clean-enough cause for "trivial in resubmit
> > mode?]
>
> On Sat, 10 Aug 2013, Belisko Marek wrote:
>
> > Same for gta04 (omap3 based device) [1].
> > It was send upstream 2 times and second time there is no reply from 1.3.2013.
>
> Hi guys,
>
> once I am able to match signoffs in the patches to MAINTAINERS, I can take
> those through trivial.git in "re-transmission mode" (or feeeding those
> thgough akpm si an option as well).
>
> Please just send the patches to me in a new thread properly with all the
> Acks/Signoffs, and mark those appropriately (i.e. maintainer that would
> normally push this upstream desurfaced).
Mail sent (just to you, to keep mail volume down).
I noticed two non-delivery reports in my INBOX; seems Benoit
disappeared rather permanently:
...
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<[email protected]>: host cluster5.us.messagelabs.com[216.82.250.99]
said: 550
Invalid recipient <[email protected]> (#5.1.1) (in reply to RCPT TO
command)
...so maybe MAINTAINERS file will need fixing?
OMAP DEVICE TREE SUPPORT
M: Beno?t Cousson <[email protected]>
M: Tony Lindgren <[email protected]>
L: [email protected]
L: [email protected]
S: Maintained
F: arch/arm/boot/dts/*omap*
F: arch/arm/boot/dts/*am3*
:-(. Thanks,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On Sat, Aug 10, 2013 at 10:29 PM, Jiri Kosina <[email protected]> wrote:
> On Sat, 10 Aug 2013, Pavel Machek wrote:
>
>> [I wonder if this is clean-enough cause for "trivial in resubmit
>> mode?]
>
> On Sat, 10 Aug 2013, Belisko Marek wrote:
>
>> Same for gta04 (omap3 based device) [1].
>> It was send upstream 2 times and second time there is no reply from 1.3.2013.
>
> Hi guys,
>
> once I am able to match signoffs in the patches to MAINTAINERS, I can take
> those through trivial.git in "re-transmission mode" (or feeeding those
> thgough akpm si an option as well).
>
> Please just send the patches to me in a new thread properly with all the
> Acks/Signoffs, and mark those appropriately (i.e. maintainer that would
> normally push this upstream desurfaced).
>
Hi folks,
I noticed that you are using Benoit older emails address
([email protected]) which no longer exists instead of his new email
address ([email protected]). So, it may be possible that
Benoit have not even been getting your patches.
I'll send a patch to MAINTAINERS updating Benoit's email address so
get_maintainer.pl will stop lying.
Jiri, is ok if I send this patch to you? I guess this falls into the
trivial group.
Thanks a lot and best regards,
Javier
Hi!
> >> [I wonder if this is clean-enough cause for "trivial in resubmit
> >> mode?]
> >
> > On Sat, 10 Aug 2013, Belisko Marek wrote:
> >
> >> Same for gta04 (omap3 based device) [1].
> >> It was send upstream 2 times and second time there is no reply from 1.3.2013.
> >
> > Hi guys,
> >
> > once I am able to match signoffs in the patches to MAINTAINERS, I can take
> > those through trivial.git in "re-transmission mode" (or feeeding those
> > thgough akpm si an option as well).
> >
> > Please just send the patches to me in a new thread properly with all the
> > Acks/Signoffs, and mark those appropriately (i.e. maintainer that would
> > normally push this upstream desurfaced).
>
> I noticed that you are using Benoit older emails address
> ([email protected]) which no longer exists instead of his new email
> address ([email protected]). So, it may be possible that
> Benoit have not even been getting your patches.
Thanks for update.
> I'll send a patch to MAINTAINERS updating Benoit's email address so
> get_maintainer.pl will stop lying.
Thanks!
Benoit, could you take a look at the patch from this thread? I can
resend it, but it should be in pretty much _all_ the webmail archives
now :-).
Regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Hi Pavel,
some minor comments about your patch below
On Sat, Jul 13, 2013 at 2:17 PM, Pavel Machek <[email protected]> wrote:
>
> This adds device tree with neccessary support to boot with functional
> video (on both emulator and real N900 device).
>
> Signed-off-by: Pavel Machek <[email protected]>
>
> ---
>
> From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> can be enabled on 3.10, and tested it on that kernel.
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index f0895c5..1950aed 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> omap3-devkit8000.dtb \
> omap3-beagle-xm.dtb \
> omap3-evm.dtb \
> + omap3-n900.dtb \
> omap3-tobi.dtb \
> omap3-igep0020.dtb \
> omap3-igep0030.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..fb461bf
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-n900.dts
> @@ -0,0 +1,92 @@
> +/*
> + * Copyright (C) 2013 Pavel Machek <[email protected]>
> + * Copyright 2013 Aaro Koskinen <[email protected]>
> + *
> + * 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
> + * published by the Free Software Foundation.
> + */
> +
> +/dts-v1/;
> +
> +/include/ "omap34xx.dtsi"
> +
The current trend is to use #include "omap34xx.dtsi" instead /include/
in order to use the C pre-processor and the macros defined in
include/dt-bindings.
> +/ {
> + 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";
> +};
> +
> +&mcspi1 {
> + // For some reason, touchscreen is neccessary for screen to work at
> + // all on real hw. It works well without it on emulator.
> + //
> + // Also... order in the device tree actually matters here.
> + tsc2005@0 {
> + compatible = "tsc2005";
> + spi-max-frequency = <6000000>;
> + reg = <0>;
> + };
> + mipid@2 {
> + compatible = "acx565akm";
> + spi-max-frequency = <6000000>;
> + reg = <2>;
> + // turbo_mode = 0,
> + // cs_per_word = 0
> + };
> +};
You should remove these properties if they are not being used instead
of keeping them as commented.
> +
> +&usb_otg_hs {
> + interface-type = <0>;
> + usb-phy = <&usb2_phy>;
> + mode = <2>;
> + power = <50>;
> +};
>
> --
Thanks a lot and best regards,
Javier
* Jiri Kosina <[email protected]> [130810 13:36]:
> On Sat, 10 Aug 2013, Pavel Machek wrote:
>
> > [I wonder if this is clean-enough cause for "trivial in resubmit
> > mode?]
>
> On Sat, 10 Aug 2013, Belisko Marek wrote:
>
> > Same for gta04 (omap3 based device) [1].
> > It was send upstream 2 times and second time there is no reply from 1.3.2013.
>
> Hi guys,
>
> once I am able to match signoffs in the patches to MAINTAINERS, I can take
> those through trivial.git in "re-transmission mode" (or feeeding those
> thgough akpm si an option as well).
>
> Please just send the patches to me in a new thread properly with all the
> Acks/Signoffs, and mark those appropriately (i.e. maintainer that would
> normally push this upstream desurfaced).
Sorry for the delays, I think Benoit is still on vacation. Plus the
non-functioning email address issue certainly does not help..
Anyways, let's just let Benoit queue these to avoid pointless merge
conflicts with the .dts files as discussed several times earlier.
Regards,
Tony
* Pavel Machek <[email protected]> [130811 06:54]:
> Hi!
>
> > >> [I wonder if this is clean-enough cause for "trivial in resubmit
> > >> mode?]
> > >
> > > On Sat, 10 Aug 2013, Belisko Marek wrote:
> > >
> > >> Same for gta04 (omap3 based device) [1].
> > >> It was send upstream 2 times and second time there is no reply from 1.3.2013.
> > >
> > > Hi guys,
> > >
> > > once I am able to match signoffs in the patches to MAINTAINERS, I can take
> > > those through trivial.git in "re-transmission mode" (or feeeding those
> > > thgough akpm si an option as well).
> > >
> > > Please just send the patches to me in a new thread properly with all the
> > > Acks/Signoffs, and mark those appropriately (i.e. maintainer that would
> > > normally push this upstream desurfaced).
> >
> > I noticed that you are using Benoit older emails address
> > ([email protected]) which no longer exists instead of his new email
> > address ([email protected]). So, it may be possible that
> > Benoit have not even been getting your patches.
>
> Thanks for update.
>
> > I'll send a patch to MAINTAINERS updating Benoit's email address so
> > get_maintainer.pl will stop lying.
>
> Thanks!
>
> Benoit, could you take a look at the patch from this thread? I can
> resend it, but it should be in pretty much _all_ the webmail archives
> now :-).
Hopefully Benoit will be back online after vacation soon :)
Regaqrds,
Tony
Hi Pavel,
I finally got released by the aliens. It took longer than expected and
beside a small scar on the back of my neck, I feel pretty OK.
I just have few cosmetic comments on top of Javier's ones.
On 11/08/2013 17:02, Javier Martinez Canillas wrote:
> Hi Pavel,
>
> some minor comments about your patch below
>
> On Sat, Jul 13, 2013 at 2:17 PM, Pavel Machek <[email protected]> wrote:
>>
>> This adds device tree with neccessary support to boot with functional
Typo----------------------------^
>> video (on both emulator and real N900 device).
>>
>> Signed-off-by: Pavel Machek <[email protected]>
>>
>> ---
>>
>> From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
>> can be enabled on 3.10, and tested it on that kernel.
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index f0895c5..1950aed 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -141,6 +141,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
>> omap3-devkit8000.dtb \
>> omap3-beagle-xm.dtb \
>> omap3-evm.dtb \
>> + omap3-n900.dtb \
>> omap3-tobi.dtb \
>> omap3-igep0020.dtb \
>> omap3-igep0030.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..fb461bf
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/omap3-n900.dts
>> @@ -0,0 +1,92 @@
>> +/*
>> + * Copyright (C) 2013 Pavel Machek <[email protected]>
>> + * Copyright 2013 Aaro Koskinen <[email protected]>
>> + *
>> + * 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
>> + * published by the Free Software Foundation.
>> + */
>> +
>> +/dts-v1/;
>> +
>> +/include/ "omap34xx.dtsi"
>> +
>
> The current trend is to use #include "omap34xx.dtsi" instead /include/
> in order to use the C pre-processor and the macros defined in
> include/dt-bindings.
>
>> +/ {
>> + 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";
>> +};
>> +
>> +&mcspi1 {
>> + // For some reason, touchscreen is neccessary for screen to work at
Same typo than before---------------------------^
>> + // all on real hw. It works well without it on emulator.
>> + //
>> + // Also... order in the device tree actually matters here.
Nit: Please use the regular Linux style comment.
The order should not matter at all in DT, it should be a static
representation of the HW, so there is probably something wrong in the
code that make the device creation order important.
>> + tsc2005@0 {
>> + compatible = "tsc2005";
>> + spi-max-frequency = <6000000>;
>> + reg = <0>;
>> + };
>> + mipid@2 {
>> + compatible = "acx565akm";
>> + spi-max-frequency = <6000000>;
>> + reg = <2>;
>> + // turbo_mode = 0,
>> + // cs_per_word = 0
>> + };
>> +};
>
> You should remove these properties if they are not being used instead
> of keeping them as commented.
>
>> +
>> +&usb_otg_hs {
>> + interface-type = <0>;
>> + usb-phy = <&usb2_phy>;
>> + mode = <2>;
>> + power = <50>;
>> +};
Beside my comments and the ones from Javier, it looks good.
If you can repost ASAP, I'll take it right after.
It will be the first one in the list.
Thanks,
Benoit
Hi!
> I finally got released by the aliens. It took longer than expected
> and beside a small scar on the back of my neck, I feel pretty OK.
Scars on neck sound scary...
> The order should not matter at all in DT, it should be a static
> representation of the HW, so there is probably something wrong in
> the code that make the device creation order important.
I understand that there's something wrong with the code, but it turned
out not to be easy to debug. Yes, it will have to be debugged some
day, but it happens with old code, too, so it is actually orthogonal
to device tree.
> Beside my comments and the ones from Javier, it looks good.
> If you can repost ASAP, I'll take it right after.
> It will be the first one in the list.
Thanks, here you go.
Pavel
---
This adds device tree with neccessary support to boot with functional
video (on both emulator and real N900 device).
Signed-off-by: Pavel Machek <[email protected]>
Signed-off-by: Aaro Koskinen <[email protected]>
---
>From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
can be enabled on 3.10, and tested it on that kernel.
>From v2: spelling, improved comments. Tested on 3.11-rc (0ed4402).
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index a0f2365..c48b1ef 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -162,6 +162,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
omap3-devkit8000.dtb \
omap3-beagle-xm.dtb \
omap3-evm.dtb \
+ omap3-n900.dtb \
omap3-tobi.dtb \
omap3-igep0020.dtb \
omap3-igep0030.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..7ff90f8
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <[email protected]>
+ * Copyright 2013 Aaro Koskinen <[email protected]>
+ *
+ * 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";
+};
+
+&mcspi1 {
+ /*
+ * For some reason, touchscreen is necessary for screen to work at
+ * all on real hw. It works well without it on emulator.
+ *
+ * Also... order in the device tree actually matters here.
+ */
+ tsc2005@0 {
+ compatible = "tsc2005";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ };
+ mipid@2 {
+ compatible = "acx565akm";
+ spi-max-frequency = <6000000>;
+ reg = <2>;
+ };
+};
+
+&usb_otg_hs {
+ interface-type = <0>;
+ usb-phy = <&usb2_phy>;
+ mode = <2>;
+ power = <50>;
+};
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
On 13/08/2013 15:36, Pavel Machek wrote:
> Hi!
>
>> I finally got released by the aliens. It took longer than expected
>> and beside a small scar on the back of my neck, I feel pretty OK.
>
> Scars on neck sound scary...
>
>> The order should not matter at all in DT, it should be a static
>> representation of the HW, so there is probably something wrong in
>> the code that make the device creation order important.
>
> I understand that there's something wrong with the code, but it turned
> out not to be easy to debug. Yes, it will have to be debugged some
> day, but it happens with old code, too, so it is actually orthogonal
> to device tree.
>
>> Beside my comments and the ones from Javier, it looks good.
>> If you can repost ASAP, I'll take it right after.
>> It will be the first one in the list.
>
> Thanks, here you go.
Thanks. I've just applied it after adding the prefix "ARM: dts:" to the
subject.
Regards,
Benoit
> Pavel
>
> ---
>
> This adds device tree with neccessary support to boot with functional
> video (on both emulator and real N900 device).
>
> Signed-off-by: Pavel Machek <[email protected]>
> Signed-off-by: Aaro Koskinen <[email protected]>
>
> ---
>
> From v1: Aaro wants just GPLv2, so I did that. I re-enabled parts that
> can be enabled on 3.10, and tested it on that kernel.
>
> From v2: spelling, improved comments. Tested on 3.11-rc (0ed4402).
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index a0f2365..c48b1ef 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -162,6 +162,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
> omap3-devkit8000.dtb \
> omap3-beagle-xm.dtb \
> omap3-evm.dtb \
> + omap3-n900.dtb \
> omap3-tobi.dtb \
> omap3-igep0020.dtb \
> omap3-igep0030.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..7ff90f8
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-n900.dts
> @@ -0,0 +1,92 @@
> +/*
> + * Copyright (C) 2013 Pavel Machek <[email protected]>
> + * Copyright 2013 Aaro Koskinen <[email protected]>
> + *
> + * 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";
> +};
> +
> +&mcspi1 {
> + /*
> + * For some reason, touchscreen is necessary for screen to work at
> + * all on real hw. It works well without it on emulator.
> + *
> + * Also... order in the device tree actually matters here.
> + */
> + tsc2005@0 {
> + compatible = "tsc2005";
> + spi-max-frequency = <6000000>;
> + reg = <0>;
> + };
> + mipid@2 {
> + compatible = "acx565akm";
> + spi-max-frequency = <6000000>;
> + reg = <2>;
> + };
> +};
> +
> +&usb_otg_hs {
> + interface-type = <0>;
> + usb-phy = <&usb2_phy>;
> + mode = <2>;
> + power = <50>;
> +};
>