void sda_slot_insert(void *arg) { sda_slot_t *slot = arg; if (sda_init_card(slot) != SDA_EOK) { /* * Remove power from the slot. If a more severe fault * occurred, then a manual reset with cfgadm will be needed. */ sda_slot_err(slot, "Unable to initialize card!"); sda_slot_enter(slot); sda_slot_power_off(slot); sda_slot_abort(slot, SDA_ENODEV); sda_slot_exit(slot); } else if ((slot->s_flags & SLOTF_MEMORY) == 0) { /* * SDIO: For SDIO, we can write the card's * MANFID tuple in CIS to the UUID. Until we * support SDIO, we just suppress creating * devinfo nodes. */ sda_slot_err(slot, "Non-memory target not supported"); } else { sda_slot_enter(slot); if (sda_mem_parse_cid_csd(slot) != DDI_SUCCESS) { sda_slot_err(slot, "Unable to parse card identification"); } else { slot->s_warn = B_FALSE; slot->s_ready = B_TRUE; } sda_slot_exit(slot); } slot->s_stamp = ddi_get_time(); slot->s_intransit = 0; bd_state_change(slot->s_bdh); }
void sda_slot_insert(void *arg) { sda_slot_t *slot = arg; if (sda_init_card(slot) != SDA_EOK) { /* * Remove power from the slot. If a more severe fault * occurred, then a manual reset with cfgadm will be needed. */ sda_slot_err(slot, "Unable to initialize card!"); sda_slot_enter(slot); sda_slot_power_off(slot); sda_slot_abort(slot, SDA_ENODEV); sda_slot_exit(slot); sda_nexus_remove(slot); } else { sda_nexus_insert(slot); } slot->s_stamp = ddi_get_time(); slot->s_intransit = 0; }