itcw
struct itcw;
struct tcw *itcw_get_tcw(struct itcw *itcw);
struct itcw *itcw_init(void *buffer, size_t size, int op, int intrg,
struct dcw *itcw_add_dcw(struct itcw *itcw, u8 cmd, u8 flags, void *cd,
struct tidaw *itcw_add_tidaw(struct itcw *itcw, u8 flags, void *addr,
void itcw_set_data(struct itcw *itcw, void *addr, int use_tidal);
void itcw_finalize(struct itcw *itcw);
static int prepare_itcw(struct itcw *, unsigned int, unsigned int, int,
struct itcw *itcw;
itcw = itcw_init(cqr->data, itcw_size, ITCW_OP_READ, 0, count, 0);
if (IS_ERR(itcw)) {
cqr->cpaddr = itcw_get_tcw(itcw);
rc = prepare_itcw(itcw, fdata->start_unit, fdata->stop_unit,
last_tidaw = itcw_add_tidaw(itcw, 0, fmt_buffer++,
itcw_finalize(itcw);
static int prepare_itcw(struct itcw *itcw,
dcw = itcw_add_dcw(itcw, pfx_cmd, 0,
struct itcw *itcw;
itcw = itcw_init(cqr->data, itcw_size, itcw_op, 0, ctidaw, 0);
if (IS_ERR(itcw)) {
cqr->cpaddr = itcw_get_tcw(itcw);
if (prepare_itcw(itcw, first_trk, last_trk,
last_tidaw = itcw_add_tidaw(itcw, tidaw_flags,
last_tidaw = itcw_add_tidaw(itcw, 0x00,
itcw_finalize(itcw);
len = sizeof(struct itcw);
struct itcw *itcw_init(void *buffer, size_t size, int op, int intrg,
struct itcw *itcw;
chunk = fit_chunk(&start, end, sizeof(struct itcw), 1, 0);
itcw = chunk;
itcw->max_tidaws = max_tidaws + cross_count;
itcw->intrg_max_tidaws = intrg_max_tidaws + cross_count;
itcw->tcw = chunk;
tcw_init(itcw->tcw, (op == ITCW_OP_READ) ? 1 : 0,
itcw->intrg_tcw = chunk;
tcw_init(itcw->intrg_tcw, 1, 0);
tcw_set_intrg(itcw->tcw, itcw->intrg_tcw);
itcw->max_tidaws, 16, 0);
tcw_set_data(itcw->tcw, chunk, 1);
itcw->intrg_max_tidaws, 16, 0);
tcw_set_data(itcw->intrg_tcw, chunk, 1);
tcw_set_tsb(itcw->tcw, chunk);
tcw_set_tsb(itcw->intrg_tcw, chunk);
tcw_set_tccb(itcw->tcw, chunk);
tcw_set_tccb(itcw->intrg_tcw, chunk);
tcw_finalize(itcw->intrg_tcw, 0);
return itcw;
struct dcw *itcw_add_dcw(struct itcw *itcw, u8 cmd, u8 flags, void *cd,
return tccb_add_dcw(tcw_get_tccb(itcw->tcw), TCCB_MAX_SIZE, cmd,
struct tidaw *itcw_add_tidaw(struct itcw *itcw, u8 flags, void *addr, u32 count)
if (itcw->num_tidaws >= itcw->max_tidaws)
following = ((struct tidaw *) tcw_get_data(itcw->tcw))
+ itcw->num_tidaws + 1;
if (itcw->num_tidaws && !((unsigned long) following & ~PAGE_MASK)) {
tcw_add_tidaw(itcw->tcw, itcw->num_tidaws++,
if (itcw->num_tidaws >= itcw->max_tidaws)
return tcw_add_tidaw(itcw->tcw, itcw->num_tidaws++, flags, addr, count);
void itcw_set_data(struct itcw *itcw, void *addr, int use_tidal)
tcw_set_data(itcw->tcw, addr, use_tidal);
void itcw_finalize(struct itcw *itcw)
tcw_finalize(itcw->tcw, itcw->num_tidaws);
struct tcw *itcw_get_tcw(struct itcw *itcw)
return itcw->tcw;