Lines Matching defs:ioctl_cmd

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