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