Lines Matching refs:periph

118 	struct cam_periph *periph;  member
174 static void sddadone(struct cam_periph *periph,
180 static uint16_t get_rca(struct cam_periph *periph);
183 static void sdda_process_mmc_partitions(struct cam_periph *periph, union ccb *start_ccb);
184 static uint32_t sdda_get_host_caps(struct cam_periph *periph, union ccb *ccb);
185 static int mmc_select_card(struct cam_periph *periph, union ccb *ccb, uint32_t rca);
186 static inline uint32_t mmc_get_sector_size(struct cam_periph *periph) {return MMC_SECTOR_SIZE;} in mmc_get_sector_size() argument
196 static inline bool sdda_get_read_only(struct cam_periph *periph, union ccb *start_ccb) in sdda_get_read_only() argument
202 static uint32_t mmc_get_spec_vers(struct cam_periph *periph);
203 static uint64_t mmc_get_media_size(struct cam_periph *periph);
204 static uint32_t mmc_get_cmd6_timeout(struct cam_periph *periph);
205 static bool sdda_add_part(struct cam_periph *periph, u_int type,
235 get_rca(struct cam_periph *periph) { in get_rca() argument
236 return periph->path->device->mmc_ident_data.card_rca; in get_rca()
444 struct cam_periph *periph; in sddaopen() local
450 periph = softc->periph; in sddaopen()
451 if (cam_periph_acquire(periph) != 0) { in sddaopen()
455 cam_periph_lock(periph); in sddaopen()
456 if ((error = cam_periph_hold(periph, PRIBIO|PCATCH)) != 0) { in sddaopen()
457 cam_periph_unlock(periph); in sddaopen()
458 cam_periph_release(periph); in sddaopen()
462 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaopen\n")); in sddaopen()
466 cam_periph_unhold(periph); in sddaopen()
467 cam_periph_unlock(periph); in sddaopen()
475 struct cam_periph *periph; in sddaclose() local
480 periph = softc->periph; in sddaclose()
483 cam_periph_lock(periph); in sddaclose()
485 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaclose\n")); in sddaclose()
488 cam_periph_sleep(periph, &softc->refcount, PRIBIO, "sddaclose", 1); in sddaclose()
489 cam_periph_unlock(periph); in sddaclose()
490 cam_periph_release(periph); in sddaclose()
495 sddaschedule(struct cam_periph *periph) in sddaschedule() argument
497 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in sddaschedule()
513 xpt_schedule(periph, CAM_PRIORITY_NORMAL); in sddaschedule()
525 struct cam_periph *periph; in sddastrategy() local
531 periph = softc->periph; in sddastrategy()
533 cam_periph_lock(periph); in sddastrategy()
535 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddastrategy(%p)\n", bp)); in sddastrategy()
540 if ((periph->flags & CAM_PERIPH_INVALID) != 0) { in sddastrategy()
541 cam_periph_unlock(periph); in sddastrategy()
554 sddaschedule(periph); in sddastrategy()
555 cam_periph_unlock(periph); in sddastrategy()
584 struct cam_periph *periph; in sddadiskgonecb() local
588 periph = part->sc->periph; in sddadiskgonecb()
589 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddadiskgonecb\n")); in sddadiskgonecb()
591 cam_periph_release(periph); in sddadiskgonecb()
595 sddaoninvalidate(struct cam_periph *periph) in sddaoninvalidate() argument
600 softc = (struct sdda_softc *)periph->softc; in sddaoninvalidate()
602 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaoninvalidate\n")); in sddaoninvalidate()
607 xpt_register_async(0, sddaasync, periph, periph->path); in sddaoninvalidate()
614 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("bioq_flush start\n")); in sddaoninvalidate()
621 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("bioq_flush end\n")); in sddaoninvalidate()
625 sddacleanup(struct cam_periph *periph) in sddacleanup() argument
631 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddacleanup\n")); in sddacleanup()
632 softc = (struct sdda_softc *)periph->softc; in sddacleanup()
634 cam_periph_unlock(periph); in sddacleanup()
644 cam_periph_lock(periph); in sddacleanup()
652 struct cam_periph *periph; in sddaasync() local
654 periph = (struct cam_periph *)callback_arg; in sddaasync()
695 xpt_gdev_type(&cgd, periph->path); in sddaasync()
696 cam_periph_async(periph, code, path, arg); in sddaasync()
710 softc = periph->softc; in sddaasync()
722 cam_periph_async(periph, code, path, arg); in sddaasync()
730 struct cam_periph *periph; in sddagetattr() local
737 periph = softc->periph; in sddagetattr()
738 cam_periph_lock(periph); in sddagetattr()
740 periph->path); in sddagetattr()
741 cam_periph_unlock(periph); in sddagetattr()
748 sddaregister(struct cam_periph *periph, void *arg) in sddaregister() argument
753 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaregister\n")); in sddaregister()
777 periph->softc = softc; in sddaregister()
778 softc->periph = periph; in sddaregister()
780 xpt_schedule(periph, CAM_PRIORITY_XPT); in sddaregister()
781 TASK_INIT(&softc->start_init_task, 0, sdda_start_init_task, periph); in sddaregister()
788 mmc_exec_app_cmd(struct cam_periph *periph, union ccb *ccb, in mmc_exec_app_cmd() argument
801 /*mmc_arg*/ get_rca(periph) << 16, in mmc_exec_app_cmd()
844 mmc_app_get_scr(struct cam_periph *periph, union ccb *ccb, uint32_t *rawscr) in mmc_app_get_scr() argument
863 err = mmc_exec_app_cmd(periph, ccb, &cmd); in mmc_app_get_scr()
870 mmc_send_ext_csd(struct cam_periph *periph, union ccb *ccb, in mmc_send_ext_csd() argument
936 mmc_select_card(struct cam_periph *periph, union ccb *ccb, uint32_t rca) in mmc_select_card() argument
957 mmc_switch(struct cam_periph *periph, union ccb *ccb, in mmc_switch() argument
969 mmc_get_spec_vers(struct cam_periph *periph) in mmc_get_spec_vers() argument
971 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in mmc_get_spec_vers()
977 mmc_get_media_size(struct cam_periph *periph) in mmc_get_media_size() argument
979 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in mmc_get_media_size()
985 mmc_get_cmd6_timeout(struct cam_periph *periph) in mmc_get_cmd6_timeout() argument
987 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in mmc_get_cmd6_timeout()
989 if (mmc_get_spec_vers(periph) >= 6) in mmc_get_cmd6_timeout()
995 mmc_sd_switch(struct cam_periph *periph, union ccb *ccb, in mmc_sd_switch() argument
1030 mmc_set_timing(struct cam_periph *periph, in mmc_set_timing() argument
1037 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in mmc_set_timing()
1038 struct mmc_params *mmcp = &periph->path->device->mmc_ident_data; in mmc_set_timing()
1053 err = mmc_switch(periph, ccb, EXT_CSD_CMD_SET_NORMAL, in mmc_set_timing()
1056 err = mmc_sd_switch(periph, ccb, SD_SWITCH_MODE_SET, SD_SWITCH_GROUP1, value, switch_res); in mmc_set_timing()
1078 struct cam_periph *periph; in sdda_start_init_task() local
1080 periph = (struct cam_periph *)context; in sdda_start_init_task()
1081 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sdda_start_init_task\n")); in sdda_start_init_task()
1083 xpt_setup_ccb(&new_ccb->ccb_h, periph->path, in sdda_start_init_task()
1086 cam_periph_lock(periph); in sdda_start_init_task()
1087 cam_periph_hold(periph, PRIBIO|PCATCH); in sdda_start_init_task()
1089 cam_periph_unhold(periph); in sdda_start_init_task()
1090 cam_periph_unlock(periph); in sdda_start_init_task()
1095 sdda_set_bus_width(struct cam_periph *periph, union ccb *ccb, int width) in sdda_set_bus_width() argument
1097 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in sdda_set_bus_width()
1098 struct mmc_params *mmcp = &periph->path->device->mmc_ident_data; in sdda_set_bus_width()
1101 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sdda_set_bus_width\n")); in sdda_set_bus_width()
1119 err = mmc_switch(periph, ccb, EXT_CSD_CMD_SET_NORMAL, in sdda_set_bus_width()
1128 err = mmc_exec_app_cmd(periph, ccb, &cmd); in sdda_set_bus_width()
1132 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Error %d when setting bus width on the card\n", err)); in sdda_set_bus_width()
1188 sdda_get_host_caps(struct cam_periph *periph, union ccb *ccb) in sdda_get_host_caps() argument
1209 struct cam_periph *periph = (struct cam_periph *)context; in sdda_start_init() local
1217 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sdda_start_init\n")); in sdda_start_init()
1219 if ((periph->flags & CAM_PERIPH_INVALID) != 0) { in sdda_start_init()
1220 cam_periph_release(periph); in sdda_start_init()
1224 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in sdda_start_init()
1225 struct mmc_params *mmcp = &periph->path->device->mmc_ident_data; in sdda_start_init()
1226 struct cam_ed *device = periph->path->device; in sdda_start_init()
1231 if (mmc_get_spec_vers(periph) >= 4) { in sdda_start_init()
1232 err = mmc_send_ext_csd(periph, start_ccb, in sdda_start_init()
1236 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_start_init()
1248 softc->cmd6_time = mmc_get_cmd6_timeout(periph); in sdda_start_init()
1251 if (mmc_get_spec_vers(periph) >= 4) { in sdda_start_init()
1263 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_start_init()
1309 if (mmc_app_get_scr(periph, start_ccb, rawscr)) { in sdda_start_init()
1310 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Cannot get SCR\n")); in sdda_start_init()
1316 mmc_sd_switch(periph, start_ccb, SD_SWITCH_MODE_CHECK, in sdda_start_init()
1319 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Card supports HS\n")); in sdda_start_init()
1333 mmc_select_card(periph, start_ccb, 0); in sdda_start_init()
1334 mmc_select_card(periph, start_ccb, get_rca(periph)); in sdda_start_init()
1336 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Not trying the switch\n")); in sdda_start_init()
1341 if (mmcp->card_features & CARD_FEATURE_MMC && mmc_get_spec_vers(periph) >= 4) { in sdda_start_init()
1351 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Card supports DDR52 at 1.2V\n")); in sdda_start_init()
1357 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Card supports DDR52 at 1.8V\n")); in sdda_start_init()
1363 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Card supports HS200 at 1.2V\n")); in sdda_start_init()
1369 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Card supports HS200 at 1.8V\n")); in sdda_start_init()
1376 …CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Set SD freq to %d MHz (min out of host f=%d MHz and ca… in sdda_start_init()
1380 err = mmc_set_timing(periph, start_ccb, bus_timing_hs); in sdda_start_init()
1382 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("Cannot switch card to high-speed mode")); in sdda_start_init()
1454 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_start_init()
1459 sdda_set_bus_width(periph, start_ccb, desired_bus_width); in sdda_start_init()
1463 cam_periph_unhold(periph); in sdda_start_init()
1465 if (mmcp->card_features & CARD_FEATURE_MMC && mmc_get_spec_vers(periph) >= 4) { in sdda_start_init()
1466 sdda_process_mmc_partitions(periph, start_ccb); in sdda_start_init()
1469 if (sdda_add_part(periph, 0, SDDA_FMT, in sdda_start_init()
1470 periph->unit_number, in sdda_start_init()
1471 mmc_get_media_size(periph), in sdda_start_init()
1472 sdda_get_read_only(periph, start_ccb)) == false) in sdda_start_init()
1476 cam_periph_hold(periph, PRIBIO|PCATCH); in sdda_start_init()
1478 xpt_announce_periph(periph, softc->card_id_string); in sdda_start_init()
1486 AC_ADVINFO_CHANGED, sddaasync, periph, periph->path); in sdda_start_init()
1490 sdda_add_part(struct cam_periph *periph, u_int type, const char *name, in sdda_add_part() argument
1493 struct sdda_softc *sc = (struct sdda_softc *)periph->softc; in sdda_add_part()
1497 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_add_part()
1514 snprintf(part->name, sizeof(part->name), name, "sdda", periph->unit_number); in sdda_add_part()
1524 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_add_part()
1531 xpt_path_inq(&cpi, periph->path); in sdda_add_part()
1536 (void)cam_periph_hold(periph, PRIBIO); in sdda_add_part()
1537 cam_periph_unlock(periph); in sdda_add_part()
1550 if (cam_sim_pollable(periph->sim)) in sdda_add_part()
1570 part->disk->d_sectorsize = mmc_get_sector_size(periph); in sdda_add_part()
1578 snprintf(cname, sizeof(cname), name, "mmcsd", periph->unit_number); in sdda_add_part()
1587 if (cam_periph_acquire(periph) != 0) { in sdda_add_part()
1588 xpt_print(periph->path, "%s: lost periph during " in sdda_add_part()
1590 cam_periph_lock(periph); in sdda_add_part()
1594 cam_periph_lock(periph); in sdda_add_part()
1595 cam_periph_unhold(periph); in sdda_add_part()
1605 sdda_process_mmc_partitions(struct cam_periph *periph, union ccb *ccb) in sdda_process_mmc_partitions() argument
1607 struct sdda_softc *sc = (struct sdda_softc *)periph->softc; in sdda_process_mmc_partitions()
1608 struct mmc_params *mmcp = &periph->path->device->mmc_ident_data; in sdda_process_mmc_partitions()
1640 sector_size = mmc_get_sector_size(periph); in sdda_process_mmc_partitions()
1652 if (size != mmc_get_media_size(periph) * sector_size) { in sdda_process_mmc_partitions()
1660 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_process_mmc_partitions()
1668 ro = sdda_get_read_only(periph, ccb); in sdda_process_mmc_partitions()
1669 sdda_add_part(periph, EXT_CSD_PART_CONFIG_ACC_DEFAULT, SDDA_FMT, in sdda_process_mmc_partitions()
1670 periph->unit_number, mmc_get_media_size(periph), ro); in sdda_process_mmc_partitions()
1673 if (mmc_get_spec_vers(periph) < 3) in sdda_process_mmc_partitions()
1678 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sdda_process_mmc_partitions()
1692 if (size > 0 && (sdda_get_host_caps(periph, ccb) & MMC_CAP_BOOT_NOACC) == 0) { in sdda_process_mmc_partitions()
1693 sdda_add_part(periph, EXT_CSD_PART_CONFIG_ACC_BOOT0, in sdda_process_mmc_partitions()
1697 sdda_add_part(periph, EXT_CSD_PART_CONFIG_ACC_BOOT1, in sdda_process_mmc_partitions()
1706 sdda_add_part(periph, EXT_CSD_PART_CONFIG_ACC_RPMB, in sdda_process_mmc_partitions()
1726 sdda_add_part(periph, EXT_CSD_PART_CONFIG_ACC_GP0 + i, in sdda_process_mmc_partitions()
1740 sdda_init_switch_part(struct cam_periph *periph, union ccb *start_ccb, in sdda_init_switch_part() argument
1743 struct sdda_softc *sc = (struct sdda_softc *)periph->softc; in sdda_init_switch_part()
1757 cam_periph_unlock(periph); in sdda_init_switch_part()
1759 cam_periph_lock(periph); in sdda_init_switch_part()
1764 sddastart(struct cam_periph *periph, union ccb *start_ccb) in sddastart() argument
1767 struct sdda_softc *softc = (struct sdda_softc *)periph->softc; in sddastart()
1769 struct mmc_params *mmcp = &periph->path->device->mmc_ident_data; in sddastart()
1772 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddastart\n")); in sddastart()
1775 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("device is not in SDDA_STATE_NORMAL yet\n")); in sddastart()
1796 CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, in sddastart()
1810 sdda_init_switch_part(periph, start_ccb, part_index); in sddastart()
1818 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("BIO_WRITE\n")); in sddastart()
1829 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("BIO_READ\n")); in sddastart()
1830 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, in sddastart()
1875 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("BIO_FLUSH\n")); in sddastart()
1876 sddaschedule(periph); in sddastart()
1879 CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("BIO_DELETE\n")); in sddastart()
1880 sddaschedule(periph); in sddastart()
1890 cam_periph_unlock(periph); in sddastart()
1892 cam_periph_lock(periph); in sddastart()
1895 sddaschedule(periph); in sddastart()
1899 sddadone(struct cam_periph *periph, union ccb *done_ccb) in sddadone() argument
1908 softc = (struct sdda_softc *)periph->softc; in sddadone()
1945 xpt_schedule(periph, CAM_PRIORITY_NORMAL); in sddadone()
1957 xpt_schedule(periph, CAM_PRIORITY_NORMAL); in sddadone()
1996 struct cam_periph *periph; in sddadump() local
2005 periph = softc->periph; in sddadump()
2006 mmcp = &periph->path->device->mmc_ident_data; in sddadump()
2019 xpt_setup_ccb(&mmcio.ccb_h, periph->path, CAM_PRIORITY_NORMAL); /* XXX needed? */ in sddadump()