Loading drivers/media/dvb/mantis/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ mantis-objs = mantis_core.o \ mantis_i2c.o \ mantis_dvb.o \ mantis_evm.o \ mantis_ca.o \ mantis_pcmcia.o \ mantis_vp1033.o \ mantis_vp1034.o \ Loading drivers/media/dvb/mantis/mantis_ca.c 0 → 100644 +127 −0 Original line number Diff line number Diff line /* Mantis PCI bridge driver Copyright (C) 2005, 2006 Manu Abraham (abraham.manu@gmail.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "mantis_common.h" #include "mantis_link.h" #include "mantis_hif.h" static int mantis_ca_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long parg) { return 0; } static int mantis_ca_open(struct inode *inode, struct file *file) { return 0; } static int mantis_ca_release(struct inode *inode, struct file *file) { return 0; } static ssize_t mantis_ca_read(struct file *file, char __user *buffer, size_t count, loff_t *ofset) { struct dvb_device *dvbdev = file->private_data; struct mantis_ca *ca = dvbdev->priv; int status; return 0; error: return status; } static ssize_t mantis_ca_write(struct file *file, const char __user *buffer, size_t count, loff_t *offset) { struct dvb_device *dvbdev = file->private_data; struct mantis_ca *ca = dvbdev->priv; int status; return 0; error: return status; } static struct file_operations mantis_fops = { .owner = THIS_MODULE, .ioctl = mantis_ca_ioctl, .open = mantis_ca_open, .release = mantis_ca_release, .read = mantis_ca_read, .write = mantis_ca_write, }; static struct dvb_device mantis_ca = { .priv = NULL, .users = 1, .readers = 1, .writers = 1, .fops = &mantis_fops, }; struct dvb_device *mantis_ca_init(struct mantis_pci *mantis) { int ret; struct dvb_device *dvbdev; struct dvb_adapter *dvb_adapter = &mantis->dvb_adapter; struct mantis_ca *ca; if (!(ca = kzalloc(sizeof (struct mantis_ca), GFP_KERNEL))) { dprintk(verbose, MANTIS_ERROR, 1, "Out of memory!, exiting .."); return NULL; } ca->ca_priv = mantis; mantis->mantis_ca = ca; mantis_evmgr_init(ca); dprintk(verbose, MANTIS_ERROR, 0, "CA: Registering Mantis Adapter(%d) Slot(0)\n", mantis->num); if (dvb_register_device(dvb_adapter, &dvbdev, &mantis_ca, ca, DVB_DEVICE_CA) == 0) { ca->ca_dev = dvbdev; return ca->ca_dev; } return 0; error: if (ca != NULL) { dprintk(verbose, MANTIS_ERROR, 1, "Error .."); if (ca->ca_dev != NULL) dvb_unregister_device(ca->ca_dev); kfree(ca); } return NULL; } void mantis_ca_exit(struct mantis_pci *mantis) { struct mantis_ca *ca = mantis->mantis_ca; mantis_evmgr_exit(ca); dprintk(verbose, MANTIS_ERROR, 0, "CA: Unregister Mantis Adapter(%d) Slot(0)\n", mantis->num); if (ca->ca_dev) dvb_unregister_device(ca->ca_dev); kfree(ca); } drivers/media/dvb/mantis/mantis_evm.c +4 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ int mantis_evmgr_init(struct mantis_ca *ca) dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Initializing Mantis Host I/F Event manager"); tasklet_init(&ca->hif_evm_tasklet, mantis_hifevm_tasklet, (unsigned long) ca); mantis_pcmcia_init(ca); return 0; } Loading @@ -99,4 +101,6 @@ void mantis_evmgr_exit(struct mantis_ca *ca) dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Mantis Host I/F Event manager exiting"); tasklet_kill(&ca->hif_evm_tasklet); mantis_pcmcia_exit(ca); } drivers/media/dvb/mantis/mantis_link.h +8 −0 Original line number Diff line number Diff line Loading @@ -56,4 +56,12 @@ struct mantis_ca { void *ca_priv; }; /* CA */ extern void mantis_event_cam_plugin(struct mantis_ca *ca); extern void mantis_event_cam_unplug(struct mantis_ca *ca); extern int mantis_pcmcia_init(struct mantis_ca *ca); extern void mantis_pcmcia_exit(struct mantis_ca *ca); extern int mantis_evmgr_init(struct mantis_ca *ca); extern void mantis_evmgr_exit(struct mantis_ca *ca); #endif // __MANTIS_LINK_H Loading
drivers/media/dvb/mantis/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ mantis-objs = mantis_core.o \ mantis_i2c.o \ mantis_dvb.o \ mantis_evm.o \ mantis_ca.o \ mantis_pcmcia.o \ mantis_vp1033.o \ mantis_vp1034.o \ Loading
drivers/media/dvb/mantis/mantis_ca.c 0 → 100644 +127 −0 Original line number Diff line number Diff line /* Mantis PCI bridge driver Copyright (C) 2005, 2006 Manu Abraham (abraham.manu@gmail.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "mantis_common.h" #include "mantis_link.h" #include "mantis_hif.h" static int mantis_ca_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long parg) { return 0; } static int mantis_ca_open(struct inode *inode, struct file *file) { return 0; } static int mantis_ca_release(struct inode *inode, struct file *file) { return 0; } static ssize_t mantis_ca_read(struct file *file, char __user *buffer, size_t count, loff_t *ofset) { struct dvb_device *dvbdev = file->private_data; struct mantis_ca *ca = dvbdev->priv; int status; return 0; error: return status; } static ssize_t mantis_ca_write(struct file *file, const char __user *buffer, size_t count, loff_t *offset) { struct dvb_device *dvbdev = file->private_data; struct mantis_ca *ca = dvbdev->priv; int status; return 0; error: return status; } static struct file_operations mantis_fops = { .owner = THIS_MODULE, .ioctl = mantis_ca_ioctl, .open = mantis_ca_open, .release = mantis_ca_release, .read = mantis_ca_read, .write = mantis_ca_write, }; static struct dvb_device mantis_ca = { .priv = NULL, .users = 1, .readers = 1, .writers = 1, .fops = &mantis_fops, }; struct dvb_device *mantis_ca_init(struct mantis_pci *mantis) { int ret; struct dvb_device *dvbdev; struct dvb_adapter *dvb_adapter = &mantis->dvb_adapter; struct mantis_ca *ca; if (!(ca = kzalloc(sizeof (struct mantis_ca), GFP_KERNEL))) { dprintk(verbose, MANTIS_ERROR, 1, "Out of memory!, exiting .."); return NULL; } ca->ca_priv = mantis; mantis->mantis_ca = ca; mantis_evmgr_init(ca); dprintk(verbose, MANTIS_ERROR, 0, "CA: Registering Mantis Adapter(%d) Slot(0)\n", mantis->num); if (dvb_register_device(dvb_adapter, &dvbdev, &mantis_ca, ca, DVB_DEVICE_CA) == 0) { ca->ca_dev = dvbdev; return ca->ca_dev; } return 0; error: if (ca != NULL) { dprintk(verbose, MANTIS_ERROR, 1, "Error .."); if (ca->ca_dev != NULL) dvb_unregister_device(ca->ca_dev); kfree(ca); } return NULL; } void mantis_ca_exit(struct mantis_pci *mantis) { struct mantis_ca *ca = mantis->mantis_ca; mantis_evmgr_exit(ca); dprintk(verbose, MANTIS_ERROR, 0, "CA: Unregister Mantis Adapter(%d) Slot(0)\n", mantis->num); if (ca->ca_dev) dvb_unregister_device(ca->ca_dev); kfree(ca); }
drivers/media/dvb/mantis/mantis_evm.c +4 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ int mantis_evmgr_init(struct mantis_ca *ca) dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Initializing Mantis Host I/F Event manager"); tasklet_init(&ca->hif_evm_tasklet, mantis_hifevm_tasklet, (unsigned long) ca); mantis_pcmcia_init(ca); return 0; } Loading @@ -99,4 +101,6 @@ void mantis_evmgr_exit(struct mantis_ca *ca) dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Mantis Host I/F Event manager exiting"); tasklet_kill(&ca->hif_evm_tasklet); mantis_pcmcia_exit(ca); }
drivers/media/dvb/mantis/mantis_link.h +8 −0 Original line number Diff line number Diff line Loading @@ -56,4 +56,12 @@ struct mantis_ca { void *ca_priv; }; /* CA */ extern void mantis_event_cam_plugin(struct mantis_ca *ca); extern void mantis_event_cam_unplug(struct mantis_ca *ca); extern int mantis_pcmcia_init(struct mantis_ca *ca); extern void mantis_pcmcia_exit(struct mantis_ca *ca); extern int mantis_evmgr_init(struct mantis_ca *ca); extern void mantis_evmgr_exit(struct mantis_ca *ca); #endif // __MANTIS_LINK_H