diff options
Diffstat (limited to 'drivers/media/video/cx88/cx88.h')
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 3bc91aad4fe5..5980e47aee13 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -74,6 +74,11 @@ enum cx88_board_type { | |||
74 | CX88_MPEG_BLACKBIRD | 74 | CX88_MPEG_BLACKBIRD |
75 | }; | 75 | }; |
76 | 76 | ||
77 | enum cx8802_board_access { | ||
78 | CX8802_DRVCTL_SHARED = 1, | ||
79 | CX8802_DRVCTL_EXCLUSIVE = 2, | ||
80 | }; | ||
81 | |||
77 | /* ----------------------------------------------------------- */ | 82 | /* ----------------------------------------------------------- */ |
78 | /* tv norms */ | 83 | /* tv norms */ |
79 | 84 | ||
@@ -330,6 +335,7 @@ struct cx88_core { | |||
330 | 335 | ||
331 | /* cx88-video needs to access cx8802 for hybrid tuner pll access. */ | 336 | /* cx88-video needs to access cx8802 for hybrid tuner pll access. */ |
332 | struct cx8802_dev *dvbdev; | 337 | struct cx8802_dev *dvbdev; |
338 | enum cx88_board_type active_type_id; | ||
333 | }; | 339 | }; |
334 | 340 | ||
335 | struct cx8800_dev; | 341 | struct cx8800_dev; |
@@ -405,6 +411,31 @@ struct cx8802_suspend_state { | |||
405 | int disabled; | 411 | int disabled; |
406 | }; | 412 | }; |
407 | 413 | ||
414 | struct cx8802_driver { | ||
415 | struct cx88_core *core; | ||
416 | struct list_head devlist; | ||
417 | |||
418 | /* Type of driver and access required */ | ||
419 | enum cx88_board_type type_id; | ||
420 | enum cx8802_board_access hw_access; | ||
421 | |||
422 | /* MPEG 8802 internal only */ | ||
423 | int (*suspend)(struct pci_dev *pci_dev, pm_message_t state); | ||
424 | int (*resume)(struct pci_dev *pci_dev); | ||
425 | |||
426 | /* MPEG 8802 -> mini driver - Driver probe and configuration */ | ||
427 | int (*probe)(struct cx8802_driver *drv); | ||
428 | int (*remove)(struct cx8802_driver *drv); | ||
429 | |||
430 | /* MPEG 8802 -> mini driver - Access for hardware control */ | ||
431 | int (*advise_acquire)(struct cx8802_driver *drv); | ||
432 | int (*advise_release)(struct cx8802_driver *drv); | ||
433 | |||
434 | /* MPEG 8802 <- mini driver - Access for hardware control */ | ||
435 | int (*request_acquire)(struct cx8802_driver *drv); | ||
436 | int (*request_release)(struct cx8802_driver *drv); | ||
437 | }; | ||
438 | |||
408 | struct cx8802_dev { | 439 | struct cx8802_dev { |
409 | struct cx88_core *core; | 440 | struct cx88_core *core; |
410 | spinlock_t slock; | 441 | spinlock_t slock; |
@@ -439,6 +470,9 @@ struct cx8802_dev { | |||
439 | 470 | ||
440 | /* mpeg params */ | 471 | /* mpeg params */ |
441 | struct cx2341x_mpeg_params params; | 472 | struct cx2341x_mpeg_params params; |
473 | |||
474 | /* List of attached drivers */ | ||
475 | struct cx8802_driver drvlist; | ||
442 | }; | 476 | }; |
443 | 477 | ||
444 | /* ----------------------------------------------------------- */ | 478 | /* ----------------------------------------------------------- */ |
@@ -571,6 +605,11 @@ void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t); | |||
571 | void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual); | 605 | void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual); |
572 | int cx88_audio_thread(void *data); | 606 | int cx88_audio_thread(void *data); |
573 | 607 | ||
608 | int cx8802_register_driver(struct cx8802_driver *drv); | ||
609 | int cx8802_unregister_driver(struct cx8802_driver *drv); | ||
610 | struct cx8802_dev * cx8802_get_device(struct inode *inode); | ||
611 | struct cx8802_driver * cx8802_get_driver(struct cx8802_dev *dev, enum cx88_board_type btype); | ||
612 | |||
574 | /* ----------------------------------------------------------- */ | 613 | /* ----------------------------------------------------------- */ |
575 | /* cx88-input.c */ | 614 | /* cx88-input.c */ |
576 | 615 | ||
@@ -600,6 +639,13 @@ extern int cx88_do_ioctl(struct inode *inode, struct file *file, int radio, | |||
600 | extern const u32 cx88_user_ctrls[]; | 639 | extern const u32 cx88_user_ctrls[]; |
601 | extern int cx8800_ctrl_query(struct v4l2_queryctrl *qctrl); | 640 | extern int cx8800_ctrl_query(struct v4l2_queryctrl *qctrl); |
602 | 641 | ||
642 | /* ----------------------------------------------------------- */ | ||
643 | /* cx88-blackbird.c */ | ||
644 | /* used by cx88-ivtv ioctl emulation layer */ | ||
645 | extern int (*cx88_ioctl_hook)(struct inode *inode, struct file *file, | ||
646 | unsigned int cmd, void *arg); | ||
647 | extern unsigned int (*cx88_ioctl_translator)(unsigned int cmd); | ||
648 | |||
603 | /* | 649 | /* |
604 | * Local variables: | 650 | * Local variables: |
605 | * c-basic-offset: 8 | 651 | * c-basic-offset: 8 |