On Thursday 27 December 2018 20:32:56 Pali Rohár wrote: > On Thursday 27 December 2018 14:12:35 Tom Rini wrote: > > On Thu, Dec 27, 2018 at 08:09:56PM +0100, Pali Rohár wrote: > > > On Thursday 27 December 2018 13:57:59 Tom Rini wrote: > > > > On Thu, Dec 27, 2018 at 07:52:54PM +0100, Pali Rohár wrote: > > > > > > > > > Hello, it seems that MTD partition definitions for Nokia N900 were > > > > > removed in commit 43ede0bca7fc1590b623832b743213b818257a27 (Kconfig: > > > > > Migrate MTDIDS_DEFAULT / MTDPARTS_DEFAULT). > > > > > > > > > > See diff: > > > > > http://git.denx.de/?p=u-boot.git;a=blobdiff;f=include/configs/nokia_rx51.h;h=b7fe7341e407fd16275ed06d2cd399a3a2fc0e6a;hp=20b8c345f06620210d4852f547b1e64c54e48904;hb=43ede0bca7fc1590b623832b743213b818257a27;hpb=804dcf771aacc75f595d3656be0ca6a7887b6672 > > > > > > > > > > Can you bring them back? > > > > > > > > > > Note that those PART*_* macros are used not only for constructing > > > > > MTDPARTS_DEFAULT, but also for OMAP Nokia N900 atags, which are needed > > > > > for booting Maemo 5. > > > > > > > > Yes, please update the defconfig file with whatever needs to be in the > > > > option there, thanks! > > > > > > Looking at it... and it is problematic. > > > > > > At time when Nokia N900 code was put into U-Boot mainline repository, > > > UBIFS and OneNand code in U-Boot was broken. Therefore I added only > > > #ifdef switch to enable MTD support optionally. Ideally once, OneNand is > > > in U-Boot fixed, then it can be enabled. I do not know what is current > > > state. > > > > OneNAND is probably still broken then, and should probably just be > > removed if so? > > Now it even does not compile... I'm getting following error: > > drivers/mtd/onenand/onenand_uboot.c: In function ‘onenand_init’: > drivers/mtd/onenand/onenand_uboot.c:37:31: error: ‘CONFIG_SYS_ONENAND_BASE’ > undeclared (first use in this function) > onenand_chip.base = (void *) CONFIG_SYS_ONENAND_BASE; > ^~~~~~~~~~~~~~~~~~~~~~~ > drivers/mtd/onenand/onenand_uboot.c:37:31: note: each undeclared identifier > is reported only once for each function it appears in > > After I applied > > diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig > index fe2ecf6c94..905bdee249 100644 > --- a/configs/nokia_rx51_defconfig > +++ b/configs/nokia_rx51_defconfig > @@ -36,3 +36,6 @@ CONFIG_TWL4030_USB=y > CONFIG_VIDEO=y > CONFIG_CFB_CONSOLE_ANSI=y > # CONFIG_VGA_AS_SINGLE_DEVICE is not set > +CONFIG_CMD_ONENAND=y > +CONFIG_CMD_MTDPARTS=y > +CONFIG_CMD_UBIFS=y >
Compilation is definitely broken in U-Boot. $ git grep CONFIG_SYS_ONENAND_BASE include/configs/nokia_rx51.h:#define CONFIG_SYS_ONENAND_BASE ONENAND_MAP $ git grep ONENAND_MAP arch/arm/include/asm/arch-omap3/cpu.h:#define ONENAND_MAP 0x20000000 /* OneNand addr */ I applied following patch and then compilation succeeded. diff --git a/arch/arm/mach-omap2/mem-common.c b/arch/arm/mach-omap2/mem-common.c index ff1e3125a0..aca834d0f3 100644 --- a/arch/arm/mach-omap2/mem-common.c +++ b/arch/arm/mach-omap2/mem-common.c @@ -138,7 +138,7 @@ void set_gpmc_cs0(int flash_type) #if defined(CONFIG_CMD_ONENAND) case MTD_DEV_TYPE_ONENAND: gpmc_regs = gpmc_regs_onenand; - base = CONFIG_SYS_ONENAND_BASE; + base = 0x20000000; size = GPMC_SIZE_128M; break; #endif diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig index fe2ecf6c94..7f817a57cc 100644 --- a/configs/nokia_rx51_defconfig +++ b/configs/nokia_rx51_defconfig @@ -36,3 +36,11 @@ CONFIG_TWL4030_USB=y CONFIG_VIDEO=y CONFIG_CFB_CONSOLE_ANSI=y # CONFIG_VGA_AS_SINGLE_DEVICE is not set +CONFIG_MTD_DEVICE=y +CONFIG_MTDIDS_DEFAULT="onenand0=onenand" +CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(bootloader)ro,384k(config),256k(log),2m(kernel),2m(initfs),-(rootfs)" +CONFIG_CMD_ONENAND=y +CONFIG_CMD_MTDPARTS=y +CONFIG_CMD_MTD=y +CONFIG_CMD_UBI=y +CONFIG_CMD_UBIFS=y diff --git a/drivers/mtd/onenand/onenand_uboot.c b/drivers/mtd/onenand/onenand_uboot.c index c15ec9df07..5f2b094dfc 100644 --- a/drivers/mtd/onenand/onenand_uboot.c +++ b/drivers/mtd/onenand/onenand_uboot.c @@ -34,7 +34,7 @@ void onenand_init(void) /* It's used for some board init required */ err = onenand_board_init(&onenand_mtd); #else - onenand_chip.base = (void *) CONFIG_SYS_ONENAND_BASE; + onenand_chip.base = (void *) 0x20000000; #endif if (!err && !(onenand_scan(&onenand_mtd, 1))) { Looks like that OneNand & UBI code is working, at least in qemu. I have not tested real N900 device yet. But UBIFS does not work :-( See tests below. Nokia RX-51 # onenand info Muxed OneNAND 256MB 1.8V 16-bit (0x40) OneNAND version = 0x0121 Nokia RX-51 # mtd list List of MTD devices: * onenand0 - type: Unknown - block size: 0x20000 bytes - min I/O: 0x800 bytes - OOB size: 64 bytes - OOB available: 20 bytes - 0x000000000000-0x000010000000 : "onenand0" - 0x000000000000-0x000000020000 : "bootloader" - 0x000000020000-0x000000080000 : "config" - 0x000000080000-0x0000000c0000 : "log" - 0x0000000c0000-0x0000002c0000 : "kernel" - 0x0000002c0000-0x0000004c0000 : "initfs" - 0x0000004c0000-0x000010000000 : "rootfs" Nokia RX-51 # mtd dump bootloader Reading 2048 byte(s) at offset 0x00000000 Dump 2048 data bytes from 0x0: 0x00000000: dc 21 00 00 00 00 20 40 0a 00 00 ea 4e 4f 4c 4f 0x00000010: 58 6c 64 72 14 0e 00 00 00 00 20 40 09 00 00 00 ... Nokia RX-51 # ubi part rootfs ubi0: attaching mtd6 ubi0: scanning is finished ubi0: volume 0 ("rootfs") re-sized from 1870 to 1966 LEBs ubi0: attached mtd6 (name "rootfs", size 251 MiB) ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 512 ubi0: VID header offset: 512 (aligned 512), data offset: 2048 ubi0: good PEBs: 2010, bad PEBs: 0, corrupted PEBs: 0 ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128 ubi0: max/mean erase counter: 1/1, WL threshold: 4096, image sequence number: 1 ubi0: available PEBs: 0, total reserved PEBs: 2010, PEBs reserved for bad PEB handling: 40 Nokia RX-51 # ubi info l Volume information dump: vol_id 0 reserved_pebs 1966 alignment 1 data_pad 0 vol_type 3 name_len 6 usable_leb_size 129024 used_ebs 1966 used_bytes 253661184 last_eb_bytes 129024 corrupted 0 upd_marker 0 name rootfs Volume information dump: vol_id 2147479551 reserved_pebs 2 alignment 1 data_pad 0 vol_type 3 name_len 13 usable_leb_size 129024 used_ebs 2 used_bytes 258048 last_eb_bytes 2 corrupted 0 upd_marker 0 name layout volume Nokia RX-51 # ubifsmount rootfs UBIFS error (pid: 1): cannot open "rootfs", error -22 Error reading superblock on volume 'rootfs' errno=-22! ... Nokia RX-51 # ubifsmount ubi0:rootfs Error reading superblock on volume 'ubi0:rootfs' errno=-22! ... > > > And definition for MTD was not moved out of nokia_rx51.h file to > > > nokia_rx51_defconfig. But if you look at old definition of > > > MTDPART_DEFAULT it is composed from other macros in that nokia_rx51.h > > > file. > > > > > > So I cannot move it for obvious reason to nokia_rx51_defconfig, without > > > including nokia_rx51.h in nokia_rx51_defconfig file. So how to solve > > > this problem? > > > > You should construct and pass the final string as it doesn't look like > > it changes dynamically, right? > > Yes, that is possible. But then definition for partitions would be at > two places. Once in nokia_rx51_defconfig and second time in nokia_rx51.h -- Pali Rohár pali.ro...@gmail.com
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot