2009-12-04 11:00:30 +03:00
/*
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 0213 9 , USA .
*/
# ifndef __MANTIS_LINK_H
# define __MANTIS_LINK_H
2009-12-04 11:09:04 +03:00
# include <linux/workqueue.h>
2009-12-04 11:11:14 +03:00
# include "dvb_ca_en50221.h"
2009-12-04 11:09:04 +03:00
2009-12-04 11:00:30 +03:00
enum mantis_sbuf_status {
MANTIS_SBUF_DATA_AVAIL = 1 ,
MANTIS_SBUF_DATA_EMPTY = 2 ,
MANTIS_SBUF_DATA_OVFLW = 3
} ;
struct mantis_slot {
u32 timeout ;
2009-12-04 11:09:47 +03:00
u32 slave_cfg ;
u32 bar ;
2009-12-04 11:00:30 +03:00
} ;
2009-12-04 11:06:00 +03:00
/* Physical layer */
enum mantis_slot_state {
MODULE_INSERTED = 3 ,
MODULE_XTRACTED = 4
} ;
2009-12-04 11:00:30 +03:00
struct mantis_ca {
2009-12-04 11:09:47 +03:00
struct mantis_slot slot [ 4 ] ;
2009-12-04 11:00:30 +03:00
2009-12-04 11:09:04 +03:00
struct work_struct hif_evm_work ;
2009-12-04 11:00:30 +03:00
u32 hif_event ;
wait_queue_head_t hif_opdone_wq ;
wait_queue_head_t hif_brrdyw_wq ;
wait_queue_head_t hif_data_wq ;
2009-12-04 11:29:48 +03:00
wait_queue_head_t hif_write_wq ; /* HIF Write op */
2009-12-04 11:00:30 +03:00
enum mantis_sbuf_status sbuf_status ;
2009-12-04 11:06:00 +03:00
enum mantis_slot_state slot_state ;
2009-12-04 11:11:14 +03:00
// struct dvb_device *ca_dev;
2009-12-04 11:00:30 +03:00
void * ca_priv ;
2009-12-04 11:11:14 +03:00
struct dvb_ca_en50221 en50221 ;
2009-12-04 11:00:30 +03:00
} ;
2009-12-04 11:06:38 +03:00
/* 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 ) ;
2009-12-04 11:09:47 +03:00
/* HIF */
extern int mantis_hif_init ( struct mantis_ca * ca ) ;
extern void mantis_hif_exit ( struct mantis_ca * ca ) ;
extern int mantis_hif_read_mem ( struct mantis_ca * ca , u32 addr ) ;
extern int mantis_hif_write_mem ( struct mantis_ca * ca , u32 addr , u8 data ) ;
2009-12-04 11:11:14 +03:00
extern int mantis_hif_read_iom ( struct mantis_ca * ca , u32 addr ) ;
extern int mantis_hif_write_iom ( struct mantis_ca * ca , u32 addr , u8 data ) ;
2009-12-04 11:09:47 +03:00
2009-12-04 11:00:30 +03:00
# endif // __MANTIS_LINK_H