xref: /linux-6.15/include/uapi/linux/dvb/ca.h (revision 8478afa8)
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