Lines Matching refs:cpa
188 static void free_chan_prog(struct ccw1 *cpa) in free_chan_prog() argument
190 struct ccw1 *ptr = cpa; in free_chan_prog()
196 kfree(cpa); in free_chan_prog()
210 struct ccw1 *cpa; in alloc_chan_prog() local
221 cpa = kcalloc(rec_count + 1, sizeof(struct ccw1), in alloc_chan_prog()
223 if (!cpa) in alloc_chan_prog()
227 cpa[i].cmd_code = WRITE_CCW_CMD; in alloc_chan_prog()
228 cpa[i].flags = CCW_FLAG_CC | CCW_FLAG_SLI; in alloc_chan_prog()
229 cpa[i].count = reclen; in alloc_chan_prog()
232 free_chan_prog(cpa); in alloc_chan_prog()
235 cpa[i].cda = (u32)(addr_t) kbuf; in alloc_chan_prog()
237 free_chan_prog(cpa); in alloc_chan_prog()
243 cpa[i].cmd_code = CCW_CMD_NOOP; in alloc_chan_prog()
244 return cpa; in alloc_chan_prog()
247 static int do_ur_io(struct urdev *urd, struct ccw1 *cpa) in do_ur_io() argument
253 TRACE("do_ur_io: cpa=%p\n", cpa); in do_ur_io()
262 rc = ccw_device_start(cdev, cpa, 1, 0, 0); in do_ur_io()
395 struct ccw1 *cpa; in do_write() local
398 cpa = alloc_chan_prog(udata, count / reclen, reclen); in do_write()
399 if (IS_ERR(cpa)) in do_write()
400 return PTR_ERR(cpa); in do_write()
402 rc = do_ur_io(urd, cpa); in do_write()
414 free_chan_prog(cpa); in do_write()