public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops
@ 2015-11-29 11:38 Thomas Chou
  2015-11-29 11:38 ` [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code Thomas Chou
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Thomas Chou @ 2015-11-29 11:38 UTC (permalink / raw)
  To: u-boot

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;
+
 	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);
+	}
+	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(&regs->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;
+	}
+}
+
+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;
+	u32 mem_op;
+	u32 sr_bp;
+	u32 sr_tb;
+
+	num_sectors = mtd->size / mtd->erasesize;
+	sector_start = ofs / mtd->erasesize;
+	sector_end = (ofs + len) / mtd->erasesize;
+
+	if (sector_start >= num_sectors / 2) {
+		sr_bp = fls(num_sectors - 1 - sector_start) + 1;
+		sr_tb = 0;
+	} else if (sector_end < num_sectors / 2) {
+		sr_bp = fls(sector_end) + 1;
+		sr_tb = 1;
+	} else {
+		sr_bp = 15;
+		sr_tb = 0;
+	}
+
+	mem_op = (sr_tb << 12) | (sr_bp << 8);
+	mem_op |= QUADSPI_MEM_OP_SECTOR_PROTECT;
+	debug("lock %08x\n", mem_op);
+	writel(mem_op, &regs->mem_op);
+
+	return 0;
+}
+
+static int altera_qspi_unlock(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 mem_op;
+
+	mem_op = QUADSPI_MEM_OP_SECTOR_PROTECT;
+	debug("unlock %08x\n", mem_op);
+	writel(mem_op, &regs->mem_op);
+
+	return 0;
+}
+
 static int altera_qspi_probe(struct udevice *dev)
 {
 	struct altera_qspi_platdata *pdata = dev_get_platdata(dev);
@@ -196,6 +276,8 @@ static int altera_qspi_probe(struct udevice *dev)
 	mtd->_read		= altera_qspi_read;
 	mtd->_write		= altera_qspi_write;
 	mtd->_sync		= altera_qspi_sync;
+	mtd->_lock		= altera_qspi_lock;
+	mtd->_unlock		= altera_qspi_unlock;
 	mtd->numeraseregions = 0;
 	mtd->erasesize = 0x10000;
 	if (add_mtd_device(mtd))
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code
  2015-11-29 11:38 [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Thomas Chou
@ 2015-11-29 11:38 ` Thomas Chou
  2015-11-29 13:35   ` Marek Vasut
  2015-12-01  7:21   ` Chin Liang See
  2015-11-29 13:34 ` [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Marek Vasut
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 12+ messages in thread
From: Thomas Chou @ 2015-11-29 11:38 UTC (permalink / raw)
  To: u-boot

Fix erase and write error code, which should be "protected".

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
 drivers/mtd/altera_qspi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c
index 89f04a4..cf45e73 100644
--- a/drivers/mtd/altera_qspi.c
+++ b/drivers/mtd/altera_qspi.c
@@ -77,7 +77,7 @@ int flash_erase(flash_info_t *info, int s_first, int s_last)
 	instr.len = mtd->erasesize * (s_last + 1 - s_first);
 	ret = mtd_erase(mtd, &instr);
 	if (ret)
-		return ERR_NOT_ERASED;
+		return ERR_PROTECTED;
 
 	return 0;
 }
@@ -94,7 +94,7 @@ int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
 
 	ret = mtd_write(mtd, to, cnt, &retlen, src);
 	if (ret)
-		return ERR_NOT_ERASED;
+		return ERR_PROTECTED;
 
 	return 0;
 }
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops
  2015-11-29 11:38 [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Thomas Chou
  2015-11-29 11:38 ` [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code Thomas Chou
@ 2015-11-29 13:34 ` Marek Vasut
  2015-12-01  7:09 ` Chin Liang See
  2015-12-01  9:07 ` [U-Boot] [PATCH v2 " Thomas Chou
  3 siblings, 0 replies; 12+ messages in thread
From: Marek Vasut @ 2015-11-29 13:34 UTC (permalink / raw)
  To: u-boot

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(&regs->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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code
  2015-11-29 11:38 ` [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code Thomas Chou
@ 2015-11-29 13:35   ` Marek Vasut
  2015-12-01  7:21   ` Chin Liang See
  1 sibling, 0 replies; 12+ messages in thread
From: Marek Vasut @ 2015-11-29 13:35 UTC (permalink / raw)
  To: u-boot

On Sunday, November 29, 2015 at 12:38:23 PM, Thomas Chou wrote:
> Fix erase and write error code, which should be "protected".

Can you elaborate on why do you think this change is correct please ?
That reasoning should be part of the patch description.

> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
>  drivers/mtd/altera_qspi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c
> index 89f04a4..cf45e73 100644
> --- a/drivers/mtd/altera_qspi.c
> +++ b/drivers/mtd/altera_qspi.c
> @@ -77,7 +77,7 @@ int flash_erase(flash_info_t *info, int s_first, int
> s_last) instr.len = mtd->erasesize * (s_last + 1 - s_first);
>  	ret = mtd_erase(mtd, &instr);
>  	if (ret)
> -		return ERR_NOT_ERASED;
> +		return ERR_PROTECTED;
> 
>  	return 0;
>  }
> @@ -94,7 +94,7 @@ int write_buff(flash_info_t *info, uchar *src, ulong
> addr, ulong cnt)
> 
>  	ret = mtd_write(mtd, to, cnt, &retlen, src);
>  	if (ret)
> -		return ERR_NOT_ERASED;
> +		return ERR_PROTECTED;
> 
>  	return 0;
>  }

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops
  2015-11-29 11:38 [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Thomas Chou
  2015-11-29 11:38 ` [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code Thomas Chou
  2015-11-29 13:34 ` [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Marek Vasut
@ 2015-12-01  7:09 ` Chin Liang See
  2015-12-01  9:07 ` [U-Boot] [PATCH v2 " Thomas Chou
  3 siblings, 0 replies; 12+ messages in thread
From: Chin Liang See @ 2015-12-01  7:09 UTC (permalink / raw)
  To: u-boot

On Sun, 2015-11-29 at 19:38 +0800, 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(+)
> 

Acked-by: Chin Liang See <clsee@altera.com>

As agreed with Marek, it would be great that some of the magic number
can be converted as defines. FYI, I am opening both Quad SPI controller
spec and EPCQ spec to review this :)

Thanks
Chin Liang

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code
  2015-11-29 11:38 ` [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code Thomas Chou
  2015-11-29 13:35   ` Marek Vasut
@ 2015-12-01  7:21   ` Chin Liang See
  1 sibling, 0 replies; 12+ messages in thread
From: Chin Liang See @ 2015-12-01  7:21 UTC (permalink / raw)
  To: u-boot

On Sun, 2015-11-29 at 19:38 +0800, Thomas Chou wrote:
> Fix erase and write error code, which should be "protected".
> 
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
>  drivers/mtd/altera_qspi.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 

Acked-by: Chin Liang See <clsee@altera.com>

Thanks
Chin Liang

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 1/2] altera_qspi: add lock unlock ops
  2015-11-29 11:38 [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Thomas Chou
                   ` (2 preceding siblings ...)
  2015-12-01  7:09 ` Chin Liang See
@ 2015-12-01  9:07 ` Thomas Chou
  2015-12-01  9:07   ` [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code Thomas Chou
                     ` (2 more replies)
  3 siblings, 3 replies; 12+ messages in thread
From: Thomas Chou @ 2015-12-01  9:07 UTC (permalink / raw)
  To: u-boot

Add lock() and unlock() mtd ops to altera_qspi.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
v2
  change uint64_t to u64 as suggested by Marek.
  add macros for status register.
  limit get_locked_range to mtd->size.

 drivers/mtd/altera_qspi.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 95 insertions(+)

diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c
index 50c6e0e..61a6a5e 100644
--- a/drivers/mtd/altera_qspi.c
+++ b/drivers/mtd/altera_qspi.c
@@ -14,6 +14,14 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+/* The STATUS register */
+#define QUADSPI_SR_BP0				BIT(2)
+#define QUADSPI_SR_BP1				BIT(3)
+#define QUADSPI_SR_BP2				BIT(4)
+#define QUADSPI_SR_BP2_0			GENMASK(4, 2)
+#define QUADSPI_SR_BP3				BIT(6)
+#define QUADSPI_SR_TB				BIT(5)
+
 /*
  * The QUADSPI_MEM_OP register is used to do memory protect and erase operations
  */
@@ -46,10 +54,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;
+	u64 len;
+
 	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 %08llX +%llX",
+		       info->start[0] + ofs, len);
+	}
+	putc('\n');
 }
 
 int flash_erase(flash_info_t *info, int s_first, int s_last)
