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:
parent
db7f180f86
commit
88ea3acb7b
|
|
@ -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, ®s->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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue