/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */1/*************************************************************************2*3* enables user programs to display messages and control encryption4* on s390 tape devices5*6* Copyright IBM Corp. 2001, 20067* Author(s): Michael Holzheu <[email protected]>8*9*************************************************************************/1011#ifndef _TAPE390_H12#define _TAPE390_H1314#define TAPE390_DISPLAY _IOW('d', 1, struct display_struct)1516/*17* The TAPE390_DISPLAY ioctl calls the Load Display command18* which transfers 17 bytes of data from the channel to the subsystem:19* - 1 format control byte, and20* - two 8-byte messages21*22* Format control byte:23* 0-2: New Message Overlay24* 3: Alternate Messages25* 4: Blink Message26* 5: Display Low/High Message27* 6: Reserved28* 7: Automatic Load Request29*30*/3132typedef struct display_struct {33char cntrl;34char message1[8];35char message2[8];36} display_struct;3738/*39* Tape encryption support40*/4142struct tape390_crypt_info {43char capability;44char status;45char medium_status;46} __attribute__ ((packed));474849/* Macros for "capable" field */50#define TAPE390_CRYPT_SUPPORTED_MASK 0x0151#define TAPE390_CRYPT_SUPPORTED(x) \52((x.capability & TAPE390_CRYPT_SUPPORTED_MASK))5354/* Macros for "status" field */55#define TAPE390_CRYPT_ON_MASK 0x0156#define TAPE390_CRYPT_ON(x) (((x.status) & TAPE390_CRYPT_ON_MASK))5758/* Macros for "medium status" field */59#define TAPE390_MEDIUM_LOADED_MASK 0x0160#define TAPE390_MEDIUM_ENCRYPTED_MASK 0x0261#define TAPE390_MEDIUM_ENCRYPTED(x) \62(((x.medium_status) & TAPE390_MEDIUM_ENCRYPTED_MASK))63#define TAPE390_MEDIUM_LOADED(x) \64(((x.medium_status) & TAPE390_MEDIUM_LOADED_MASK))6566/*67* The TAPE390_CRYPT_SET ioctl is used to switch on/off encryption.68* The "encryption_capable" and "tape_status" fields are ignored for this ioctl!69*/70#define TAPE390_CRYPT_SET _IOW('d', 2, struct tape390_crypt_info)7172/*73* The TAPE390_CRYPT_QUERY ioctl is used to query the encryption state.74*/75#define TAPE390_CRYPT_QUERY _IOR('d', 3, struct tape390_crypt_info)7677/* Values for "kekl1/2_type" and "kekl1/2_type_on_tape" fields */78#define TAPE390_KEKL_TYPE_NONE 079#define TAPE390_KEKL_TYPE_LABEL 180#define TAPE390_KEKL_TYPE_HASH 28182struct tape390_kekl {83unsigned char type;84unsigned char type_on_tape;85char label[65];86} __attribute__ ((packed));8788struct tape390_kekl_pair {89struct tape390_kekl kekl[2];90} __attribute__ ((packed));9192/*93* The TAPE390_KEKL_SET ioctl is used to set Key Encrypting Key labels.94*/95#define TAPE390_KEKL_SET _IOW('d', 4, struct tape390_kekl_pair)9697/*98* The TAPE390_KEKL_QUERY ioctl is used to query Key Encrypting Key labels.99*/100#define TAPE390_KEKL_QUERY _IOR('d', 5, struct tape390_kekl_pair)101102#endif103104105