Lines Matching refs:ioctl_cmd
39 ips_ioctl_t *ioctl_cmd = command->arg; in ips_ioctl_finish() local
40 if(ioctl_cmd->readwrite & IPS_IOCTL_READ){ in ips_ioctl_finish()
41 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_finish()
43 } else if(ioctl_cmd->readwrite & IPS_IOCTL_WRITE){ in ips_ioctl_finish()
44 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_finish()
49 bus_dmamap_unload(ioctl_cmd->dmatag, ioctl_cmd->dmamap); in ips_ioctl_finish()
50 ioctl_cmd->status.value = command->status.value; in ips_ioctl_finish()
57 ips_ioctl_t *ioctl_cmd = command->arg; in ips_ioctl_callback() local
65 if(ioctl_cmd->readwrite & IPS_IOCTL_WRITE){ in ips_ioctl_callback()
66 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_callback()
68 } else if(ioctl_cmd->readwrite & IPS_IOCTL_READ){ in ips_ioctl_callback()
69 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_callback()
78 ips_ioctl_t *ioctl_cmd = command->arg; in ips_ioctl_start() local
79 memcpy(command->command_buffer, ioctl_cmd->command_buffer, in ips_ioctl_start()
82 bus_dmamap_load(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_start()
83 ioctl_cmd->data_buffer,ioctl_cmd->datasize, in ips_ioctl_start()
88 static int ips_ioctl_cmd(ips_softc_t *sc, ips_ioctl_t *ioctl_cmd, ips_user_request *user_request) in ips_ioctl_cmd() argument
100 /* maxsize */ ioctl_cmd->datasize, in ips_ioctl_cmd()
102 /* maxsegsize*/ ioctl_cmd->datasize, in ips_ioctl_cmd()
106 &ioctl_cmd->dmatag) != 0) { in ips_ioctl_cmd()
109 if(bus_dmamem_alloc(ioctl_cmd->dmatag, &ioctl_cmd->data_buffer, in ips_ioctl_cmd()
110 0, &ioctl_cmd->dmamap)){ in ips_ioctl_cmd()
114 if(copyin(user_request->data_buffer,ioctl_cmd->data_buffer, in ips_ioctl_cmd()
115 ioctl_cmd->datasize)) in ips_ioctl_cmd()
117 ioctl_cmd->status.value = 0xffffffff; in ips_ioctl_cmd()
124 command->arg = ioctl_cmd; in ips_ioctl_cmd()
126 while( ioctl_cmd->status.value == 0xffffffff) in ips_ioctl_cmd()
127 msleep(ioctl_cmd, &sc->queue_mtx, 0, "ips", hz/10); in ips_ioctl_cmd()
128 if(COMMAND_ERROR(ioctl_cmd)) in ips_ioctl_cmd()
133 if(copyout(ioctl_cmd->data_buffer, user_request->data_buffer, in ips_ioctl_cmd()
134 ioctl_cmd->datasize)) in ips_ioctl_cmd()
140 exit: bus_dmamem_free(ioctl_cmd->dmatag, ioctl_cmd->data_buffer, in ips_ioctl_cmd()
141 ioctl_cmd->dmamap); in ips_ioctl_cmd()
142 bus_dma_tag_destroy(ioctl_cmd->dmatag); in ips_ioctl_cmd()
149 ips_ioctl_t *ioctl_cmd; in ips_ioctl_request() local
154 ioctl_cmd = malloc(sizeof(ips_ioctl_t), M_IPSBUF, M_WAITOK); in ips_ioctl_request()
155 ioctl_cmd->command_buffer = malloc(sizeof(ips_generic_cmd), in ips_ioctl_request()
158 ioctl_cmd->command_buffer, sizeof(ips_generic_cmd))){ in ips_ioctl_request()
159 free(ioctl_cmd->command_buffer, M_IPSBUF); in ips_ioctl_request()
160 free(ioctl_cmd, M_IPSBUF); in ips_ioctl_request()
163 ioctl_cmd->readwrite = IPS_IOCTL_READ | IPS_IOCTL_WRITE; in ips_ioctl_request()
164 ioctl_cmd->datasize = IPS_IOCTL_BUFFER_SIZE; in ips_ioctl_request()
165 error = ips_ioctl_cmd(sc, ioctl_cmd, user_request); in ips_ioctl_request()
166 free(ioctl_cmd->command_buffer, M_IPSBUF); in ips_ioctl_request()
167 free(ioctl_cmd, M_IPSBUF); in ips_ioctl_request()