Lines Matching refs:command
43 ips_timed_wait(ips_command_t *command, const char *id, int timo) in ips_timed_wait() argument
47 while (command->completed == 0) { in ips_timed_wait()
49 if (command->completed == 0) in ips_timed_wait()
50 error = tsleep(&command->completed, 0, id, timo); in ips_timed_wait()
66 ips_wakeup_callback(ips_command_t *command) in ips_wakeup_callback() argument
68 bus_dmamap_sync(command->sc->command_dmatag, command->command_dmamap, in ips_wakeup_callback()
70 command->completed = 1; in ips_wakeup_callback()
71 wakeup(&command->completed); in ips_wakeup_callback()
81 ips_io_request_finish(ips_command_t *command) in ips_io_request_finish() argument
83 struct bio *bio = command->arg; in ips_io_request_finish()
86 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_finish()
89 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_finish()
92 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_io_request_finish()
93 if (COMMAND_ERROR(&command->status)) { in ips_io_request_finish()
97 ips_insert_free_cmd(command->sc, command); in ips_io_request_finish()
106 ips_command_t *command = cmdptr; in ips_io_request_callback() local
109 struct bio *bio = command->arg; in ips_io_request_callback()
115 sc = command->sc; in ips_io_request_callback()
118 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_io_request_callback()
121 ips_insert_free_cmd(sc, command); in ips_io_request_callback()
126 command_struct = (ips_io_cmd *)command->command_buffer; in ips_io_request_callback()
127 command_struct->id = command->id; in ips_io_request_callback()
137 command->command_buffer + IPS_COMMAND_LEN); in ips_io_request_callback()
144 (u_int32_t)command->command_phys_addr + IPS_COMMAND_LEN; in ips_io_request_callback()
153 command_struct->command = cmdtype; in ips_io_request_callback()
157 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_io_request_callback()
160 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_callback()
163 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_callback()
167 "pblkno: %lld length: %d, ds_len: %d\n", command->id, segnum, in ips_io_request_callback()
171 sc->ips_issue_cmd(command); in ips_io_request_callback()
176 ips_flush_request_finish(ips_command_t *command) in ips_flush_request_finish() argument
178 ips_generic_cmd *gencmd = command->command_buffer; in ips_flush_request_finish()
179 struct bio *bio = command->arg; in ips_flush_request_finish()
181 if (COMMAND_ERROR(&command->status)) { in ips_flush_request_finish()
182 device_printf(command->sc->dev, in ips_flush_request_finish()
184 gencmd->command, in ips_flush_request_finish()
185 command->status.fields.basic_status, in ips_flush_request_finish()
186 command->status.fields.extended_status); in ips_flush_request_finish()
191 ips_insert_free_cmd(command->sc, command); in ips_flush_request_finish()
196 ips_send_flush_request(ips_command_t *command, struct bio *bio) in ips_send_flush_request() argument
198 command->arg = bio; in ips_send_flush_request()
200 ips_softc_t *sc = command->sc; in ips_send_flush_request()
203 ips_insert_free_cmd(sc, command); in ips_send_flush_request()
208 command->callback = ips_flush_request_finish; in ips_send_flush_request()
209 flush_cmd = command->command_buffer; in ips_send_flush_request()
210 flush_cmd->command = IPS_CACHE_FLUSH_CMD; in ips_send_flush_request()
211 flush_cmd->id = command->id; in ips_send_flush_request()
215 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_flush_request()
218 sc->ips_issue_cmd(command); in ips_send_flush_request()
224 ips_send_io_request(ips_command_t *command, struct bio *bio) in ips_send_io_request() argument
228 command->callback = ips_io_request_finish; in ips_send_io_request()
229 command->arg = bio; in ips_send_io_request()
231 bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_send_io_request()
233 ips_io_request_callback, command, 0); in ips_send_io_request()
240 ips_command_t *command; in ips_start_io_request() local
246 if (ips_get_free_cmd(sc, &command, 0) != 0) in ips_start_io_request()
250 ips_send_flush_request(command, bio); in ips_start_io_request()
252 ips_send_io_request(command, bio); in ips_start_io_request()
266 ips_command_t *command = cmdptr; in ips_adapter_info_callback() local
268 sc = command->sc; in ips_adapter_info_callback()
270 command->status.value = IPS_ERROR_STATUS; /* a lovely error value */ in ips_adapter_info_callback()
271 ips_insert_free_cmd(sc, command); in ips_adapter_info_callback()
275 command_struct = (ips_adapter_info_cmd *)command->command_buffer; in ips_adapter_info_callback()
276 command_struct->command = IPS_ADAPTER_INFO_CMD; in ips_adapter_info_callback()
277 command_struct->id = command->id; in ips_adapter_info_callback()
280 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_adapter_info_callback()
282 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_adapter_info_callback()
284 sc->ips_issue_cmd(command); in ips_adapter_info_callback()
288 ips_send_adapter_info_cmd(ips_command_t *command) in ips_send_adapter_info_cmd() argument
290 ips_softc_t *sc = command->sc; in ips_send_adapter_info_cmd()
302 &command->data_dmatag) != 0) { in ips_send_adapter_info_cmd()
307 if (bus_dmamem_alloc(command->data_dmatag, &command->data_buffer, in ips_send_adapter_info_cmd()
308 BUS_DMA_NOWAIT, &command->data_dmamap)) { in ips_send_adapter_info_cmd()
312 command->callback = ips_wakeup_callback; in ips_send_adapter_info_cmd()
313 bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_send_adapter_info_cmd()
314 command->data_buffer, IPS_ADAPTER_INFO_LEN, in ips_send_adapter_info_cmd()
315 ips_adapter_info_callback, command, BUS_DMA_NOWAIT); in ips_send_adapter_info_cmd()
316 if ((command->status.value == IPS_ERROR_STATUS) || in ips_send_adapter_info_cmd()
317 ips_timed_wait(command, "ips", 30 * hz) != 0) in ips_send_adapter_info_cmd()
320 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_send_adapter_info_cmd()
322 memcpy(&(sc->adapter_info), command->data_buffer, in ips_send_adapter_info_cmd()
325 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_send_adapter_info_cmd()
328 bus_dmamem_free(command->data_dmatag, command->data_buffer, in ips_send_adapter_info_cmd()
329 command->data_dmamap); in ips_send_adapter_info_cmd()
330 bus_dma_tag_destroy(command->data_dmatag); in ips_send_adapter_info_cmd()
331 ips_insert_free_cmd(sc, command); in ips_send_adapter_info_cmd()
338 ips_command_t *command; in ips_get_adapter_info() local
341 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_get_adapter_info()
345 ips_send_adapter_info_cmd(command); in ips_get_adapter_info()
346 if (COMMAND_ERROR(&command->status)) in ips_get_adapter_info()
362 ips_command_t *command = cmdptr; in ips_drive_info_callback() local
365 sc = command->sc; in ips_drive_info_callback()
368 command->status.value = IPS_ERROR_STATUS; in ips_drive_info_callback()
369 ips_insert_free_cmd(sc, command); in ips_drive_info_callback()
373 command_struct = (ips_drive_cmd *)command->command_buffer; in ips_drive_info_callback()
374 command_struct->command = IPS_DRIVE_INFO_CMD; in ips_drive_info_callback()
375 command_struct->id = command->id; in ips_drive_info_callback()
377 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_drive_info_callback()
379 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_drive_info_callback()
381 sc->ips_issue_cmd(command); in ips_drive_info_callback()
385 ips_send_drive_info_cmd(ips_command_t *command) in ips_send_drive_info_cmd() argument
388 ips_softc_t *sc = command->sc; in ips_send_drive_info_cmd()
400 &command->data_dmatag) != 0) { in ips_send_drive_info_cmd()
405 if (bus_dmamem_alloc(command->data_dmatag, &command->data_buffer, in ips_send_drive_info_cmd()
406 BUS_DMA_NOWAIT, &command->data_dmamap)) { in ips_send_drive_info_cmd()
410 command->callback = ips_wakeup_callback; in ips_send_drive_info_cmd()
411 bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_send_drive_info_cmd()
412 command->data_buffer,IPS_DRIVE_INFO_LEN, in ips_send_drive_info_cmd()
413 ips_drive_info_callback, command, BUS_DMA_NOWAIT); in ips_send_drive_info_cmd()
414 if ((command->status.value == IPS_ERROR_STATUS) || in ips_send_drive_info_cmd()
415 ips_timed_wait(command, "ips", 10 * hz) != 0) in ips_send_drive_info_cmd()
419 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_send_drive_info_cmd()
421 driveinfo = command->data_buffer; in ips_send_drive_info_cmd()
426 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_send_drive_info_cmd()
429 bus_dmamem_free(command->data_dmatag, command->data_buffer, in ips_send_drive_info_cmd()
430 command->data_dmamap); in ips_send_drive_info_cmd()
431 bus_dma_tag_destroy(command->data_dmatag); in ips_send_drive_info_cmd()
432 ips_insert_free_cmd(sc, command); in ips_send_drive_info_cmd()
440 ips_command_t *command; in ips_get_drive_info() local
442 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_get_drive_info()
446 ips_send_drive_info_cmd(command); in ips_get_drive_info()
447 if (COMMAND_ERROR(&command->status)) in ips_get_drive_info()
457 ips_send_flush_cache_cmd(ips_command_t *command) in ips_send_flush_cache_cmd() argument
459 ips_softc_t *sc = command->sc; in ips_send_flush_cache_cmd()
463 command->callback = ips_wakeup_callback; in ips_send_flush_cache_cmd()
464 command_struct = (ips_generic_cmd *)command->command_buffer; in ips_send_flush_cache_cmd()
465 command_struct->command = IPS_CACHE_FLUSH_CMD; in ips_send_flush_cache_cmd()
466 command_struct->id = command->id; in ips_send_flush_cache_cmd()
467 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_flush_cache_cmd()
469 sc->ips_issue_cmd(command); in ips_send_flush_cache_cmd()
470 if (command->status.value != IPS_ERROR_STATUS) in ips_send_flush_cache_cmd()
471 ips_timed_wait(command, "flush2", 0); in ips_send_flush_cache_cmd()
472 ips_insert_free_cmd(sc, command); in ips_send_flush_cache_cmd()
479 ips_command_t *command; in ips_flush_cache() local
482 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_flush_cache()
487 ips_send_flush_cache_cmd(command); in ips_flush_cache()
488 if (COMMAND_ERROR(&command->status)) { in ips_flush_cache()
500 ips_ffdc_settime(ips_adapter_ffdc_cmd *command, time_t sctime) in ips_ffdc_settime() argument
513 command->hour = rem / IPS_SECSPERHOUR; in ips_ffdc_settime()
516 command->minute = rem / IPS_SECSPERMIN; in ips_ffdc_settime()
517 command->second = rem % IPS_SECSPERMIN; in ips_ffdc_settime()
531 command->yearH = y / 100; in ips_ffdc_settime()
532 command->yearL = y % 100; in ips_ffdc_settime()
536 command->month = month + 1; in ips_ffdc_settime()
537 command->day = days + 1; in ips_ffdc_settime()
541 ips_send_ffdc_reset_cmd(ips_command_t *command) in ips_send_ffdc_reset_cmd() argument
543 ips_softc_t *sc = command->sc; in ips_send_ffdc_reset_cmd()
547 command->callback = ips_wakeup_callback; in ips_send_ffdc_reset_cmd()
548 command_struct = (ips_adapter_ffdc_cmd *)command->command_buffer; in ips_send_ffdc_reset_cmd()
549 command_struct->command = IPS_FFDC_CMD; in ips_send_ffdc_reset_cmd()
550 command_struct->id = command->id; in ips_send_ffdc_reset_cmd()
554 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_ffdc_reset_cmd()
556 sc->ips_issue_cmd(command); in ips_send_ffdc_reset_cmd()
557 if (command->status.value != IPS_ERROR_STATUS) in ips_send_ffdc_reset_cmd()
558 ips_timed_wait(command, "ffdc", 0); in ips_send_ffdc_reset_cmd()
559 ips_insert_free_cmd(sc, command); in ips_send_ffdc_reset_cmd()
566 ips_command_t *command; in ips_ffdc_reset() local
568 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_ffdc_reset()
573 ips_send_ffdc_reset_cmd(command); in ips_ffdc_reset()
574 if (COMMAND_ERROR(&command->status)) { in ips_ffdc_reset()
582 command->status.value); in ips_ffdc_reset()
588 ips_write_nvram(ips_command_t *command) in ips_write_nvram() argument
590 ips_softc_t *sc = command->sc; in ips_write_nvram()
595 command->callback = ips_wakeup_callback; in ips_write_nvram()
596 command_struct = (ips_rw_nvram_cmd *)command->command_buffer; in ips_write_nvram()
597 command_struct->command = IPS_RW_NVRAM_CMD; in ips_write_nvram()
598 command_struct->id = command->id; in ips_write_nvram()
601 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_write_nvram()
603 nvram = command->data_buffer; in ips_write_nvram()
609 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_write_nvram()
611 sc->ips_issue_cmd(command); in ips_write_nvram()
619 ips_command_t *command = cmdptr; in ips_read_nvram_callback() local
622 sc = command->sc; in ips_read_nvram_callback()
624 command->status.value = IPS_ERROR_STATUS; in ips_read_nvram_callback()
625 ips_insert_free_cmd(sc, command); in ips_read_nvram_callback()
629 command_struct = (ips_rw_nvram_cmd *)command->command_buffer; in ips_read_nvram_callback()
630 command_struct->command = IPS_RW_NVRAM_CMD; in ips_read_nvram_callback()
631 command_struct->id = command->id; in ips_read_nvram_callback()
636 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_read_nvram_callback()
638 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_read_nvram_callback()
640 sc->ips_issue_cmd(command); in ips_read_nvram_callback()
644 ips_read_nvram(ips_command_t *command) in ips_read_nvram() argument
647 ips_softc_t *sc = command->sc; in ips_read_nvram()
658 &command->data_dmatag) != 0) { in ips_read_nvram()
663 if (bus_dmamem_alloc(command->data_dmatag, &command->data_buffer, in ips_read_nvram()
664 BUS_DMA_NOWAIT, &command->data_dmamap)) { in ips_read_nvram()
668 command->callback = ips_write_nvram; in ips_read_nvram()
669 bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_read_nvram()
670 command->data_buffer, IPS_NVRAM_PAGE_SIZE, ips_read_nvram_callback, in ips_read_nvram()
671 command, BUS_DMA_NOWAIT); in ips_read_nvram()
672 if ((command->status.value == IPS_ERROR_STATUS) || in ips_read_nvram()
673 ips_timed_wait(command, "ips", 0) != 0) in ips_read_nvram()
676 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_read_nvram()
679 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_read_nvram()
681 bus_dmamem_free(command->data_dmatag, command->data_buffer, in ips_read_nvram()
682 command->data_dmamap); in ips_read_nvram()
683 bus_dma_tag_destroy(command->data_dmatag); in ips_read_nvram()
684 ips_insert_free_cmd(sc, command); in ips_read_nvram()
691 ips_command_t *command; in ips_update_nvram() local
693 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_update_nvram()
698 ips_read_nvram(command); in ips_update_nvram()
699 if (COMMAND_ERROR(&command->status)) { in ips_update_nvram()
707 ips_send_config_sync_cmd(ips_command_t *command) in ips_send_config_sync_cmd() argument
709 ips_softc_t *sc = command->sc; in ips_send_config_sync_cmd()
713 command->callback = ips_wakeup_callback; in ips_send_config_sync_cmd()
714 command_struct = (ips_generic_cmd *)command->command_buffer; in ips_send_config_sync_cmd()
715 command_struct->command = IPS_CONFIG_SYNC_CMD; in ips_send_config_sync_cmd()
716 command_struct->id = command->id; in ips_send_config_sync_cmd()
718 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_config_sync_cmd()
720 sc->ips_issue_cmd(command); in ips_send_config_sync_cmd()
721 if (command->status.value != IPS_ERROR_STATUS) in ips_send_config_sync_cmd()
722 ips_timed_wait(command, "ipssyn", 0); in ips_send_config_sync_cmd()
723 ips_insert_free_cmd(sc, command); in ips_send_config_sync_cmd()
728 ips_send_error_table_cmd(ips_command_t *command) in ips_send_error_table_cmd() argument
730 ips_softc_t *sc = command->sc; in ips_send_error_table_cmd()
734 command->callback = ips_wakeup_callback; in ips_send_error_table_cmd()
735 command_struct = (ips_generic_cmd *)command->command_buffer; in ips_send_error_table_cmd()
736 command_struct->command = IPS_ERROR_TABLE_CMD; in ips_send_error_table_cmd()
737 command_struct->id = command->id; in ips_send_error_table_cmd()
739 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_error_table_cmd()
741 sc->ips_issue_cmd(command); in ips_send_error_table_cmd()
742 if (command->status.value != IPS_ERROR_STATUS) in ips_send_error_table_cmd()
743 ips_timed_wait(command, "ipsetc", 0); in ips_send_error_table_cmd()
744 ips_insert_free_cmd(sc, command); in ips_send_error_table_cmd()
751 ips_command_t *command; in ips_clear_adapter() local
754 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_clear_adapter()
759 ips_send_config_sync_cmd(command); in ips_clear_adapter()
760 if (COMMAND_ERROR(&command->status)) { in ips_clear_adapter()
765 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) != 0) { in ips_clear_adapter()
770 ips_send_error_table_cmd(command); in ips_clear_adapter()
771 if (COMMAND_ERROR(&command->status)) { in ips_clear_adapter()