@@ -171,6 +193,77 @@ 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;
+	int shift0 = ffs(QUADSPI_SR_BP2_0) - 1;
+	int shift3 = ffs(QUADSPI_SR_BP3) - 1 - 3;
+	u32 stat = readl(&regs->rd_status);
+	unsigned pow = ((stat & QUADSPI_SR_BP2_0) >> shift0) |
+		((stat & QUADSPI_SR_BP3) >> shift3);
+
+	*ofs = 0;
+	*len = 0;
+	if (pow) {
+		*len = mtd->erasesize << (pow - 1);
+		if (*len > mtd->size)
+			*len = mtd->size;
+		if (!(stat & QUADSPI_SR_TB))
+			*ofs = mtd->size - *len;
+	}
+}
+
+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;
+	u32 num_sectors;
+	u32 mem_op;
+	u32 sr_bp;
+	u32 sr_tb;
+
+	num_sectors = mtd->size / mtd->erasesize;
+	sector_start = ofs / mtd->erasesize;
+	sector_end = (ofs + len) / mtd->erasesize;
+
+	if (sector_start >= num_sectors / 2) {
+		sr_bp = fls(num_sectors - 1 - sector_start) + 1;
+		sr_tb = 0;
+	} else if (sector_end < num_sectors / 2) {
+		sr_bp = fls(sector_end) + 1;
+		sr_tb = 1;
+	} else {
+		sr_bp = 15;
+		sr_tb = 0;
+	}
+
+	mem_op = (sr_tb << 12) | (sr_bp << 8);
+	mem_op |= QUADSPI_MEM_OP_SECTOR_PROTECT;
+	debug("lock %08x\n", mem_op);
+	writel(mem_op, &regs->mem_op);
+
+	return 0;
+}
+
+static int altera_qspi_unlock(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 mem_op;
+
+	mem_op = QUADSPI_MEM_OP_SECTOR_PROTECT;
+	debug("unlock %08x\n", mem_op);
+	writel(mem_op, &regs->mem_op);
+
+	return 0;
+}
+
 static int altera_qspi_probe(struct udevice *dev)
 {
 	struct altera_qspi_platdata *pdata = dev_get_platdata(dev);
@@ -196,6 +289,8 @@ static int altera_qspi_probe(struct udevice *dev)
 	mtd->_read		= altera_qspi_read;
 	mtd->_write		= altera_qspi_write;
 	mtd->_sync		= altera_qspi_sync;
+	mtd->_lock		= altera_qspi_lock;
+	mtd->_unlock		= altera_qspi_unlock;
 	mtd->numeraseregions = 0;
 	mtd->erasesize = 0x10000;
 	if (add_mtd_device(mtd))
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code
  2015-12-01  9:07 ` [U-Boot] [PATCH v2 " Thomas Chou
@ 2015-12-01  9:07   ` Thomas Chou
  2015-12-01 13:24     ` Marek Vasut
  2015-12-06  3:33     ` Thomas Chou
  2015-12-01 13:23   ` [U-Boot] [PATCH v2 1/2] altera_qspi: add lock unlock ops Marek Vasut
  2015-12-06  3:32   ` Thomas Chou
  2 siblings, 2 replies; 12+ messages in thread
From: Thomas Chou @ 2015-12-01  9:07 UTC (permalink / raw)
  To: u-boot

Fix erase and write error code, which should be "protected".

From the "Embedded Peripherals IP User Guide" of Altera,

The "Illegal write" flag indicates that a write instruction is
targeting a protected sector on the flash memory. This bit is
set to indicate that the IP has cancelled a write instruction.

The "Illegal erase" flag indicates that an erase instruction has
been set to a protected sector on the flash memory. This bit is
set to indicate that the IP has cancelled the erase instruction.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
v2
  add description as suggested by Marek.

 drivers/mtd/altera_qspi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c
index 61a6a5e..617bf5d 100644
--- a/drivers/mtd/altera_qspi.c
+++ b/drivers/mtd/altera_qspi.c
@@ -85,7 +85,7 @@ int flash_erase(flash_info_t *info, int s_first, int s_last)
 	instr.len = mtd->erasesize * (s_last + 1 - s_first);
 	ret = mtd_erase(mtd, &instr);
 	if (ret)
-		return ERR_NOT_ERASED;
+		return ERR_PROTECTED;
 
 	return 0;
 }
@@ -102,7 +102,7 @@ int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
 
 	ret = mtd_write(mtd, to, cnt, &retlen, src);
 	if (ret)
-		return ERR_NOT_ERASED;
+		return ERR_PROTECTED;
 
 	return 0;
 }
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 1/2] altera_qspi: add lock unlock ops
  2015-12-01  9:07 ` [U-Boot] [PATCH v2 " Thomas Chou
  2015-12-01  9:07   ` [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code Thomas Chou
@ 2015-12-01 13:23   ` Marek Vasut
  2015-12-06  3:32   ` Thomas Chou
  2 siblings, 0 replies; 12+ messages in thread
From: Marek Vasut @ 2015-12-01 13:23 UTC (permalink / raw)
  To: u-boot

On Tuesday, December 01, 2015 at 10:07:55 AM, Thomas Chou wrote:
> Add lock() and unlock() mtd ops to altera_qspi.
> 
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>

Reviewed-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code
  2015-12-01  9:07   ` [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code Thomas Chou
@ 2015-12-01 13:24     ` Marek Vasut
  2015-12-06  3:33     ` Thomas Chou
  1 sibling, 0 replies; 12+ messages in thread
From: Marek Vasut @ 2015-12-01 13:24 UTC (permalink / raw)
  To: u-boot

On Tuesday, December 01, 2015 at 10:07:56 AM, Thomas Chou wrote:
> Fix erase and write error code, which should be "protected".
> 
> From the "Embedded Peripherals IP User Guide" of Altera,
> 
> The "Illegal write" flag indicates that a write instruction is
> targeting a protected sector on the flash memory. This bit is
> set to indicate that the IP has cancelled a write instruction.
> 
> The "Illegal erase" flag indicates that an erase instruction has
> been set to a protected sector on the flash memory. This bit is
> set to indicate that the IP has cancelled the erase instruction.
> 
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>

Reviewed-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 1/2] altera_qspi: add lock unlock ops
  2015-12-01  9:07 ` [U-Boot] [PATCH v2 " Thomas Chou
  2015-12-01  9:07   ` [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code Thomas Chou
  2015-12-01 13:23   ` [U-Boot] [PATCH v2 1/2] altera_qspi: add lock unlock ops Marek Vasut
@ 2015-12-06  3:32   ` Thomas Chou
  2 siblings, 0 replies; 12+ messages in thread
From: Thomas Chou @ 2015-12-06  3:32 UTC (permalink / raw)
  To: u-boot



On 2015?12?01? 17:07, Thomas Chou wrote:
> Add lock() and unlock() mtd ops to altera_qspi.
>
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
> v2
>    change uint64_t to u64 as suggested by Marek.
>    add macros for status register.
>    limit get_locked_range to mtd->size.
>
>   drivers/mtd/altera_qspi.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 95 insertions(+)
>

Applied to u-boot-nios.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code
  2015-12-01  9:07   ` [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code Thomas Chou
  2015-12-01 13:24     ` Marek Vasut
@ 2015-12-06  3:33     ` Thomas Chou
  1 sibling, 0 replies; 12+ messages in thread
From: Thomas Chou @ 2015-12-06  3:33 UTC (permalink / raw)
  To: u-boot



On 2015?12?01? 17:07, Thomas Chou wrote:
> Fix erase and write error code, which should be "protected".
>
>>From the "Embedded Peripherals IP User Guide" of Altera,
>
> The "Illegal write" flag indicates that a write instruction is
> targeting a protected sector on the flash memory. This bit is
> set to indicate that the IP has cancelled a write instruction.
>
> The "Illegal erase" flag indicates that an erase instruction has
> been set to a protected sector on the flash memory. This bit is
> set to indicate that the IP has cancelled the erase instruction.
>
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
> v2
>    add description as suggested by Marek.
>
>   drivers/mtd/altera_qspi.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>

Applied to u-boot-nios.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-12-06  3:33 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-29 11:38 [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Thomas Chou
2015-11-29 11:38 ` [U-Boot] [PATCH 2/2] altera_qspi: fix erase and write error code Thomas Chou
2015-11-29 13:35   ` Marek Vasut
2015-12-01  7:21   ` Chin Liang See
2015-11-29 13:34 ` [U-Boot] [PATCH 1/2] altera_qspi: add lock unlock ops Marek Vasut
2015-12-01  7:09 ` Chin Liang See
2015-12-01  9:07 ` [U-Boot] [PATCH v2 " Thomas Chou
2015-12-01  9:07   ` [U-Boot] [PATCH v2 2/2] altera_qspi: fix erase and write error code Thomas Chou
2015-12-01 13:24     ` Marek Vasut
2015-12-06  3:33     ` Thomas Chou
2015-12-01 13:23   ` [U-Boot] [PATCH v2 1/2] altera_qspi: add lock unlock ops Marek Vasut
2015-12-06  3:32   ` Thomas Chou

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox