Lines Matching refs:slot
175 static void mmc_omap_fclk_offdelay(struct mmc_omap_slot *slot) in mmc_omap_fclk_offdelay() argument
179 if (slot != NULL && slot->host->fclk_enabled && slot->fclk_freq > 0) { in mmc_omap_fclk_offdelay()
180 tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, slot->fclk_freq); in mmc_omap_fclk_offdelay()
200 static void mmc_omap_select_slot(struct mmc_omap_slot *slot, int claimed) in mmc_omap_select_slot() argument
202 struct mmc_omap_host *host = slot->host; in mmc_omap_select_slot()
213 host->mmc = slot->mmc; in mmc_omap_select_slot()
217 if (host->current_slot != slot || !claimed) in mmc_omap_select_slot()
220 if (host->current_slot != slot) { in mmc_omap_select_slot()
221 OMAP_MMC_WRITE(host, CON, slot->saved_con & 0xFC00); in mmc_omap_select_slot()
223 host->pdata->switch_slot(mmc_dev(slot->mmc), slot->id); in mmc_omap_select_slot()
224 host->current_slot = slot; in mmc_omap_select_slot()
235 OMAP_MMC_WRITE(host, CON, slot->saved_con); in mmc_omap_select_slot()
258 static void mmc_omap_release_slot(struct mmc_omap_slot *slot, int clk_enabled) in mmc_omap_release_slot() argument
260 struct mmc_omap_host *host = slot->host; in mmc_omap_release_slot()
264 BUG_ON(slot == NULL || host->mmc == NULL); in mmc_omap_release_slot()
271 mmc_omap_fclk_offdelay(slot); in mmc_omap_release_slot()
301 int mmc_omap_cover_is_open(struct mmc_omap_slot *slot) in mmc_omap_cover_is_open() argument
303 if (slot->pdata->get_cover_state) in mmc_omap_cover_is_open()
304 return slot->pdata->get_cover_state(mmc_dev(slot->mmc), in mmc_omap_cover_is_open()
305 slot->id); in mmc_omap_cover_is_open()
314 struct mmc_omap_slot *slot = mmc_priv(mmc); in mmc_omap_show_cover_switch() local
316 return sprintf(buf, "%s\n", mmc_omap_cover_is_open(slot) ? "open" : in mmc_omap_show_cover_switch()
327 struct mmc_omap_slot *slot = mmc_priv(mmc); in mmc_omap_show_slot_name() local
329 return sprintf(buf, "%s\n", slot->pdata->name); in mmc_omap_show_slot_name()
434 struct mmc_omap_slot *slot = host->current_slot; in mmc_omap_send_stop_work() local
438 tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, slot->fclk_freq); in mmc_omap_send_stop_work()
475 struct mmc_omap_slot *slot = host->current_slot; in mmc_omap_send_abort() local
480 timeout = DIV_ROUND_UP(120 * USEC_PER_SEC, slot->fclk_freq); in mmc_omap_send_abort()
793 struct mmc_omap_slot *slot = in mmc_omap_irq() local
795 if (slot == NULL || in mmc_omap_irq()
796 !mmc_omap_cover_is_open(slot)) in mmc_omap_irq()
861 struct mmc_omap_slot *slot = host->slots[num]; in omap_mmc_notify_cover_event() local
869 cover_open = mmc_omap_cover_is_open(slot); in omap_mmc_notify_cover_event()
870 if (cover_open != slot->cover_open) { in omap_mmc_notify_cover_event()
871 slot->cover_open = cover_open; in omap_mmc_notify_cover_event()
872 sysfs_notify(&slot->mmc->class_dev.kobj, NULL, "cover_switch"); in omap_mmc_notify_cover_event()
875 tasklet_hi_schedule(&slot->cover_tasklet); in omap_mmc_notify_cover_event()
880 struct mmc_omap_slot *slot = (struct mmc_omap_slot *) arg; in mmc_omap_cover_timer() local
881 tasklet_schedule(&slot->cover_tasklet); in mmc_omap_cover_timer()
886 struct mmc_omap_slot *slot = (struct mmc_omap_slot *)param; in mmc_omap_cover_handler() local
887 int cover_open = mmc_omap_cover_is_open(slot); in mmc_omap_cover_handler()
889 mmc_detect_change(slot->mmc, 0); in mmc_omap_cover_handler()
897 if (slot->mmc->card == NULL || !mmc_card_present(slot->mmc->card)) in mmc_omap_cover_handler()
900 mod_timer(&slot->cover_timer, in mmc_omap_cover_handler()
1085 struct mmc_omap_slot *slot = mmc_priv(mmc); in mmc_omap_request() local
1086 struct mmc_omap_host *host = slot->host; in mmc_omap_request()
1091 BUG_ON(slot->mrq != NULL); in mmc_omap_request()
1092 slot->mrq = req; in mmc_omap_request()
1098 mmc_omap_select_slot(slot, 1); in mmc_omap_request()
1102 static void mmc_omap_set_power(struct mmc_omap_slot *slot, int power_on, in mmc_omap_set_power() argument
1107 host = slot->host; in mmc_omap_set_power()
1109 if (slot->pdata->set_power != NULL) in mmc_omap_set_power()
1110 slot->pdata->set_power(mmc_dev(slot->mmc), slot->id, power_on, in mmc_omap_set_power()
1127 struct mmc_omap_slot *slot = mmc_priv(mmc); in mmc_omap_calc_divisor() local
1128 struct mmc_omap_host *host = slot->host; in mmc_omap_calc_divisor()
1145 slot->fclk_freq = func_clk_rate / dsor; in mmc_omap_calc_divisor()
1155 struct mmc_omap_slot *slot = mmc_priv(mmc); in mmc_omap_set_ios() local
1156 struct mmc_omap_host *host = slot->host; in mmc_omap_set_ios()
1160 mmc_omap_select_slot(slot, 0); in mmc_omap_set_ios()
1164 if (ios->vdd != slot->vdd) in mmc_omap_set_ios()
1165 slot->vdd = ios->vdd; in mmc_omap_set_ios()
1170 mmc_omap_set_power(slot, 0, ios->vdd); in mmc_omap_set_ios()
1174 mmc_omap_set_power(slot, 1, ios->vdd); in mmc_omap_set_ios()
1183 if (slot->bus_mode != ios->bus_mode) { in mmc_omap_set_ios()
1184 if (slot->pdata->set_bus_mode != NULL) in mmc_omap_set_ios()
1185 slot->pdata->set_bus_mode(mmc_dev(mmc), slot->id, in mmc_omap_set_ios()
1187 slot->bus_mode = ios->bus_mode; in mmc_omap_set_ios()
1196 slot->saved_con = dsor; in mmc_omap_set_ios()
1213 mmc_omap_release_slot(slot, clk_enabled); in mmc_omap_set_ios()
1223 struct mmc_omap_slot *slot = NULL; in mmc_omap_new_slot() local
1231 slot = mmc_priv(mmc); in mmc_omap_new_slot()
1232 slot->host = host; in mmc_omap_new_slot()
1233 slot->mmc = mmc; in mmc_omap_new_slot()
1234 slot->id = id; in mmc_omap_new_slot()
1235 slot->pdata = &host->pdata->slots[id]; in mmc_omap_new_slot()
1237 host->slots[id] = slot; in mmc_omap_new_slot()
1252 mmc->ocr_avail = slot->pdata->ocr_mask; in mmc_omap_new_slot()
1264 if (slot->pdata->get_cover_state != NULL) { in mmc_omap_new_slot()
1265 setup_timer(&slot->cover_timer, mmc_omap_cover_timer, in mmc_omap_new_slot()
1266 (unsigned long)slot); in mmc_omap_new_slot()
1267 tasklet_init(&slot->cover_tasklet, mmc_omap_cover_handler, in mmc_omap_new_slot()
1268 (unsigned long)slot); in mmc_omap_new_slot()
1275 if (slot->pdata->name != NULL) { in mmc_omap_new_slot()
1282 if (slot->pdata->get_cover_state != NULL) { in mmc_omap_new_slot()
1287 tasklet_schedule(&slot->cover_tasklet); in mmc_omap_new_slot()
1293 if (slot->pdata->name != NULL) in mmc_omap_new_slot()
1301 static void mmc_omap_remove_slot(struct mmc_omap_slot *slot) in mmc_omap_remove_slot() argument
1303 struct mmc_host *mmc = slot->mmc; in mmc_omap_remove_slot()
1305 if (slot->pdata->name != NULL) in mmc_omap_remove_slot()
1307 if (slot->pdata->get_cover_state != NULL) in mmc_omap_remove_slot()
1310 tasklet_kill(&slot->cover_tasklet); in mmc_omap_remove_slot()
1311 del_timer_sync(&slot->cover_timer); in mmc_omap_remove_slot()
1312 flush_workqueue(slot->host->mmc_omap_wq); in mmc_omap_remove_slot()