]>
git.ipfire.org Git - people/ms/u-boot.git/blob - drivers/mtd/spi/spi_flash.c
4 * Copyright (C) 2008 Atmel Corporation
5 * Copyright (C) 2010 Reinhard Meyer, EMK Elektronik
7 * Licensed under the GPL-2 or later.
13 static int spi_flash_read_write(struct spi_slave
*spi
,
14 const u8
*cmd
, size_t cmd_len
,
15 const u8
*data_out
, u8
*data_in
,
18 unsigned long flags
= SPI_XFER_BEGIN
;
22 flags
|= SPI_XFER_END
;
24 ret
= spi_xfer(spi
, cmd_len
* 8, cmd
, NULL
, flags
);
26 debug("SF: Failed to send command (%zu bytes): %d\n",
28 } else if (data_len
!= 0) {
29 ret
= spi_xfer(spi
, data_len
* 8, data_out
, data_in
,
32 debug("SF: Failed to transfer %zu bytes of data: %d\n",
39 int spi_flash_cmd_read(struct spi_slave
*spi
, const u8
*cmd
,
40 size_t cmd_len
, void *data
, size_t data_len
)
42 return spi_flash_read_write(spi
, cmd
, cmd_len
, NULL
, data
, data_len
);
45 int spi_flash_cmd(struct spi_slave
*spi
, u8 cmd
, void *response
, size_t len
)
47 return spi_flash_cmd_read(spi
, &cmd
, 1, response
, len
);
50 int spi_flash_cmd_write(struct spi_slave
*spi
, const u8
*cmd
, size_t cmd_len
,
51 const void *data
, size_t data_len
)
53 return spi_flash_read_write(spi
, cmd
, cmd_len
, data
, NULL
, data_len
);