
The problem is that the kernel needs to ioremap the areas you are
i'm calling ioremap from linux/driver/mtd/maps/physmap.c and int __init init_physmap(void)
the information about the address ranges is the tricky part: it comes from the device tree, (unless you are building your kernel from arch/ppc). There are a lot of examples in arch/powerpc/boot/dts.
forgot to mention i'm using u-boot-1.2.0 and kernel 2.4.20, and i think it doesn't use the device trees.
what's interesting is I can erase any of the first 64mb, its only while operating on the other 64mb that i get the error. And as mentioned earlier from u-boot i can easily erase the whole flash.
Also, keep in mind that on ppc460 (I am not sure if 440gx is the same, but it might be) the addresses of the peripherals driven by CSs have nonzero nibble in four MSBs of the 36 bit address, so phys_addr_t is 64 bits in size.
yeah that right. how do i figure what the four MSBs of the 36 bit address should be ? I know from u-boot i can use CFG_FLASH_BASE. what should it be from kernel ?
thanks vb your response was informative.