if your bootargs only define 2 partitions.
mtdparts=nand_mtd:0x300000@0x100000(uImage)ro,0x1fc00000@0x400000(rootfs)
Then when this is passed to the kernel as it's command line args
uImage will be /dev/mtd0 and /dev/mtdblock0
rootfs will be /dev/mtd1 and /dev/mtdblock1
if your bootargs define all 3 partitions.
mtdparts=nand_mtd:0x100000@0x000000(u-boot)ro,0x300000@0x100000(uImage)ro,0x1fc00000@0x400000(rootfs)
Then when this is passed to the kernel as it's command line args
u-boot will be /dev/mtd0 and /dev/mtdblock0
uImage will be /dev/mtd1 and /dev/mtdblock1
rootfs will be /dev/mtd2 and /dev/mtdblock2
It's up to you how you want to define the partitions of your flash. But you must be consistent with what you pass to the kernel. And make sure you set all references ie root=/dev/mtdblock2 or which device you write your kernel or files system to accordingly.
ro following the (name) sets the partition to read only
rw following the name is actually an error and will show up as such in dmesg if you look close.