1*e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */ 2c57fd021SDavid Howells /* 3c57fd021SDavid Howells * ca.h 4c57fd021SDavid Howells * 5c57fd021SDavid Howells * Copyright (C) 2000 Ralph Metzler <[email protected]> 6c57fd021SDavid Howells * & Marcus Metzler <[email protected]> 7c57fd021SDavid Howells * for convergence integrated media GmbH 8c57fd021SDavid Howells */ 9c57fd021SDavid Howells 10c57fd021SDavid Howells #ifndef _DVBCA_H_ 11c57fd021SDavid Howells #define _DVBCA_H_ 12c57fd021SDavid Howells 13fed7c4feSMauro Carvalho Chehab /** 14fed7c4feSMauro Carvalho Chehab * struct ca_slot_info - CA slot interface types and info. 15fed7c4feSMauro Carvalho Chehab * 16fed7c4feSMauro Carvalho Chehab * @num: slot number. 17fed7c4feSMauro Carvalho Chehab * @type: slot type. 18fed7c4feSMauro Carvalho Chehab * @flags: flags applicable to the slot. 19fed7c4feSMauro Carvalho Chehab * 20fed7c4feSMauro Carvalho Chehab * This struct stores the CA slot information. 21fed7c4feSMauro Carvalho Chehab * 22fed7c4feSMauro Carvalho Chehab * @type can be: 23fed7c4feSMauro Carvalho Chehab * 24fed7c4feSMauro Carvalho Chehab * - %CA_CI - CI high level interface; 25fed7c4feSMauro Carvalho Chehab * - %CA_CI_LINK - CI link layer level interface; 26fed7c4feSMauro Carvalho Chehab * - %CA_CI_PHYS - CI physical layer level interface; 27fed7c4feSMauro Carvalho Chehab * - %CA_DESCR - built-in descrambler; 28fed7c4feSMauro Carvalho Chehab * - %CA_SC -simple smart card interface. 29fed7c4feSMauro Carvalho Chehab * 30fed7c4feSMauro Carvalho Chehab * @flags can be: 31fed7c4feSMauro Carvalho Chehab * 32fed7c4feSMauro Carvalho Chehab * - %CA_CI_MODULE_PRESENT - module (or card) inserted; 33fed7c4feSMauro Carvalho Chehab * - %CA_CI_MODULE_READY - module is ready for usage. 34fed7c4feSMauro Carvalho Chehab */ 35c57fd021SDavid Howells 36c93022a7SMauro Carvalho Chehab struct ca_slot_info { 37fed7c4feSMauro Carvalho Chehab int num; 38fed7c4feSMauro Carvalho Chehab int type; 39fed7c4feSMauro Carvalho Chehab #define CA_CI 1 40fed7c4feSMauro Carvalho Chehab #define CA_CI_LINK 2 41fed7c4feSMauro Carvalho Chehab #define CA_CI_PHYS 4 42fed7c4feSMauro Carvalho Chehab #define CA_DESCR 8 43fed7c4feSMauro Carvalho Chehab #define CA_SC 128 44c57fd021SDavid Howells 45c57fd021SDavid Howells unsigned int flags; 46fed7c4feSMauro Carvalho Chehab #define CA_CI_MODULE_PRESENT 1 47c57fd021SDavid Howells #define CA_CI_MODULE_READY 2 48c93022a7SMauro Carvalho Chehab }; 49c57fd021SDavid Howells 50c57fd021SDavid Howells 51fed7c4feSMauro Carvalho Chehab /** 52fed7c4feSMauro Carvalho Chehab * struct ca_descr_info - descrambler types and info. 53fed7c4feSMauro Carvalho Chehab * 54fed7c4feSMauro Carvalho Chehab * @num: number of available descramblers (keys). 55fed7c4feSMauro Carvalho Chehab * @type: type of supported scrambling system. 56fed7c4feSMauro Carvalho Chehab * 57fed7c4feSMauro Carvalho Chehab * Identifies the number of descramblers and their type. 58fed7c4feSMauro Carvalho Chehab * 59fed7c4feSMauro Carvalho Chehab * @type can be: 60fed7c4feSMauro Carvalho Chehab * 61fed7c4feSMauro Carvalho Chehab * - %CA_ECD - European Common Descrambler (ECD) hardware; 62fed7c4feSMauro Carvalho Chehab * - %CA_NDS - Videoguard (NDS) hardware; 63fed7c4feSMauro Carvalho Chehab * - %CA_DSS - Distributed Sample Scrambling (DSS) hardware. 64fed7c4feSMauro Carvalho Chehab */ 65c93022a7SMauro Carvalho Chehab struct ca_descr_info { 66fed7c4feSMauro Carvalho Chehab unsigned int num; 67fed7c4feSMauro Carvalho Chehab unsigned int type; 68c57fd021SDavid Howells #define CA_ECD 1 69c57fd021SDavid Howells #define CA_NDS 2 70c57fd021SDavid Howells #define CA_DSS 4 71c93022a7SMauro Carvalho Chehab }; 72c57fd021SDavid Howells 73fed7c4feSMauro Carvalho Chehab /** 74fed7c4feSMauro Carvalho Chehab * struct ca_caps - CA slot interface capabilities. 75fed7c4feSMauro Carvalho Chehab * 76fed7c4feSMauro Carvalho Chehab * @slot_num: total number of CA card and module slots. 77fed7c4feSMauro Carvalho Chehab * @slot_type: bitmap with all supported types as defined at 78fed7c4feSMauro Carvalho Chehab * &struct ca_slot_info (e. g. %CA_CI, %CA_CI_LINK, etc). 79fed7c4feSMauro Carvalho Chehab * @descr_num: total number of descrambler slots (keys) 80fed7c4feSMauro Carvalho Chehab * @descr_type: bitmap with all supported types as defined at 81fed7c4feSMauro Carvalho Chehab * &struct ca_descr_info (e. g. %CA_ECD, %CA_NDS, etc). 82fed7c4feSMauro Carvalho Chehab */ 83c93022a7SMauro Carvalho Chehab struct ca_caps { 84fed7c4feSMauro Carvalho Chehab unsigned int slot_num; 85fed7c4feSMauro Carvalho Chehab unsigned int slot_type; 86fed7c4feSMauro Carvalho Chehab unsigned int descr_num; 87fed7c4feSMauro Carvalho Chehab unsigned int descr_type; 88c93022a7SMauro Carvalho Chehab }; 89c57fd021SDavid Howells 907e6854a9SMauro Carvalho Chehab /** 917e6854a9SMauro Carvalho Chehab * struct ca_msg - a message to/from a CI-CAM 927e6854a9SMauro Carvalho Chehab * 937e6854a9SMauro Carvalho Chehab * @index: unused 947e6854a9SMauro Carvalho Chehab * @type: unused 957e6854a9SMauro Carvalho Chehab * @length: length of the message 967e6854a9SMauro Carvalho Chehab * @msg: message 977e6854a9SMauro Carvalho Chehab * 987e6854a9SMauro Carvalho Chehab * This struct carries a message to be send/received from a CI CA module. 997e6854a9SMauro Carvalho Chehab */ 100c93022a7SMauro Carvalho Chehab struct ca_msg { 101c57fd021SDavid Howells unsigned int index; 102c57fd021SDavid Howells unsigned int type; 103c57fd021SDavid Howells unsigned int length; 104c57fd021SDavid Howells unsigned char msg[256]; 105c93022a7SMauro Carvalho Chehab }; 106c57fd021SDavid Howells 107bd9049edSMauro Carvalho Chehab /** 108bd9049edSMauro Carvalho Chehab * struct ca_descr - CA descrambler control words info 109bd9049edSMauro Carvalho Chehab * 110bd9049edSMauro Carvalho Chehab * @index: CA Descrambler slot 111bd9049edSMauro Carvalho Chehab * @parity: control words parity, where 0 means even and 1 means odd 112bd9049edSMauro Carvalho Chehab * @cw: CA Descrambler control words 113bd9049edSMauro Carvalho Chehab */ 114c93022a7SMauro Carvalho Chehab struct ca_descr { 115c57fd021SDavid Howells unsigned int index; 116bd9049edSMauro Carvalho Chehab unsigned int parity; 117c57fd021SDavid Howells unsigned char cw[8]; 118c93022a7SMauro Carvalho Chehab }; 119c57fd021SDavid Howells 120c57fd021SDavid Howells #define CA_RESET _IO('o', 128) 121c93022a7SMauro Carvalho Chehab #define CA_GET_CAP _IOR('o', 129, struct ca_caps) 122c93022a7SMauro Carvalho Chehab #define CA_GET_SLOT_INFO _IOR('o', 130, struct ca_slot_info) 123c93022a7SMauro Carvalho Chehab #define CA_GET_DESCR_INFO _IOR('o', 131, struct ca_descr_info) 124c93022a7SMauro Carvalho Chehab #define CA_GET_MSG _IOR('o', 132, struct ca_msg) 125c93022a7SMauro Carvalho Chehab #define CA_SEND_MSG _IOW('o', 133, struct ca_msg) 126c93022a7SMauro Carvalho Chehab #define CA_SET_DESCR _IOW('o', 134, struct ca_descr) 127c93022a7SMauro Carvalho Chehab 128c93022a7SMauro Carvalho Chehab #if !defined(__KERNEL__) 129c93022a7SMauro Carvalho Chehab 130c93022a7SMauro Carvalho Chehab /* This is needed for legacy userspace support */ 131c93022a7SMauro Carvalho Chehab typedef struct ca_slot_info ca_slot_info_t; 132c93022a7SMauro Carvalho Chehab typedef struct ca_descr_info ca_descr_info_t; 133c93022a7SMauro Carvalho Chehab typedef struct ca_caps ca_caps_t; 134c93022a7SMauro Carvalho Chehab typedef struct ca_msg ca_msg_t; 135c93022a7SMauro Carvalho Chehab typedef struct ca_descr ca_descr_t; 136c93022a7SMauro Carvalho Chehab 137c93022a7SMauro Carvalho Chehab #endif 138c93022a7SMauro Carvalho Chehab 139c57fd021SDavid Howells 140c57fd021SDavid Howells #endif 141