mantis_link.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. Mantis PCI bridge driver
  4. Copyright (C) Manu Abraham ([email protected])
  5. */
  6. #ifndef __MANTIS_LINK_H
  7. #define __MANTIS_LINK_H
  8. #include <linux/mutex.h>
  9. #include <linux/workqueue.h>
  10. #include <media/dvb_ca_en50221.h>
  11. enum mantis_sbuf_status {
  12. MANTIS_SBUF_DATA_AVAIL = 1,
  13. MANTIS_SBUF_DATA_EMPTY = 2,
  14. MANTIS_SBUF_DATA_OVFLW = 3
  15. };
  16. struct mantis_slot {
  17. u32 timeout;
  18. u32 slave_cfg;
  19. u32 bar;
  20. };
  21. /* Physical layer */
  22. enum mantis_slot_state {
  23. MODULE_INSERTED = 3,
  24. MODULE_XTRACTED = 4
  25. };
  26. struct mantis_ca {
  27. struct mantis_slot slot[4];
  28. struct work_struct hif_evm_work;
  29. u32 hif_event;
  30. wait_queue_head_t hif_opdone_wq;
  31. wait_queue_head_t hif_brrdyw_wq;
  32. wait_queue_head_t hif_data_wq;
  33. wait_queue_head_t hif_write_wq; /* HIF Write op */
  34. enum mantis_sbuf_status sbuf_status;
  35. enum mantis_slot_state slot_state;
  36. void *ca_priv;
  37. struct dvb_ca_en50221 en50221;
  38. struct mutex ca_lock;
  39. };
  40. /* CA */
  41. extern void mantis_event_cam_plugin(struct mantis_ca *ca);
  42. extern void mantis_event_cam_unplug(struct mantis_ca *ca);
  43. extern int mantis_pcmcia_init(struct mantis_ca *ca);
  44. extern void mantis_pcmcia_exit(struct mantis_ca *ca);
  45. extern int mantis_evmgr_init(struct mantis_ca *ca);
  46. extern void mantis_evmgr_exit(struct mantis_ca *ca);
  47. /* HIF */
  48. extern int mantis_hif_init(struct mantis_ca *ca);
  49. extern void mantis_hif_exit(struct mantis_ca *ca);
  50. extern int mantis_hif_read_mem(struct mantis_ca *ca, u32 addr);
  51. extern int mantis_hif_write_mem(struct mantis_ca *ca, u32 addr, u8 data);
  52. extern int mantis_hif_read_iom(struct mantis_ca *ca, u32 addr);
  53. extern int mantis_hif_write_iom(struct mantis_ca *ca, u32 addr, u8 data);
  54. #endif /* __MANTIS_LINK_H */