
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 thomas@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