1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 *  Functions for incremental construction of fcx enabled I/O control blocks.
4 *
5 *    Copyright IBM Corp. 2008
6 *    Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
7 */
8
9#ifndef _ASM_S390_ITCW_H
10#define _ASM_S390_ITCW_H
11
12#include <linux/types.h>
13#include <asm/fcx.h>
14
15#define ITCW_OP_READ	0
16#define ITCW_OP_WRITE	1
17
18struct itcw;
19
20struct tcw *itcw_get_tcw(struct itcw *itcw);
21size_t itcw_calc_size(int intrg, int max_tidaws, int intrg_max_tidaws);
22struct itcw *itcw_init(void *buffer, size_t size, int op, int intrg,
23		       int max_tidaws, int intrg_max_tidaws);
24struct dcw *itcw_add_dcw(struct itcw *itcw, u8 cmd, u8 flags, void *cd,
25			 u8 cd_count, u32 count);
26struct tidaw *itcw_add_tidaw(struct itcw *itcw, u8 flags, void *addr,
27			     u32 count);
28void itcw_set_data(struct itcw *itcw, void *addr, int use_tidal);
29void itcw_finalize(struct itcw *itcw);
30
31#endif /* _ASM_S390_ITCW_H */
32