From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Machek Date: Fri, 15 May 2015 11:55:45 +0200 Subject: [U-Boot] [PATCHv3] mtd: sf: Add CONFIG_SPI_N25Q256A_RESET for software-reset In-Reply-To: <201505151136.11205.marex@denx.de> References: <201505110948.55136.marex@denx.de> <20150515084746.GA26883@amd> <201505151136.11205.marex@denx.de> Message-ID: <20150515095545.GC26883@amd> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Fri 2015-05-15 11:36:11, Marek Vasut wrote: > On Friday, May 15, 2015 at 10:47:46 AM, Pavel Machek wrote: > > > >> Seems like nothing much doing in micron side > > > >> > > > >> switch (JEDEC_MFR(info)) { > > > >> case CFI_MFR_ST: /* Micron, actually */ > > > >> > > > >> /* Some Micron need WREN command; all will accept it > > > >> */ need_wren = true; > > > > > > > > Umm. Take a closer look. > > > > > > > > There's no break, so it continues below. > > > > > > Ohh.. So Linux works for you.. then is it? > > > > Well, yes, but this code patch is actually not tested in my case, > > because u-boot already resets it for Linux. > > > > Anyway, is this what you'd like to see? > > Was my idea of checking in which mode the SPI NOR is first discarded ? Yes, better just reset it. > [...] > > > @@ -233,6 +234,30 @@ static int spi_flash_validate_params(struct spi_slave > > *spi, u8 *idcode, flash->poll_cmd = CMD_FLAG_STATUS; > > #endif > > > > + if (params->flags & MICRON_RESET) { > > +#define CMD_RESET_ENABLE 0x66 > > +#define CMD_RESET_MEMORY 0x99 > > + int ret; > > The indent here seems funny. > > I think it'd be better to pull this reset procedure into a separate > function. Can do, but I need to know if this is what Jagan wanted, first. Pavel > > + /* > > + * This is needed for the SoCFPGA booting from SPI NOR flash > > + * e.g. (N25Q256A), as U-Boot SPL 2013-socfpga (only version > > + * working on that board) sets 4-byte addressing mode. > > + */ > > + ret = spi_flash_cmd(spi, CMD_RESET_ENABLE, NULL, 0); > > + if (ret) { > > + printf("SF: Failed issue enable reset command\n"); > > + return ret; > > + } > > + > > + ret = spi_flash_cmd(spi, CMD_RESET_MEMORY, NULL, 0); > > + if (ret) { > > + printf("SF: Failed issue reset command\n"); > > + return ret; > > + } > > + > > + printf("SF: Device software reset\n"); > > + } > > Otherwise I think it's OK. -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html