Lines Matching refs:msd
462 struct msd_device *msd = (struct msd_device *)dev; in rt_msd_init() local
468 if (msd->spi_device == RT_NULL) in rt_msd_init()
480 rt_spi_configure(msd->spi_device, &cfg); in rt_msd_init()
487 result = MSD_take_owner(msd->spi_device); in rt_msd_init()
494 rt_spi_release(msd->spi_device); in rt_msd_init()
510 msd->spi_device->bus->ops->xfer(msd->spi_device, &message); in rt_msd_init()
519 rt_spi_take(msd->spi_device); in rt_msd_init()
520 … result = _send_cmd(msd->spi_device, GO_IDLE_STATE, 0x00, 0x95, response_r1, response); in rt_msd_init()
521 rt_spi_release(msd->spi_device); in rt_msd_init()
545 rt_spi_take(msd->spi_device); in rt_msd_init()
546 … result = _send_cmd(msd->spi_device, SEND_IF_COND, 0x01AA, 0x87, response_r7, response); in rt_msd_init()
547 rt_spi_release(msd->spi_device); in rt_msd_init()
559 msd->card_type = MSD_CARD_TYPE_SD_V1_X; in rt_msd_init()
566 msd->card_type = MSD_CARD_TYPE_SD_V2_X; in rt_msd_init()
591 if (msd->card_type == MSD_CARD_TYPE_SD_V1_X) in rt_msd_init()
599 rt_spi_take(msd->spi_device); in rt_msd_init()
601 result = _send_cmd(msd->spi_device, READ_OCR, 0x00, 0x00, response_r3, response); in rt_msd_init()
604 rt_spi_release(msd->spi_device); in rt_msd_init()
611 rt_spi_release(msd->spi_device); in rt_msd_init()
615 rt_spi_release(msd->spi_device); in rt_msd_init()
638 rt_spi_release(msd->spi_device); in rt_msd_init()
643 rt_spi_take(msd->spi_device); in rt_msd_init()
646 result = _send_cmd(msd->spi_device, APP_CMD, 0x00, 0x00, response_r1, response); in rt_msd_init()
649 rt_spi_release(msd->spi_device); in rt_msd_init()
655 rt_spi_release(msd->spi_device); in rt_msd_init()
661 … result = _send_cmd(msd->spi_device, SD_SEND_OP_COND, 0x00, 0x00, response_r1, response); in rt_msd_init()
664 rt_spi_release(msd->spi_device); in rt_msd_init()
670 rt_spi_release(msd->spi_device); in rt_msd_init()
677 rt_spi_release(msd->spi_device); in rt_msd_init()
693 rt_spi_release(msd->spi_device); in rt_msd_init()
709 msd->spi_device->bus->ops->xfer(msd->spi_device, &message); in rt_msd_init()
717 rt_spi_take(msd->spi_device); in rt_msd_init()
718 … result = _send_cmd(msd->spi_device, GO_IDLE_STATE, 0x00, 0x95, response_r1, response); in rt_msd_init()
719 rt_spi_release(msd->spi_device); in rt_msd_init()
738 rt_spi_take(msd->spi_device); in rt_msd_init()
739 … result = _send_cmd(msd->spi_device, SEND_OP_COND, 0x00, 0x00, response_r1, response); in rt_msd_init()
740 rt_spi_release(msd->spi_device); in rt_msd_init()
745 msd->card_type = MSD_CARD_TYPE_MMC; in rt_msd_init()
758 else if (msd->card_type == MSD_CARD_TYPE_SD_V2_X) in rt_msd_init()
760 rt_spi_take(msd->spi_device); in rt_msd_init()
762 result = _send_cmd(msd->spi_device, READ_OCR, 0x00, 0x00, response_r3, response); in rt_msd_init()
765 rt_spi_release(msd->spi_device); in rt_msd_init()
772 rt_spi_release(msd->spi_device); in rt_msd_init()
778 rt_spi_release(msd->spi_device); in rt_msd_init()
799 rt_spi_take(msd->spi_device); in rt_msd_init()
802 rt_spi_release(msd->spi_device); in rt_msd_init()
809 result = _send_cmd(msd->spi_device, APP_CMD, 0x00, 0x65, response_r1, response); in rt_msd_init()
813 rt_spi_release(msd->spi_device); in rt_msd_init()
819 rt_spi_release(msd->spi_device); in rt_msd_init()
826 … result = _send_cmd(msd->spi_device, SD_SEND_OP_COND, 0x40000000, 0x77, response_r1, response); in rt_msd_init()
829 rt_spi_release(msd->spi_device); in rt_msd_init()
837 rt_spi_release(msd->spi_device); in rt_msd_init()
843 rt_spi_release(msd->spi_device); in rt_msd_init()
847 rt_spi_take(msd->spi_device); in rt_msd_init()
848 result = _send_cmd(msd->spi_device, READ_OCR, 0x00, 0x00, response_r3, response); in rt_msd_init()
851 rt_spi_release(msd->spi_device); in rt_msd_init()
858 rt_spi_release(msd->spi_device); in rt_msd_init()
863 rt_spi_release(msd->spi_device); in rt_msd_init()
874 msd->card_type = MSD_CARD_TYPE_SD_SDHC; in rt_msd_init()
889 if (msd->card_type == MSD_CARD_TYPE_SD_SDHC) in rt_msd_init()
910 rt_spi_release(msd->spi_device); in rt_msd_init()
911 rt_spi_take(msd->spi_device); in rt_msd_init()
913 result = _send_cmd(msd->spi_device, CRC_ON_OFF, 0x01, 0x83, response_r1, response); in rt_msd_init()
915 result = _send_cmd(msd->spi_device, CRC_ON_OFF, 0x00, 0x91, response_r1, response); in rt_msd_init()
917 rt_spi_release(msd->spi_device); in rt_msd_init()
928 rt_spi_release(msd->spi_device); in rt_msd_init()
929 rt_spi_take(msd->spi_device); in rt_msd_init()
930 result = _send_cmd(msd->spi_device, SET_BLOCKLEN, SECTOR_SIZE, 0x00, response_r1, response); in rt_msd_init()
931 rt_spi_release(msd->spi_device); in rt_msd_init()
938 msd->geometry.block_size = SECTOR_SIZE; in rt_msd_init()
939 msd->geometry.bytes_per_sector = SECTOR_SIZE; in rt_msd_init()
946 rt_spi_take(msd->spi_device); in rt_msd_init()
948 result = _send_cmd(msd->spi_device, SEND_CSD, 0x00, 0x00, response_r1, response); in rt_msd_init()
952 rt_spi_release(msd->spi_device); in rt_msd_init()
959 rt_spi_release(msd->spi_device); in rt_msd_init()
965 result = _read_block(msd->spi_device, CSD_buffer, MSD_CSD_LEN); in rt_msd_init()
966 rt_spi_release(msd->spi_device); in rt_msd_init()
988 if (msd->card_type == MSD_CARD_TYPE_MMC) in rt_msd_init()
1018 msd->max_clock = 100 * 1000; /* 0=100kbit/s. */ in rt_msd_init()
1022 msd->max_clock = 1 * 1000 * 1000; /* 1=1Mbit/s. */ in rt_msd_init()
1026 msd->max_clock = 10 * 1000 * 1000; /* 2=10Mbit/s. */ in rt_msd_init()
1030 msd->max_clock = 100 * 1000 * 1000; /* 3=100Mbit/s. */ in rt_msd_init()
1034 … MSD_DEBUG("[info] TRAN_SPEED: 0x%02X, %dkbit/s.\r\n", tmp8, msd->max_clock / 1000); in rt_msd_init()
1038 … MSD_DEBUG("[info] TRAN_SPEED: 0x%02X, %dMbit/s.\r\n", tmp8, msd->max_clock / 1000 / 1000); in rt_msd_init()
1069 msd->geometry.sector_count = card_capacity / msd->geometry.bytes_per_sector; in rt_msd_init()
1085 msd->max_clock = 1000 * 1000 * 10; /* 10Mbit/s. */ in rt_msd_init()
1089 msd->max_clock = 1000 * 1000 * 50; /* 50Mbit/s. */ in rt_msd_init()
1093 msd->max_clock = 1000 * 1000 * 1; /* 1Mbit/s default. */ in rt_msd_init()
1095 … MSD_DEBUG("[info] TRAN_SPEED: 0x%02X, %dMbit/s.\r\n", tmp8, msd->max_clock / 1000 / 1000); in rt_msd_init()
1125 msd->geometry.sector_count = card_capacity / msd->geometry.bytes_per_sector; in rt_msd_init()
1136 msd->max_clock = 1000 * 1000 * 10; /* 10Mbit/s. */ in rt_msd_init()
1140 msd->max_clock = 1000 * 1000 * 50; /* 50Mbit/s. */ in rt_msd_init()
1144 msd->max_clock = 1000 * 1000 * 100; /* 100Mbit/s. */ in rt_msd_init()
1150 msd->max_clock = 1000 * 1000 * 200; /* 200Mbit/s. */ in rt_msd_init()
1155 msd->max_clock = 1000 * 1000 * 1; /* 1Mbit/s default. */ in rt_msd_init()
1157 … MSD_DEBUG("[info] TRAN_SPEED: 0x%02X, %dMbit/s.\r\n", tmp8, msd->max_clock / 1000 / 1000); in rt_msd_init()
1170 msd->geometry.sector_count = (C_SIZE + 1) * 1024; /* 512KB = 1024sector */ in rt_msd_init()
1172 MSD_DEBUG("[info] sector_count : %d\r\n", msd->geometry.sector_count); in rt_msd_init()
1190 cfg.max_hz = msd->max_clock; in rt_msd_init()
1191 rt_spi_configure(msd->spi_device, &cfg); in rt_msd_init()
1195 rt_spi_release(msd->spi_device); in rt_msd_init()
1196 rt_mutex_release(&(msd->spi_device->bus->lock)); in rt_msd_init()
1214 struct msd_device *msd = (struct msd_device *)dev; in rt_msd_read() local
1218 result = MSD_take_owner(msd->spi_device); in rt_msd_read()
1228 rt_spi_take(msd->spi_device); in rt_msd_read()
1230 …result = _send_cmd(msd->spi_device, READ_SINGLE_BLOCK, pos * msd->geometry.bytes_per_sector, 0x00,… in rt_msd_read()
1238 result = _read_block(msd->spi_device, buffer, msd->geometry.bytes_per_sector); in rt_msd_read()
1249 rt_spi_take(msd->spi_device); in rt_msd_read()
1251 …result = _send_cmd(msd->spi_device, READ_MULTIPLE_BLOCK, pos * msd->geometry.bytes_per_sector, 0x0… in rt_msd_read()
1261 result = _read_block(msd->spi_device, in rt_msd_read()
1262 (uint8_t *)buffer + msd->geometry.bytes_per_sector * i, in rt_msd_read()
1263 msd->geometry.bytes_per_sector); in rt_msd_read()
1273 result = _send_cmd(msd->spi_device, STOP_TRANSMISSION, 0x00, 0x00, response_r1b, response); in rt_msd_read()
1282 rt_spi_release(msd->spi_device); in rt_msd_read()
1283 rt_mutex_release(&(msd->spi_device->bus->lock)); in rt_msd_read()
1290 struct msd_device *msd = (struct msd_device *)dev; in rt_msd_sdhc_read() local
1294 result = MSD_take_owner(msd->spi_device); in rt_msd_sdhc_read()
1304 rt_spi_take(msd->spi_device); in rt_msd_sdhc_read()
1306 result = _send_cmd(msd->spi_device, READ_SINGLE_BLOCK, pos, 0x00, response_r1, response); in rt_msd_sdhc_read()
1314 result = _read_block(msd->spi_device, buffer, msd->geometry.bytes_per_sector); in rt_msd_sdhc_read()
1325 rt_spi_take(msd->spi_device); in rt_msd_sdhc_read()
1327 result = _send_cmd(msd->spi_device, READ_MULTIPLE_BLOCK, pos, 0x00, response_r1, response); in rt_msd_sdhc_read()
1337 result = _read_block(msd->spi_device, in rt_msd_sdhc_read()
1338 (uint8_t *)buffer + msd->geometry.bytes_per_sector * i, in rt_msd_sdhc_read()
1339 msd->geometry.bytes_per_sector); in rt_msd_sdhc_read()
1349 result = _send_cmd(msd->spi_device, STOP_TRANSMISSION, 0x00, 0x00, response_r1b, response); in rt_msd_sdhc_read()
1358 rt_spi_release(msd->spi_device); in rt_msd_sdhc_read()
1359 rt_mutex_release(&(msd->spi_device->bus->lock)); in rt_msd_sdhc_read()
1366 struct msd_device *msd = (struct msd_device *)dev; in rt_msd_write() local
1370 result = MSD_take_owner(msd->spi_device); in rt_msd_write()
1382 rt_spi_take(msd->spi_device); in rt_msd_write()
1383 …result = _send_cmd(msd->spi_device, WRITE_BLOCK, pos * msd->geometry.bytes_per_sector, 0x00, respo… in rt_msd_write()
1391 …result = _write_block(msd->spi_device, buffer, msd->geometry.bytes_per_sector, MSD_TOKEN_WRITE_SIN… in rt_msd_write()
1403 rt_spi_take(msd->spi_device); in rt_msd_write()
1406 if (msd->card_type != MSD_CARD_TYPE_MMC) in rt_msd_write()
1409 result = _send_cmd(msd->spi_device, APP_CMD, 0x00, 0x00, response_r1, response); in rt_msd_write()
1418 … result = _send_cmd(msd->spi_device, SET_WR_BLK_ERASE_COUNT, size, 0x00, response_r1, response); in rt_msd_write()
1428 …result = _send_cmd(msd->spi_device, WRITE_MULTIPLE_BLOCK, pos * msd->geometry.bytes_per_sector, 0x… in rt_msd_write()
1439 result = _write_block(msd->spi_device, in rt_msd_write()
1440 (const uint8_t *)buffer + msd->geometry.bytes_per_sector * i, in rt_msd_write()
1441 msd->geometry.bytes_per_sector, in rt_msd_write()
1465 msd->spi_device->bus->ops->xfer(msd->spi_device, &message); in rt_msd_write()
1469 result = _wait_ready(msd->spi_device); in rt_msd_write()
1478 rt_spi_release(msd->spi_device); in rt_msd_write()
1479 rt_mutex_release(&(msd->spi_device->bus->lock)); in rt_msd_write()
1486 struct msd_device *msd = (struct msd_device *)dev; in rt_msd_sdhc_write() local
1490 result = MSD_take_owner(msd->spi_device); in rt_msd_sdhc_write()
1500 rt_spi_take(msd->spi_device); in rt_msd_sdhc_write()
1501 result = _send_cmd(msd->spi_device, WRITE_BLOCK, pos, 0x00, response_r1, response); in rt_msd_sdhc_write()
1509 …result = _write_block(msd->spi_device, buffer, msd->geometry.bytes_per_sector, MSD_TOKEN_WRITE_SIN… in rt_msd_sdhc_write()
1521 rt_spi_take(msd->spi_device); in rt_msd_sdhc_write()
1525 result = _send_cmd(msd->spi_device, APP_CMD, 0x00, 0x00, response_r1, response); in rt_msd_sdhc_write()
1534 … result = _send_cmd(msd->spi_device, SET_WR_BLK_ERASE_COUNT, size, 0x00, response_r1, response); in rt_msd_sdhc_write()
1543 result = _send_cmd(msd->spi_device, WRITE_MULTIPLE_BLOCK, pos, 0x00, response_r1, response); in rt_msd_sdhc_write()
1554 result = _write_block(msd->spi_device, in rt_msd_sdhc_write()
1555 (const uint8_t *)buffer + msd->geometry.bytes_per_sector * i, in rt_msd_sdhc_write()
1556 msd->geometry.bytes_per_sector, in rt_msd_sdhc_write()
1580 msd->spi_device->bus->ops->xfer(msd->spi_device, &message); in rt_msd_sdhc_write()
1583 result = _wait_ready(msd->spi_device); in rt_msd_sdhc_write()
1592 rt_spi_release(msd->spi_device); in rt_msd_sdhc_write()
1593 rt_mutex_release(&(msd->spi_device->bus->lock)); in rt_msd_sdhc_write()
1600 struct msd_device *msd = (struct msd_device *)dev; in rt_msd_control() local
1611 geometry->bytes_per_sector = msd->geometry.bytes_per_sector; in rt_msd_control()
1612 geometry->block_size = msd->geometry.block_size; in rt_msd_control()
1613 geometry->sector_count = msd->geometry.sector_count; in rt_msd_control()