Lines Matching refs:ioctl_cmd

37 	ips_ioctl_t *ioctl_cmd = command->arg;  in ips_ioctl_finish()  local
38 if(ioctl_cmd->readwrite & IPS_IOCTL_READ){ in ips_ioctl_finish()
39 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_finish()
41 } else if(ioctl_cmd->readwrite & IPS_IOCTL_WRITE){ in ips_ioctl_finish()
42 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_finish()
47 bus_dmamap_unload(ioctl_cmd->dmatag, ioctl_cmd->dmamap); in ips_ioctl_finish()
48 ioctl_cmd->status.value = command->status.value; in ips_ioctl_finish()
55 ips_ioctl_t *ioctl_cmd = command->arg; in ips_ioctl_callback() local
63 if(ioctl_cmd->readwrite & IPS_IOCTL_WRITE){ in ips_ioctl_callback()
64 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_callback()
66 } else if(ioctl_cmd->readwrite & IPS_IOCTL_READ){ in ips_ioctl_callback()
67 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_callback()
76 ips_ioctl_t *ioctl_cmd = command->arg; in ips_ioctl_start() local
77 memcpy(command->command_buffer, ioctl_cmd->command_buffer, in ips_ioctl_start()
80 bus_dmamap_load(ioctl_cmd->dmatag, ioctl_cmd->dmamap, in ips_ioctl_start()
81 ioctl_cmd->data_buffer,ioctl_cmd->datasize, in ips_ioctl_start()
86 static int ips_ioctl_cmd(ips_softc_t *sc, ips_ioctl_t *ioctl_cmd, ips_user_request *user_request) in ips_ioctl_cmd() argument
98 /* maxsize */ ioctl_cmd->datasize, in ips_ioctl_cmd()
100 /* maxsegsize*/ ioctl_cmd->datasize, in ips_ioctl_cmd()
104 &ioctl_cmd->dmatag) != 0) { in ips_ioctl_cmd()
107 if(bus_dmamem_alloc(ioctl_cmd->dmatag, &ioctl_cmd->data_buffer, in ips_ioctl_cmd()
108 0, &ioctl_cmd->dmamap)){ in ips_ioctl_cmd()
112 if(copyin(user_request->data_buffer,ioctl_cmd->data_buffer, in ips_ioctl_cmd()
113 ioctl_cmd->datasize)) in ips_ioctl_cmd()
115 ioctl_cmd->status.value = 0xffffffff; in ips_ioctl_cmd()
122 command->arg = ioctl_cmd; in ips_ioctl_cmd()
124 while( ioctl_cmd->status.value == 0xffffffff) in ips_ioctl_cmd()
125 msleep(ioctl_cmd, &sc->queue_mtx, 0, "ips", hz/10); in ips_ioctl_cmd()
126 if(COMMAND_ERROR(ioctl_cmd)) in ips_ioctl_cmd()
131 if(copyout(ioctl_cmd->data_buffer, user_request->data_buffer, in ips_ioctl_cmd()
132 ioctl_cmd->datasize)) in ips_ioctl_cmd()
138 exit: bus_dmamem_free(ioctl_cmd->dmatag, ioctl_cmd->data_buffer, in ips_ioctl_cmd()
139 ioctl_cmd->dmamap); in ips_ioctl_cmd()
140 bus_dma_tag_destroy(ioctl_cmd->dmatag); in ips_ioctl_cmd()
147 ips_ioctl_t *ioctl_cmd; in ips_ioctl_request() local
152 ioctl_cmd = malloc(sizeof(ips_ioctl_t), M_IPSBUF, M_WAITOK); in ips_ioctl_request()
153 ioctl_cmd->command_buffer = malloc(sizeof(ips_generic_cmd), in ips_ioctl_request()
156 ioctl_cmd->command_buffer, sizeof(ips_generic_cmd))){ in ips_ioctl_request()
157 free(ioctl_cmd->command_buffer, M_IPSBUF); in ips_ioctl_request()
158 free(ioctl_cmd, M_IPSBUF); in ips_ioctl_request()
161 ioctl_cmd->readwrite = IPS_IOCTL_READ | IPS_IOCTL_WRITE; in ips_ioctl_request()
162 ioctl_cmd->datasize = IPS_IOCTL_BUFFER_SIZE; in ips_ioctl_request()
163 error = ips_ioctl_cmd(sc, ioctl_cmd, user_request); in ips_ioctl_request()
164 free(ioctl_cmd->command_buffer, M_IPSBUF); in ips_ioctl_request()
165 free(ioctl_cmd, M_IPSBUF); in ips_ioctl_request()