Lines Matching refs:mbdata
145 static int try_mailbox(struct ivtv *itv, struct ivtv_mailbox_data *mbdata, int mb) in try_mailbox() argument
147 u32 flags = readl(&mbdata->mbox[mb].flags); in try_mailbox()
151 if (is_free && !test_and_set_bit(mb, &mbdata->busy)) { in try_mailbox()
152 write_sync(IVTV_MBOX_DRIVER_BUSY, &mbdata->mbox[mb].flags); in try_mailbox()
160 static int get_mailbox(struct ivtv *itv, struct ivtv_mailbox_data *mbdata, int flags) in get_mailbox() argument
164 int max_mbox = mbdata->max_mbox; in get_mailbox()
175 if (try_mailbox(itv, mbdata, mb)) in get_mailbox()
202 static void clear_all_mailboxes(struct ivtv *itv, struct ivtv_mailbox_data *mbdata) in clear_all_mailboxes() argument
206 for (i = 0; i <= mbdata->max_mbox; i++) { in clear_all_mailboxes()
208 i, readl(&mbdata->mbox[i].cmd), readl(&mbdata->mbox[i].flags)); in clear_all_mailboxes()
209 write_sync(0, &mbdata->mbox[i].flags); in clear_all_mailboxes()
210 clear_bit(i, &mbdata->busy); in clear_all_mailboxes()
216 struct ivtv_mailbox_data *mbdata = (cmd >= 128) ? &itv->enc_mbox : &itv->dec_mbox; in ivtv_api_call() local
223 if (NULL == mbdata) { in ivtv_api_call()
260 mb = i % (mbdata->max_mbox + 1); in ivtv_api_call()
261 if (try_mailbox(itv, mbdata, mb)) { in ivtv_api_call()
262 write_mailbox(&mbdata->mbox[mb], cmd, args, data); in ivtv_api_call()
263 clear_bit(mb, &mbdata->busy); in ivtv_api_call()
267 api_info[cmd].name, mb, readl(&mbdata->mbox[mb].flags)); in ivtv_api_call()
270 clear_all_mailboxes(itv, mbdata); in ivtv_api_call()
277 mb = get_mailbox(itv, mbdata, flags); in ivtv_api_call()
280 clear_all_mailboxes(itv, mbdata); in ivtv_api_call()
283 mbox = &mbdata->mbox[mb]; in ivtv_api_call()
290 clear_bit(mb, &mbdata->busy); in ivtv_api_call()
309 clear_bit(mb, &mbdata->busy); in ivtv_api_call()
325 clear_bit(mb, &mbdata->busy); in ivtv_api_call()
372 void ivtv_api_get_data(struct ivtv_mailbox_data *mbdata, int mb, in ivtv_api_get_data() argument
375 volatile u32 __iomem *p = mbdata->mbox[mb].data; in ivtv_api_get_data()