Lines Matching refs:cpa
212 static void free_chan_prog(struct ccw1 *cpa) in free_chan_prog() argument
214 struct ccw1 *ptr = cpa; in free_chan_prog()
220 kfree(cpa); in free_chan_prog()
234 struct ccw1 *cpa; in alloc_chan_prog() local
245 cpa = kcalloc(rec_count + 1, sizeof(struct ccw1), in alloc_chan_prog()
247 if (!cpa) in alloc_chan_prog()
251 cpa[i].cmd_code = WRITE_CCW_CMD; in alloc_chan_prog()
252 cpa[i].flags = CCW_FLAG_CC | CCW_FLAG_SLI; in alloc_chan_prog()
253 cpa[i].count = reclen; in alloc_chan_prog()
256 free_chan_prog(cpa); in alloc_chan_prog()
259 cpa[i].cda = (u32)(addr_t) kbuf; in alloc_chan_prog()
261 free_chan_prog(cpa); in alloc_chan_prog()
267 cpa[i].cmd_code = CCW_CMD_NOOP; in alloc_chan_prog()
268 return cpa; in alloc_chan_prog()
271 static int do_ur_io(struct urdev *urd, struct ccw1 *cpa) in do_ur_io() argument
277 TRACE("do_ur_io: cpa=%p\n", cpa); in do_ur_io()
286 rc = ccw_device_start(cdev, cpa, 1, 0, 0); in do_ur_io()
419 struct ccw1 *cpa; in do_write() local
422 cpa = alloc_chan_prog(udata, count / reclen, reclen); in do_write()
423 if (IS_ERR(cpa)) in do_write()
424 return PTR_ERR(cpa); in do_write()
426 rc = do_ur_io(urd, cpa); in do_write()
438 free_chan_prog(cpa); in do_write()