spi: rockchip_sfc: Support setting SPI Nand write xbits address

Change-Id: I09d746191323c1e14d8993e71df6d1d5fd621910
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
This commit is contained in:
Jon Lin 2020-04-27 09:23:46 +08:00 committed by Jianhong Chen
parent db7f180f86
commit 88ea3acb7b
1 changed files with 6 additions and 0 deletions

View File

@ -127,6 +127,7 @@ struct rockchip_sfc {
u32 cmd; u32 cmd;
u32 addr; u32 addr;
u8 addr_bits; u8 addr_bits;
u8 addr_xbits_ext;
u8 dummy_bits; u8 dummy_bits;
u8 rw; u8 rw;
u32 trb; u32 trb;
@ -264,6 +265,9 @@ static void rockchip_sfc_setup_xfer(struct rockchip_sfc *sfc, u32 trb)
sfc->addr_bits == SFC_ADDR_32BITS) sfc->addr_bits == SFC_ADDR_32BITS)
data_width = rockchip_sfc_get_if_type(sfc); data_width = rockchip_sfc_get_if_type(sfc);
if (sfc->addr_bits & SFC_ADDR_XBITS)
writel(sfc->addr_xbits_ext - 1, &regs->abit);
val |= (data_width << SFC_DATA_WIDTH_SHIFT); val |= (data_width << SFC_DATA_WIDTH_SHIFT);
rockchip_sfc_wait_idle(sfc, 10); rockchip_sfc_wait_idle(sfc, 10);
@ -524,11 +528,13 @@ static int rockchip_sfc_xfer(struct udevice *dev, unsigned int bitlen,
break; break;
case 3: /* Nand prog, */ case 3: /* Nand prog, */
sfc->addr_bits = SFC_ADDR_XBITS; sfc->addr_bits = SFC_ADDR_XBITS;
sfc->addr_xbits_ext = 16;
sfc->dummy_bits = 0; sfc->dummy_bits = 0;
sfc->addr = pcmd[2] | pcmd[1] << 8; sfc->addr = pcmd[2] | pcmd[1] << 8;
break; break;
case 2: /* Nand read/write feature */ case 2: /* Nand read/write feature */
sfc->addr_bits = SFC_ADDR_XBITS; sfc->addr_bits = SFC_ADDR_XBITS;
sfc->addr_xbits_ext = 8;
sfc->dummy_bits = 0; sfc->dummy_bits = 0;
sfc->addr = pcmd[1]; sfc->addr = pcmd[1];
break; break;