Lines Matching refs:command
43 static void ips_wakeup_callback(ips_command_t *command) in ips_wakeup_callback() argument
45 bus_dmamap_sync(command->sc->command_dmatag, command->command_dmamap, in ips_wakeup_callback()
47 sema_post(&command->sc->cmd_sema); in ips_wakeup_callback()
53 static void ips_io_request_finish(ips_command_t *command) in ips_io_request_finish() argument
56 struct bio *iobuf = command->arg; in ips_io_request_finish()
58 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_finish()
61 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_finish()
64 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_io_request_finish()
65 if(COMMAND_ERROR(command)){ in ips_io_request_finish()
68 printf("ips: io error, status= 0x%x\n", command->status.value); in ips_io_request_finish()
70 ips_insert_free_cmd(command->sc, command); in ips_io_request_finish()
77 ips_command_t *command = cmdptr; in ips_io_request_callback() local
80 struct bio *iobuf = command->arg; in ips_io_request_callback()
84 sc = command->sc; in ips_io_request_callback()
87 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_io_request_callback()
90 ips_insert_free_cmd(sc, command); in ips_io_request_callback()
94 command_struct = (ips_io_cmd *)command->command_buffer; in ips_io_request_callback()
95 command_struct->id = command->id; in ips_io_request_callback()
104 command->command_buffer + IPS_COMMAND_LEN); in ips_io_request_callback()
111 (u_int32_t)command->command_phys_addr + IPS_COMMAND_LEN; in ips_io_request_callback()
120 command_struct->command = cmdtype; in ips_io_request_callback()
124 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_io_request_callback()
127 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_callback()
130 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_io_request_callback()
134 "pblkno: %lld length: %d, ds_len: %d\n", command->id, segnum, in ips_io_request_callback()
138 sc->ips_issue_cmd(command); in ips_io_request_callback()
142 static int ips_send_io_request(ips_command_t *command, struct bio *iobuf) in ips_send_io_request() argument
144 command->callback = ips_io_request_finish; in ips_send_io_request()
145 command->arg = iobuf; in ips_send_io_request()
147 bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_send_io_request()
149 ips_io_request_callback, command, 0); in ips_send_io_request()
156 ips_command_t *command; in ips_start_io_request() local
162 if (ips_get_free_cmd(sc, &command, 0)) in ips_start_io_request()
166 ips_send_io_request(command, iobuf); in ips_start_io_request()
177 ips_command_t *command = cmdptr; in ips_adapter_info_callback() local
179 sc = command->sc; in ips_adapter_info_callback()
181 ips_set_error(command, error); in ips_adapter_info_callback()
185 command_struct = (ips_adapter_info_cmd *)command->command_buffer; in ips_adapter_info_callback()
186 command_struct->command = IPS_ADAPTER_INFO_CMD; in ips_adapter_info_callback()
187 command_struct->id = command->id; in ips_adapter_info_callback()
190 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_adapter_info_callback()
192 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_adapter_info_callback()
194 sc->ips_issue_cmd(command); in ips_adapter_info_callback()
196 ips_set_error(command, ETIMEDOUT); in ips_adapter_info_callback()
200 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_adapter_info_callback()
202 memcpy(&(sc->adapter_info), command->data_buffer, IPS_ADAPTER_INFO_LEN); in ips_adapter_info_callback()
207 static int ips_send_adapter_info_cmd(ips_command_t *command) in ips_send_adapter_info_cmd() argument
210 ips_softc_t *sc = command->sc; in ips_send_adapter_info_cmd()
225 &command->data_dmatag) != 0) { in ips_send_adapter_info_cmd()
230 if(bus_dmamem_alloc(command->data_dmatag, &command->data_buffer, in ips_send_adapter_info_cmd()
231 BUS_DMA_NOWAIT, &command->data_dmamap)){ in ips_send_adapter_info_cmd()
235 command->callback = ips_wakeup_callback; in ips_send_adapter_info_cmd()
236 error = bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_send_adapter_info_cmd()
237 command->data_buffer,IPS_ADAPTER_INFO_LEN, in ips_send_adapter_info_cmd()
238 ips_adapter_info_callback, command, in ips_send_adapter_info_cmd()
242 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_send_adapter_info_cmd()
246 bus_dmamem_free(command->data_dmatag, command->data_buffer, in ips_send_adapter_info_cmd()
247 command->data_dmamap); in ips_send_adapter_info_cmd()
248 bus_dma_tag_destroy(command->data_dmatag); in ips_send_adapter_info_cmd()
249 ips_insert_free_cmd(sc, command); in ips_send_adapter_info_cmd()
255 ips_command_t *command; in ips_get_adapter_info() local
258 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) > 0){ in ips_get_adapter_info()
262 ips_send_adapter_info_cmd(command); in ips_get_adapter_info()
263 if (COMMAND_ERROR(command)){ in ips_get_adapter_info()
276 ips_command_t *command = cmdptr; in ips_drive_info_callback() local
280 sc = command->sc; in ips_drive_info_callback()
282 ips_set_error(command, error); in ips_drive_info_callback()
286 command_struct = (ips_drive_cmd *)command->command_buffer; in ips_drive_info_callback()
287 command_struct->command = IPS_DRIVE_INFO_CMD; in ips_drive_info_callback()
288 command_struct->id = command->id; in ips_drive_info_callback()
291 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_drive_info_callback()
293 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_drive_info_callback()
295 sc->ips_issue_cmd(command); in ips_drive_info_callback()
297 ips_set_error(command, ETIMEDOUT); in ips_drive_info_callback()
301 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_drive_info_callback()
303 driveinfo = command->data_buffer; in ips_drive_info_callback()
309 static int ips_send_drive_info_cmd(ips_command_t *command) in ips_send_drive_info_cmd() argument
312 ips_softc_t *sc = command->sc; in ips_send_drive_info_cmd()
327 &command->data_dmatag) != 0) { in ips_send_drive_info_cmd()
332 if(bus_dmamem_alloc(command->data_dmatag, &command->data_buffer, in ips_send_drive_info_cmd()
333 BUS_DMA_NOWAIT, &command->data_dmamap)){ in ips_send_drive_info_cmd()
337 command->callback = ips_wakeup_callback; in ips_send_drive_info_cmd()
338 error = bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_send_drive_info_cmd()
339 command->data_buffer,IPS_DRIVE_INFO_LEN, in ips_send_drive_info_cmd()
340 ips_drive_info_callback, command, in ips_send_drive_info_cmd()
343 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_send_drive_info_cmd()
347 bus_dmamem_free(command->data_dmatag, command->data_buffer, in ips_send_drive_info_cmd()
348 command->data_dmamap); in ips_send_drive_info_cmd()
349 bus_dma_tag_destroy(command->data_dmatag); in ips_send_drive_info_cmd()
350 ips_insert_free_cmd(sc, command); in ips_send_drive_info_cmd()
357 ips_command_t *command; in ips_get_drive_info() local
359 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG) > 0){ in ips_get_drive_info()
363 ips_send_drive_info_cmd(command); in ips_get_drive_info()
364 if(COMMAND_ERROR(command)){ in ips_get_drive_info()
372 static int ips_send_flush_cache_cmd(ips_command_t *command) in ips_send_flush_cache_cmd() argument
374 ips_softc_t *sc = command->sc; in ips_send_flush_cache_cmd()
378 command->callback = ips_wakeup_callback; in ips_send_flush_cache_cmd()
379 command_struct = (ips_generic_cmd *)command->command_buffer; in ips_send_flush_cache_cmd()
380 command_struct->command = IPS_CACHE_FLUSH_CMD; in ips_send_flush_cache_cmd()
381 command_struct->id = command->id; in ips_send_flush_cache_cmd()
382 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_flush_cache_cmd()
384 sc->ips_issue_cmd(command); in ips_send_flush_cache_cmd()
385 if (COMMAND_ERROR(command) == 0) in ips_send_flush_cache_cmd()
387 ips_insert_free_cmd(sc, command); in ips_send_flush_cache_cmd()
393 ips_command_t *command; in ips_flush_cache() local
396 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG)){ in ips_flush_cache()
399 ips_send_flush_cache_cmd(command); in ips_flush_cache()
400 if(COMMAND_ERROR(command)){ in ips_flush_cache()
409 void static ips_ffdc_settime(ips_adapter_ffdc_cmd *command, time_t sctime) in ips_ffdc_settime() argument
422 command->hour = rem / IPS_SECSPERHOUR; in ips_ffdc_settime()
425 command->minute = rem / IPS_SECSPERMIN; in ips_ffdc_settime()
426 command->second = rem % IPS_SECSPERMIN; in ips_ffdc_settime()
440 command->yearH = y / 100; in ips_ffdc_settime()
441 command->yearL = y % 100; in ips_ffdc_settime()
445 command->month = month + 1; in ips_ffdc_settime()
446 command->day = days + 1; in ips_ffdc_settime()
449 static int ips_send_ffdc_reset_cmd(ips_command_t *command) in ips_send_ffdc_reset_cmd() argument
451 ips_softc_t *sc = command->sc; in ips_send_ffdc_reset_cmd()
455 command->callback = ips_wakeup_callback; in ips_send_ffdc_reset_cmd()
456 command_struct = (ips_adapter_ffdc_cmd *)command->command_buffer; in ips_send_ffdc_reset_cmd()
457 command_struct->command = IPS_FFDC_CMD; in ips_send_ffdc_reset_cmd()
458 command_struct->id = command->id; in ips_send_ffdc_reset_cmd()
463 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_ffdc_reset_cmd()
465 sc->ips_issue_cmd(command); in ips_send_ffdc_reset_cmd()
466 if (COMMAND_ERROR(command) == 0) in ips_send_ffdc_reset_cmd()
468 ips_insert_free_cmd(sc, command); in ips_send_ffdc_reset_cmd()
474 ips_command_t *command; in ips_ffdc_reset() local
476 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG)){ in ips_ffdc_reset()
479 ips_send_ffdc_reset_cmd(command); in ips_ffdc_reset()
480 if(COMMAND_ERROR(command)){ in ips_ffdc_reset()
486 static void ips_write_nvram(ips_command_t *command){ in ips_write_nvram() argument
487 ips_softc_t *sc = command->sc; in ips_write_nvram()
492 command->callback = ips_wakeup_callback; in ips_write_nvram()
493 command_struct = (ips_rw_nvram_cmd *)command->command_buffer; in ips_write_nvram()
494 command_struct->command = IPS_RW_NVRAM_CMD; in ips_write_nvram()
495 command_struct->id = command->id; in ips_write_nvram()
498 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_write_nvram()
500 nvram = command->data_buffer; in ips_write_nvram()
507 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_write_nvram()
509 sc->ips_issue_cmd(command); in ips_write_nvram()
515 ips_command_t *command = cmdptr; in ips_read_nvram_callback() local
517 sc = command->sc; in ips_read_nvram_callback()
519 ips_set_error(command, error); in ips_read_nvram_callback()
523 command_struct = (ips_rw_nvram_cmd *)command->command_buffer; in ips_read_nvram_callback()
524 command_struct->command = IPS_RW_NVRAM_CMD; in ips_read_nvram_callback()
525 command_struct->id = command->id; in ips_read_nvram_callback()
530 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_read_nvram_callback()
532 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_read_nvram_callback()
534 sc->ips_issue_cmd(command); in ips_read_nvram_callback()
536 ips_set_error(command, ETIMEDOUT); in ips_read_nvram_callback()
539 bus_dmamap_sync(command->data_dmatag, command->data_dmamap, in ips_read_nvram_callback()
543 static int ips_read_nvram(ips_command_t *command) in ips_read_nvram() argument
546 ips_softc_t *sc = command->sc; in ips_read_nvram()
561 &command->data_dmatag) != 0) { in ips_read_nvram()
566 if(bus_dmamem_alloc(command->data_dmatag, &command->data_buffer, in ips_read_nvram()
567 BUS_DMA_NOWAIT, &command->data_dmamap)){ in ips_read_nvram()
571 command->callback = ips_write_nvram; in ips_read_nvram()
572 error = bus_dmamap_load(command->data_dmatag, command->data_dmamap, in ips_read_nvram()
573 command->data_buffer,IPS_NVRAM_PAGE_SIZE, in ips_read_nvram()
574 ips_read_nvram_callback, command, in ips_read_nvram()
577 bus_dmamap_unload(command->data_dmatag, command->data_dmamap); in ips_read_nvram()
580 bus_dmamem_free(command->data_dmatag, command->data_buffer, in ips_read_nvram()
581 command->data_dmamap); in ips_read_nvram()
582 bus_dma_tag_destroy(command->data_dmatag); in ips_read_nvram()
583 ips_insert_free_cmd(sc, command); in ips_read_nvram()
589 ips_command_t *command; in ips_update_nvram() local
591 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG)){ in ips_update_nvram()
595 ips_read_nvram(command); in ips_update_nvram()
596 if(COMMAND_ERROR(command)){ in ips_update_nvram()
605 static int ips_send_config_sync_cmd(ips_command_t *command) in ips_send_config_sync_cmd() argument
607 ips_softc_t *sc = command->sc; in ips_send_config_sync_cmd()
611 command->callback = ips_wakeup_callback; in ips_send_config_sync_cmd()
612 command_struct = (ips_generic_cmd *)command->command_buffer; in ips_send_config_sync_cmd()
613 command_struct->command = IPS_CONFIG_SYNC_CMD; in ips_send_config_sync_cmd()
614 command_struct->id = command->id; in ips_send_config_sync_cmd()
616 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_config_sync_cmd()
618 sc->ips_issue_cmd(command); in ips_send_config_sync_cmd()
619 if (COMMAND_ERROR(command) == 0) in ips_send_config_sync_cmd()
621 ips_insert_free_cmd(sc, command); in ips_send_config_sync_cmd()
625 static int ips_send_error_table_cmd(ips_command_t *command) in ips_send_error_table_cmd() argument
627 ips_softc_t *sc = command->sc; in ips_send_error_table_cmd()
631 command->callback = ips_wakeup_callback; in ips_send_error_table_cmd()
632 command_struct = (ips_generic_cmd *)command->command_buffer; in ips_send_error_table_cmd()
633 command_struct->command = IPS_ERROR_TABLE_CMD; in ips_send_error_table_cmd()
634 command_struct->id = command->id; in ips_send_error_table_cmd()
636 bus_dmamap_sync(sc->command_dmatag, command->command_dmamap, in ips_send_error_table_cmd()
638 sc->ips_issue_cmd(command); in ips_send_error_table_cmd()
639 if (COMMAND_ERROR(command) == 0) in ips_send_error_table_cmd()
641 ips_insert_free_cmd(sc, command); in ips_send_error_table_cmd()
648 ips_command_t *command; in ips_clear_adapter() local
651 if (ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG)){ in ips_clear_adapter()
655 ips_send_config_sync_cmd(command); in ips_clear_adapter()
656 if(COMMAND_ERROR(command)){ in ips_clear_adapter()
662 if(ips_get_free_cmd(sc, &command, IPS_STATIC_FLAG)){ in ips_clear_adapter()
666 ips_send_error_table_cmd(command); in ips_clear_adapter()
667 if(COMMAND_ERROR(command)){ in ips_clear_adapter()