1 #include "firesat-ci.h"
5 #include <linux/dvb/ca.h>
8 static int firesat_ca_do_ioctl(struct inode *inode, struct file *file, unsigned int cmd, void *parg) {
9 //struct firesat *firesat = (struct firesat*)((struct dvb_device*)file->private_data)->priv;
12 // printk(KERN_INFO "%s: ioctl %d\n",__func__,cmd);
16 // TODO: Needs to be implemented with new AVC Vendor commands
19 ca_caps_t *cap=(ca_caps_t*)parg;
21 cap->slot_type = CA_CI_LINK;
23 cap->descr_type = CA_DSS;
28 case CA_GET_SLOT_INFO: {
29 ca_slot_info_t *slot=(ca_slot_info_t*)parg;
31 slot->type = CA_CI | CA_CI_LINK | CA_DESCR;
32 slot->flags = CA_CI_MODULE_PRESENT | CA_CI_MODULE_READY;
47 static int firesat_ca_ioctl(struct inode
*inode
, struct file
*file
, unsigned int cmd
, unsigned long arg
) {
48 //return dvb_usercopy(inode, file, cmd, arg, firesat_ca_do_ioctl);
49 return dvb_generic_ioctl(inode
, file
, cmd
, arg
);
52 static int firesat_ca_io_open(struct inode
*inode
, struct file
*file
) {
53 printk(KERN_INFO
"%s!\n",__func__
);
54 return dvb_generic_open(inode
, file
);
57 static int firesat_ca_io_release(struct inode
*inode
, struct file
*file
) {
58 printk(KERN_INFO
"%s!\n",__func__
);
59 return dvb_generic_release(inode
, file
);
62 static unsigned int firesat_ca_io_poll(struct file
*file
, poll_table
*wait
) {
63 // printk(KERN_INFO "%s!\n",__func__);
67 static struct file_operations firesat_ca_fops
= {
69 .read
= NULL
, // There is no low level read anymore
70 .write
= NULL
, // There is no low level write anymore
71 .ioctl
= firesat_ca_ioctl
,
72 .open
= firesat_ca_io_open
,
73 .release
= firesat_ca_io_release
,
74 .poll
= firesat_ca_io_poll
,
77 static struct dvb_device firesat_ca
= {
82 .fops
= &firesat_ca_fops
,
85 int firesat_ca_init(struct firesat
*firesat
) {
86 int ret
= dvb_register_device(firesat
->adapter
, &firesat
->cadev
, &firesat_ca
, firesat
, DVB_DEVICE_CA
);
89 // avoid unnecessary delays, we're not talking to the CI yet anyways
93 void firesat_ca_release(struct firesat
*firesat
) {
94 dvb_unregister_device(firesat
->cadev
);