2019-05-20 09:19:02 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2009-12-04 05:00:30 -03:00
/*
Mantis PCI bridge driver
2009-12-15 09:13:49 -03:00
Copyright ( C ) Manu Abraham ( abraham . manu @ gmail . com )
2009-12-04 05:00:30 -03:00
*/
# ifndef __MANTIS_LINK_H
# define __MANTIS_LINK_H
2009-12-04 05:34:19 -03:00
# include <linux/mutex.h>
2009-12-04 05:09:04 -03:00
# include <linux/workqueue.h>
2017-12-28 13:03:51 -05:00
# include <media/dvb_ca_en50221.h>
2009-12-04 05:09:04 -03:00
2009-12-04 05: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 05:09:47 -03:00
u32 slave_cfg ;
u32 bar ;
2009-12-04 05:00:30 -03:00
} ;
2009-12-04 05:06:00 -03:00
/* Physical layer */
enum mantis_slot_state {
MODULE_INSERTED = 3 ,
MODULE_XTRACTED = 4
} ;
2009-12-04 05:00:30 -03:00
struct mantis_ca {
2009-12-04 05:09:47 -03:00
struct mantis_slot slot [ 4 ] ;
2009-12-04 05:00:30 -03:00
2009-12-04 05:09:04 -03:00
struct work_struct hif_evm_work ;
2009-12-04 05: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 05:29:48 -03:00
wait_queue_head_t hif_write_wq ; /* HIF Write op */
2009-12-04 05:00:30 -03:00
enum mantis_sbuf_status sbuf_status ;
2009-12-04 05:06:00 -03:00
enum mantis_slot_state slot_state ;
2009-12-04 05:00:30 -03:00
void * ca_priv ;
2009-12-04 05:11:14 -03:00
struct dvb_ca_en50221 en50221 ;
2009-12-04 05:34:19 -03:00
struct mutex ca_lock ;
2009-12-04 05:00:30 -03:00
} ;
2009-12-04 05: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 05: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 05: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 05:09:47 -03:00
2009-12-04 05:41:11 -03:00
# endif /* __MANTIS_LINK_H */