Lines Matching +full:multi +full:- +full:bit
5 * Licensed under the GPL-2 or later.
13 #include <u-boot/crc.h>
25 /* R1 bit 7 is always zero, reuse this bit for error */
41 /* MMC SPI commands start with a start bit "0" and a transmit bit "1" */
55 struct spi_slave *spi = mmc->priv; in mmc_spi_sendcmd()
79 struct spi_slave *spi = mmc->priv; in mmc_spi_readdata()
84 while (bcnt--) { in mmc_spi_readdata()
96 debug("%s: CRC error\n", mmc->cfg->name); in mmc_spi_readdata()
112 u32 bcnt, u32 bsize, int multi) in mmc_spi_writedata() argument
114 struct spi_slave *spi = mmc->priv; in mmc_spi_writedata()
121 tok[1] = multi ? SPI_TOKEN_MULTI_WRITE : SPI_TOKEN_SINGLE; in mmc_spi_writedata()
122 while (bcnt--) { in mmc_spi_writedata()
155 if (multi && bcnt == -1) { /* stop multi write */ in mmc_spi_writedata()
176 struct spi_slave *spi = mmc->priv; in mmc_spi_request()
181 cmd->cmdidx, cmd->resp_type, cmd->cmdarg); in mmc_spi_request()
184 r1 = mmc_spi_sendcmd(mmc, cmd->cmdidx, cmd->cmdarg); in mmc_spi_request()
186 ret = -ENOMEDIUM; in mmc_spi_request()
189 ret = -ECOMM; in mmc_spi_request()
192 ret = -ETIMEDOUT; in mmc_spi_request()
194 } else if (cmd->resp_type == MMC_RSP_R2) { in mmc_spi_request()
195 r1 = mmc_spi_readdata(mmc, cmd->response, 1, 16); in mmc_spi_request()
197 cmd->response[i] = be32_to_cpu(cmd->response[i]); in mmc_spi_request()
198 debug("r128 %x %x %x %x\n", cmd->response[0], cmd->response[1], in mmc_spi_request()
199 cmd->response[2], cmd->response[3]); in mmc_spi_request()
201 switch (cmd->cmdidx) { in mmc_spi_request()
204 cmd->response[0] = (r1 & R1_SPI_IDLE) ? 0 : OCR_BUSY; in mmc_spi_request()
208 spi_xfer(spi, 4 * 8, NULL, cmd->response, 0); in mmc_spi_request()
209 cmd->response[0] = be32_to_cpu(cmd->response[0]); in mmc_spi_request()
210 debug("r32 %x\n", cmd->response[0]); in mmc_spi_request()
213 spi_xfer(spi, 1 * 8, NULL, cmd->response, 0); in mmc_spi_request()
214 cmd->response[0] = (cmd->response[0] & 0xff) ? in mmc_spi_request()
220 data->flags, data->blocks, data->blocksize); in mmc_spi_request()
221 if (data->flags == MMC_DATA_READ) in mmc_spi_request()
222 r1 = mmc_spi_readdata(mmc, data->dest, in mmc_spi_request()
223 data->blocks, data->blocksize); in mmc_spi_request()
224 else if (data->flags == MMC_DATA_WRITE) in mmc_spi_request()
225 r1 = mmc_spi_writedata(mmc, data->src, in mmc_spi_request()
226 data->blocks, data->blocksize, in mmc_spi_request()
227 (cmd->cmdidx == MMC_CMD_WRITE_MULTIPLE_BLOCK)); in mmc_spi_request()
229 ret = -ECOMM; in mmc_spi_request()
231 ret = -ETIMEDOUT; in mmc_spi_request()
241 struct spi_slave *spi = mmc->priv; in mmc_spi_set_ios()
243 debug("%s: clock %u\n", __func__, mmc->clock); in mmc_spi_set_ios()
244 if (mmc->clock) in mmc_spi_set_ios()
245 spi_set_speed(spi, mmc->clock); in mmc_spi_set_ios()
251 struct spi_slave *spi = mmc->priv; in mmc_spi_init_p()