Skip to contentSkip to conversation

spi: ti_qspi: Use 4-byte opcode for mmap read

PATCH In review Vignesh R 3 participants 6 messages Nov 23, 2015 – Jan 20, 2016 SPI

lore
Share & tools
lore

Vignesh R

author
#0 lore raw

PATCH 1/1 spi: ti_qspi: Use 4-byte opcode for mmap read

ti-qspi driver currently uses 3-byte addressing mode(and opcodes) for memory-mapped read. This restricts maximum addressable flash size to 16MB.
Enable the 4-byte addressing(and use 4-byte opcode) for memory-mapped read to allow access to addresses above 16MB.

[vigneshr at ti.com: Re-word commit description]

---

Tested on DRA74 EVM with Spansion flash and AM437X IDK EVM with Macronix flash.

 drivers/spi/ti_qspi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/spi/ti_qspi.c +3 -3
index 646dd899d3ec..0a032845866d 100644
@@ -48,14 +48,14 @@
 #define CORE_CTRL_IO                    0x4a002558
 
 #define QSPI_CMD_READ                   (0x3 << 0)
-#define QSPI_CMD_READ_QUAD              (0x6b << 0)
+#define QSPI_CMD_READ_QUAD              (0x6c << 0)
 #define QSPI_CMD_READ_FAST              (0x0b << 0)
-#define QSPI_SETUP0_NUM_A_BYTES         (0x2 << 8)
+#define QSPI_SETUP0_NUM_A_BYTES         (0x3 << 8)
 #define QSPI_SETUP0_NUM_D_BYTES_NO_BITS (0x0 << 10)
 #define QSPI_SETUP0_NUM_D_BYTES_8_BITS  (0x1 << 10)
 #define QSPI_SETUP0_READ_NORMAL         (0x0 << 12)
 #define QSPI_SETUP0_READ_QUAD           (0x3 << 12)
-#define QSPI_CMD_WRITE                  (0x2 << 16)
+#define QSPI_CMD_WRITE                  (0x12 << 16)
 #define QSPI_NUM_DUMMY_BITS             (0x0 << 24)
 
 /* ti qspi register set */
Signature · 1 line
2.6.3
#1 lore raw

PATCH 1/1 spi: ti_qspi: Use 4-byte opcode for mmap read

Quoted 5 lines · Vignesh R

ti-qspi driver currently uses 3-byte addressing mode(and opcodes) for memory-mapped read. This restricts maximum addressable flash size to 16MB.
Enable the 4-byte addressing(and use 4-byte opcode) for memory-mapped read to allow access to addresses above 16MB.

What about sf side, since we don't have 4-byte opcode support yet?

Quoted 36 lines
[vigneshr at ti.com: Re-word commit description]

---

Tested on DRA74 EVM with Spansion flash and AM437X IDK EVM with Macronix flash.

 drivers/spi/ti_qspi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/spi/ti_qspi.c +3 -4
index 646dd899d3ec..0a032845866d 100644
@@ -48,14 +48,14 @@
 #define CORE_CTRL_IO                    0x4a002558
 
 #define QSPI_CMD_READ                   (0x3 << 0)
-#define QSPI_CMD_READ_QUAD              (0x6b << 0)
+#define QSPI_CMD_READ_QUAD              (0x6c << 0)
 #define QSPI_CMD_READ_FAST              (0x0b << 0)
-#define QSPI_SETUP0_NUM_A_BYTES         (0x2 << 8)
+#define QSPI_SETUP0_NUM_A_BYTES         (0x3 << 8)
 #define QSPI_SETUP0_NUM_D_BYTES_NO_BITS (0x0 << 10)
 #define QSPI_SETUP0_NUM_D_BYTES_8_BITS  (0x1 << 10)
 #define QSPI_SETUP0_READ_NORMAL         (0x0 << 12)
 #define QSPI_SETUP0_READ_QUAD           (0x3 << 12)
-#define QSPI_CMD_WRITE                  (0x2 << 16)
+#define QSPI_CMD_WRITE                  (0x12 << 16)
 #define QSPI_NUM_DUMMY_BITS             (0x0 << 24)
 
 /* ti qspi register set */
--
Quoted 2 lines

2.6.3

thanks!

Signature · 1 line
Jagan | openedev.
author
#2 lore raw

PATCH 1/1 spi: ti_qspi: Use 4-byte opcode for mmap read

Quoted 9 lines · Jagan Teki
Quoted 5 lines · Vignesh R

ti-qspi driver currently uses 3-byte addressing mode(and opcodes) for memory-mapped read. This restricts maximum addressable flash size to 16MB.
Enable the 4-byte addressing(and use 4-byte opcode) for memory-mapped read to allow access to addresses above 16MB.

What about sf side, since we don't have 4-byte opcode support yet?

Well, the sf is accessing >16MB address space using EXT_ADDR registers via BAR support (for regular spi read/write). But, memory-mapped read doesn't support using EXT_ADDR, hence 4-byte opcode needs to be used for during mmap transfers to access >16MB.

Quoted 41 lines
Quoted 36 lines
[vigneshr at ti.com: Re-word commit description]

---

Tested on DRA74 EVM with Spansion flash and AM437X IDK EVM with Macronix flash.

 drivers/spi/ti_qspi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/spi/ti_qspi.c +3 -4
index 646dd899d3ec..0a032845866d 100644
@@ -48,14 +48,14 @@
 #define CORE_CTRL_IO                    0x4a002558
 
 #define QSPI_CMD_READ                   (0x3 << 0)
-#define QSPI_CMD_READ_QUAD              (0x6b << 0)
+#define QSPI_CMD_READ_QUAD              (0x6c << 0)
 #define QSPI_CMD_READ_FAST              (0x0b << 0)
-#define QSPI_SETUP0_NUM_A_BYTES         (0x2 << 8)
+#define QSPI_SETUP0_NUM_A_BYTES         (0x3 << 8)
 #define QSPI_SETUP0_NUM_D_BYTES_NO_BITS (0x0 << 10)
 #define QSPI_SETUP0_NUM_D_BYTES_8_BITS  (0x1 << 10)
 #define QSPI_SETUP0_READ_NORMAL         (0x0 << 12)
 #define QSPI_SETUP0_READ_QUAD           (0x3 << 12)
-#define QSPI_CMD_WRITE                  (0x2 << 16)
+#define QSPI_CMD_WRITE                  (0x12 << 16)
 #define QSPI_NUM_DUMMY_BITS             (0x0 << 24)
 
 /* ti qspi register set */
--
Quoted 2 lines

2.6.3

thanks!

Signature · 2 lines
Regards
Vignesh
#3 lore raw

PATCH 1/1 spi: ti_qspi: Use 4-byte opcode for mmap read

Quoted 10 lines · Vignesh R
Quoted 7 lines · Jagan Teki
Quoted 5 lines · Vignesh R

ti-qspi driver currently uses 3-byte addressing mode(and opcodes) for memory-mapped read. This restricts maximum addressable flash size to 16MB.
Enable the 4-byte addressing(and use 4-byte opcode) for memory-mapped read to allow access to addresses above 16MB.

Quoted 7 lines
Quoted 2 lines

What about sf side, since we don't have 4-byte opcode support yet?

Well, the sf is accessing >16MB address space using EXT_ADDR registers via BAR support (for regular spi read/write). But, memory-mapped read doesn't support using EXT_ADDR, hence 4-byte opcode needs to be used for during mmap transfers to access >16MB.

So, there is no need to have 4-byte opcode support from sf side for memory-mapped reads - true?

Quoted 35 lines
Quoted 35 lines
Quoted 35 lines
[vigneshr at ti.com: Re-word commit description]

---

Tested on DRA74 EVM with Spansion flash and AM437X IDK EVM with Macronix flash.

  drivers/spi/ti_qspi.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
drivers/spi/ti_qspi.c +3 -3
index 646dd899d3ec..0a032845866d 100644
@@ -48,14 +48,14 @@
  #define CORE_CTRL_IO                    0x4a002558
 
  #define QSPI_CMD_READ                   (0x3 << 0)
-#define QSPI_CMD_READ_QUAD              (0x6b << 0)
+#define QSPI_CMD_READ_QUAD              (0x6c << 0)
  #define QSPI_CMD_READ_FAST              (0x0b << 0)
-#define QSPI_SETUP0_NUM_A_BYTES         (0x2 << 8)
+#define QSPI_SETUP0_NUM_A_BYTES         (0x3 << 8)
  #define QSPI_SETUP0_NUM_D_BYTES_NO_BITS (0x0 << 10)
  #define QSPI_SETUP0_NUM_D_BYTES_8_BITS  (0x1 << 10)
  #define QSPI_SETUP0_READ_NORMAL         (0x0 << 12)
  #define QSPI_SETUP0_READ_QUAD           (0x3 << 12)
-#define QSPI_CMD_WRITE                  (0x2 << 16)
+#define QSPI_CMD_WRITE                  (0x12 << 16)
  #define QSPI_NUM_DUMMY_BITS             (0x0 << 24)
 
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
drivers/spi/ti_qspi.c +0 -1
  /* ti qspi register set */
--

2.6.3

thanks!
--
Jagan.

author
#4 lore raw

PATCH 1/1 spi: ti_qspi: Use 4-byte opcode for mmap read

Quoted 14 lines · Jagan Teki
Quoted 13 lines · Vignesh R
Quoted 9 lines · Jagan Teki
Quoted 5 lines · Vignesh R

ti-qspi driver currently uses 3-byte addressing mode(and opcodes) for memory-mapped read. This restricts maximum addressable flash size to 16MB.
Enable the 4-byte addressing(and use 4-byte opcode) for memory-mapped read to allow access to addresses above 16MB.

What about sf side, since we don't have 4-byte opcode support yet?

Quoted 8 lines
Quoted 4 lines

Well, the sf is accessing >16MB address space using EXT_ADDR registers via BAR support (for regular spi read/write). But, memory-mapped read doesn't support using EXT_ADDR, hence 4-byte opcode needs to be used for during mmap transfers to access >16MB.

So, there is no need to have 4-byte opcode support from sf side for memory-mapped reads - true?

Yes, AFAIU, there is no programming required on the sf side to use 4-byte addressing opcode (I have tested this on Macronix MX66L51235F and Spansion S25FL256S)

Quoted 43 lines
Quoted 36 lines
Quoted 36 lines
Quoted 36 lines
[vigneshr at ti.com: Re-word commit description]

---

Tested on DRA74 EVM with Spansion flash and AM437X IDK EVM with Macronix
flash.

  drivers/spi/ti_qspi.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
drivers/spi/ti_qspi.c +3 -3
index 646dd899d3ec..0a032845866d 100644
@@ -48,14 +48,14 @@
  #define CORE_CTRL_IO                    0x4a002558
 
  #define QSPI_CMD_READ                   (0x3 << 0)
-#define QSPI_CMD_READ_QUAD              (0x6b << 0)
+#define QSPI_CMD_READ_QUAD              (0x6c << 0)
  #define QSPI_CMD_READ_FAST              (0x0b << 0)
-#define QSPI_SETUP0_NUM_A_BYTES         (0x2 << 8)
+#define QSPI_SETUP0_NUM_A_BYTES         (0x3 << 8)
  #define QSPI_SETUP0_NUM_D_BYTES_NO_BITS (0x0 << 10)
  #define QSPI_SETUP0_NUM_D_BYTES_8_BITS  (0x1 << 10)
  #define QSPI_SETUP0_READ_NORMAL         (0x0 << 12)
  #define QSPI_SETUP0_READ_QUAD           (0x3 << 12)
-#define QSPI_CMD_WRITE                  (0x2 << 16)
+#define QSPI_CMD_WRITE                  (0x12 << 16)
  #define QSPI_NUM_DUMMY_BITS             (0x0 << 24)
 
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
drivers/spi/ti_qspi.c +0 -0
  /* ti qspi register set */
Signature · 1 line
2.6.3

thanks!

Signature · 1 line
Jagan.
Signature · 2 lines
Regards
Vignesh
#5 lore raw
In reply to Vignesh R
Quoted 9 lines · Vignesh R

ti-qspi driver currently uses 3-byte addressing mode(and opcodes) for memory-mapped read. This restricts maximum addressable flash size to 16MB.
Enable the 4-byte addressing(and use 4-byte opcode) for memory-mapped read to allow access to addresses above 16MB.

[vigneshr at ti.com: Re-word commit description]

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160120/7cf6ac7c/attachment.sig>