Skip to content

Commit caa7882

Browse files
author
Jon Lin
committed
drivers: rkflash: Support spinor prog_addr_lines
Change-Id: I64ec763fdd420486b909bb1c11523fda651a3100 Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
1 parent 348c539 commit caa7882

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

drivers/rkflash/sfc_nor.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,7 @@ int snor_prog_page(struct SFNOR_DEV *p_dev,
336336
op.sfctrl.d32 = 0;
337337
op.sfctrl.b.datalines = p_dev->prog_lines;
338338
op.sfctrl.b.enbledma = 1;
339-
if (p_dev->prog_lines == DATA_LINES_X4)
340-
op.sfctrl.b.addrlines = SFC_4BITS_LINE;
339+
op.sfctrl.b.addrlines = p_dev->prog_addr_lines;
341340

342341
if (p_dev->addr_mode == ADDR_MODE_4BYTE)
343342
op.sfcmd.b.addrbits = SFC_ADDR_32BITS;
@@ -641,6 +640,10 @@ static int snor_parse_flash_table(struct SFNOR_DEV *p_dev,
641640
p_dev->read_lines == DATA_LINES_X4) {
642641
p_dev->prog_lines = DATA_LINES_X4;
643642
p_dev->prog_cmd = g_spi_flash_info->prog_cmd_4;
643+
if ((p_dev->manufacturer == MID_MACRONIX) &&
644+
(p_dev->prog_cmd == CMD_PAGE_PROG_A4 ||
645+
p_dev->prog_cmd == CMD_PAGE_PROG_4PP))
646+
p_dev->prog_addr_lines = DATA_LINES_X4;
644647
}
645648

646649
if (g_spi_flash_info->feature & FEA_4BYTE_ADDR)
@@ -685,6 +688,7 @@ int snor_init(struct SFNOR_DEV *p_dev)
685688
p_dev->sec_erase_cmd = CMD_SECTOR_ERASE;
686689
p_dev->blk_erase_cmd = CMD_BLOCK_ERASE;
687690
p_dev->prog_lines = DATA_LINES_X1;
691+
p_dev->prog_addr_lines = DATA_LINES_X1;
688692
p_dev->read_lines = DATA_LINES_X1;
689693
p_dev->write_status = snor_write_status;
690694
snor_reset_device();

drivers/rkflash/sfc_nor.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
#define CMD_PAGE_PROG_X4 (0x32)
6060
/* X1 cmd, X4 addr, X4 data, SUPPORT MARCONIX */
6161
#define CMD_PAGE_PROG_A4 (0x38)
62+
/* X1 cmd, X4 addr, X4 data, SUPPORT MARCONIX */
63+
#define CMD_PAGE_PROG_4PP (0x3E)
6264
#define CMD_RESET_NAND (0xFF)
6365
#define CMD_ENTER_4BYTE_MODE (0xB7)
6466
#define CMD_EXIT_4BYTE_MODE (0xE9)
@@ -108,6 +110,7 @@ struct SFNOR_DEV {
108110

109111
enum SFC_DATA_LINES read_lines;
110112
enum SFC_DATA_LINES prog_lines;
113+
enum SFC_DATA_LINES prog_addr_lines;
111114

112115
SNOR_WRITE_STATUS write_status;
113116
u32 max_iosize;

0 commit comments

Comments
 (0)