Lines Matching refs:req

116 static void printADBreply(struct adb_request *req)
120 printk("adb reply (%d)", req->reply_len);
121 for(i = 0; i < req->reply_len; i++)
122 printk(" %x", req->reply[i]);
132 struct adb_request req; in adb_scan_bus() local
137 adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, in adb_scan_bus()
139 if (req.reply_len > 1) in adb_scan_bus()
156 adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, in adb_scan_bus()
163 adb_request(&req, NULL, ADBREQ_SYNC, 3, in adb_scan_bus()
171 adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, in adb_scan_bus()
173 if (req.reply_len <= 1) continue; in adb_scan_bus()
178 adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, in adb_scan_bus()
180 if (req.reply_len > 1) { in adb_scan_bus()
201 adb_request(&req, NULL, ADBREQ_SYNC, 3, in adb_scan_bus()
213 adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, in adb_scan_bus()
215 adb_handler[i].handler_id = req.reply[2]; in adb_scan_bus()
416 static void adb_sync_req_done(struct adb_request *req) in adb_sync_req_done() argument
418 struct completion *comp = req->arg; in adb_sync_req_done()
424 adb_request(struct adb_request *req, void (*done)(struct adb_request *), in adb_request() argument
437 req->nbytes = nbytes+1; in adb_request()
438 req->done = done; in adb_request()
439 req->reply_expected = flags & ADBREQ_REPLY; in adb_request()
440 req->data[0] = ADB_PACKET; in adb_request()
443 req->data[i+1] = va_arg(list, int); in adb_request()
452 req->done = adb_sync_req_done; in adb_request()
453 req->arg = &comp; in adb_request()
457 rc = adb_controller->send_request(req, 0); in adb_request()
459 if ((flags & ADBREQ_SYNC) && !rc && !req->complete) in adb_request()
562 struct adb_request req; in try_handler_change() local
566 adb_request(&req, NULL, ADBREQ_SYNC, 3, in try_handler_change()
568 adb_request(&req, NULL, ADBREQ_SYNC | ADBREQ_REPLY, 1, in try_handler_change()
570 if (req.reply_len < 2) in try_handler_change()
572 if (req.reply[2] != new_id) in try_handler_change()
574 adb_handler[address].handler_id = req.reply[2]; in try_handler_change()
617 static void adb_write_done(struct adb_request *req) in adb_write_done() argument
619 struct adbdev_state *state = (struct adbdev_state *) req->arg; in adb_write_done()
622 if (!req->complete) { in adb_write_done()
623 req->reply_len = 0; in adb_write_done()
624 req->complete = 1; in adb_write_done()
629 kfree(req); in adb_write_done()
639 req->next = NULL; in adb_write_done()
640 *ap = req; in adb_write_done()
647 do_adb_query(struct adb_request *req) in do_adb_query() argument
651 switch(req->data[1]) { in do_adb_query()
653 if (req->nbytes < 3) in do_adb_query()
656 req->reply[0] = adb_handler[req->data[2]].original_address; in do_adb_query()
657 req->reply[1] = adb_handler[req->data[2]].handler_id; in do_adb_query()
659 req->complete = 1; in do_adb_query()
660 req->reply_len = 2; in do_adb_query()
661 adb_write_done(req); in do_adb_query()
722 struct adb_request *req; in adb_read() local
728 if (count > sizeof(req->reply)) in adb_read()
729 count = sizeof(req->reply); in adb_read()
733 req = NULL; in adb_read()
739 req = state->completed; in adb_read()
740 if (req != NULL) in adb_read()
741 state->completed = req->next; in adb_read()
744 if (req != NULL || ret != 0) in adb_read()
767 ret = req->reply_len; in adb_read()
770 if (ret > 0 && copy_to_user(buf, req->reply, ret)) in adb_read()
773 kfree(req); in adb_read()
782 struct adb_request *req; in adb_write() local
784 if (count < 2 || count > sizeof(req->data)) in adb_write()
791 req = kmalloc(sizeof(struct adb_request), in adb_write()
793 if (req == NULL) in adb_write()
796 req->nbytes = count; in adb_write()
797 req->done = adb_write_done; in adb_write()
798 req->arg = (void *) state; in adb_write()
799 req->complete = 0; in adb_write()
802 if (copy_from_user(req->data, buf, count)) in adb_write()
811 if (req->data[0] == ADB_QUERY) { in adb_write()
813 ret = do_adb_query(req); in adb_write()
820 else if ((req->data[0] == ADB_PACKET) && (count > 1) in adb_write()
821 && (req->data[1] == ADB_BUSRESET)) { in adb_write()
829 req->reply_expected = ((req->data[1] & 0xc) == 0xc); in adb_write()
831 ret = adb_controller->send_request(req, 0); in adb_write()
844 kfree(req); in adb_write()