MTD and 28F128J3A

Jaap-Jan Boor jjboor at aimsys.nl
Thu Aug 19 08:48:54 EDT 2004


Stefan,

what I did is force a checkstop the will result in a processor
reset before executing 'm8260_gorom()' (this should also reset
your flash devices) by adding the following code to
m8260_machine_restart():

static void
m8260_restart(char *cmd)
{
        extern void m8260_gorom(bd_t *bi, uint addr);
        uint    startaddr;

#ifdef CONFIG_MYSYSTEM
        unsigned long hid0;
        // Need interrupts off to force checkstop
        cli();
        // Checkstop reset enable
        ((immap_t *)IMAP_ADDR)->im_clkrst.car_rmr |= 0x01;
        // Force a checkstop by turning on parity which is not
        // implemented
        hid0 = mfspr(HID0);
        hid0 |= 0x30000000;
        mtspr(HID0, hid0);
#else
        /* Most boot roms have a warmstart as the second instruction
         * of the reset vector.  If that doesn't work for you, change
         * this or the reboot program to send a proper address.
         */
        startaddr = 0xff000104;

        if (cmd != NULL) {
                if (!strncmp(cmd, "startaddr=", 10))
                        startaddr = simple_strtoul(&cmd[10], NULL, 0);
        }

        m8260_gorom((unsigned int)__pa(__res), startaddr);
#endif
}

Jaap-Jan


On Thu, 2004-08-19 at 13:46, Stefan Stürke wrote:
> Hi,
> 
> I have a problem with the 28F128J3A flash during system reboot.
> 
> Environment:
> 
> - mpc8270
> - linuxppc_2_4_devel (snapshot from the denx ppc tree based on 2.4.25)
> - mtd version included in that tree
> - a jffs2 file system is mounted on the flash
> 
> Problem:
> 
> When I reboot the system, I get a kernel panic right after the jump to 
> the reset vector in m8260_gorom().
> 
> Using my BDI2000 I was able to find out that the kernel panic occurred
> because 8260_gorom tries to execute some code in Flash (this is
> correct because the bootloader is also located in that flash) but the
> Flash is in query mode at this time. So the correct code could not be
> read by the processor
> 
> So my question: Why is the flash left in query mode?
> I found that also in normal operation the flash is in query mode after
> writing to it. Is this ok? (I have no problems during normal operation).
> What can I do to leave the query mode before reboot?
> 
> When I use the same hardware platform with another flash type
> AMD29LV128M I have no problems during reboot.
> 
> One difference I can think of is, that in the case of the
> 28F128J3A the chips/cfi_cmdset_0001 driver is used, while in the case
> of the AMD29LV128M the chips/cfi_cmdset_0002 driver is used.
> Any ideas?
> 
> Thanks in advance,
> Stefan
-- 
J.G.J. Boor                       Anton Philipsweg 1
Software Engineer                 1223 KZ Hilversum
AimSys bv                         tel. +31 35 689 1941
Postbus 2194, 1200 CD Hilversum   mailto:jjboor at aimsys.nl






More information about the linux-mtd mailing list