On Sunday, November 29, 2015 at 12:38:22 PM, Thomas Chou wrote: > Add lock() and unlock() mtd ops to altera_qspi. > > Signed-off-by: Thomas Chou <tho...@wytron.com.tw> > --- > drivers/mtd/altera_qspi.c | 82 > +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 > insertions(+) > > diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c > index 50c6e0e..89f04a4 100644 > --- a/drivers/mtd/altera_qspi.c > +++ b/drivers/mtd/altera_qspi.c > @@ -46,10 +46,24 @@ struct altera_qspi_platdata { > > flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* FLASH chips info > */ > > +static void altera_qspi_get_locked_range(struct mtd_info *mtd, loff_t > *ofs, + uint64_t *len); > + > void flash_print_info(flash_info_t *info) > { > + struct mtd_info *mtd = info->mtd; > + loff_t ofs; > + uint64_t len;
u64 please. > + > printf("Altera QSPI flash Size: %ld MB in %d Sectors\n", > info->size >> 20, info->sector_count); > + altera_qspi_get_locked_range(mtd, &ofs, &len); > + printf(" %08lX +%lX", info->start[0], info->size); > + if (len) { > + printf(", protected %08lX +%lX", > + info->start[0] + (ulong)ofs, (ulong)len); Do you really need the typecasts here ? %llx should do it for the len and dropping the l should do it for ofs I think. > + } > + putc('\n'); > } > > int flash_erase(flash_info_t *info, int s_first, int s_last) > @@ -171,6 +185,72 @@ static void altera_qspi_sync(struct mtd_info *mtd) > { > } > > +static void altera_qspi_get_locked_range(struct mtd_info *mtd, loff_t > *ofs, + uint64_t *len) > +{ > + struct udevice *dev = mtd->dev; > + struct altera_qspi_platdata *pdata = dev_get_platdata(dev); > + struct altera_qspi_regs *regs = pdata->regs; > + u32 stat = readl(®s->rd_status); > + unsigned pow = ((stat >> 2) & 0x7) | ((stat >> 3) & 0x8); > + > + *ofs = 0; > + *len = 0; > + if (pow) { > + *len = mtd->erasesize << (pow - 1); > + if (!(stat & 0x20)) > + *ofs = mtd->size - *len; What are all these magic numbers ? > + } > +} > + > +static int altera_qspi_lock(struct mtd_info *mtd, loff_t ofs, uint64_t > len) +{ > + struct udevice *dev = mtd->dev; > + struct altera_qspi_platdata *pdata = dev_get_platdata(dev); > + struct altera_qspi_regs *regs = pdata->regs; > + u32 sector_start, sector_end; > + uint64_t num_sectors; u64 > + u32 mem_op; > + u32 sr_bp; > + u32 sr_tb; All were just minor nits, thanks! Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot