Loading Documentation/DocBook/device-drivers.tmpl +1 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,7 @@ X!Isound/sound_firmware.c !Idrivers/media/dvb-core/dvb_frontend.h !Idrivers/media/dvb-core/dvb_math.h !Idrivers/media/dvb-core/dvb_ringbuffer.h !Idrivers/media/dvb-core/dvbdev.h </sect1> <sect1><title>Remote Controller devices</title> !Iinclude/media/rc-core.h Loading drivers/media/dvb-core/dvbdev.h +99 −17 Original line number Diff line number Diff line Loading @@ -57,6 +57,25 @@ struct dvb_frontend; /** * struct dvb_adapter - represents a Digital TV adapter using Linux DVB API * * @num: Number of the adapter * @list_head: List with the DVB adapters * @device_list: List with the DVB devices * @name: Name of the adapter * @proposed_mac: proposed MAC address for the adapter * @priv: private data * @device: pointer to struct device * @module: pointer to struct module * @mfe_shared: mfe shared: indicates mutually exclusive frontends * Thie usage of this flag is currently deprecated * @mfe_dvbdev: Frontend device in use, in the case of MFE * @mfe_lock: Lock to prevent using the other frontends when MFE is * used. * @mdev: pointer to struct media_device, used when the media * controller is used. */ struct dvb_adapter { int num; struct list_head list_head; Loading @@ -78,7 +97,34 @@ struct dvb_adapter { #endif }; /** * struct dvb_device - represents a DVB device node * * @list_head: List head with all DVB devices * @fops: pointer to struct file_operations * @adapter: pointer to the adapter that holds this device node * @type: type of the device: DVB_DEVICE_SEC, DVB_DEVICE_FRONTEND, * DVB_DEVICE_DEMUX, DVB_DEVICE_DVR, DVB_DEVICE_CA, DVB_DEVICE_NET * @minor: devnode minor number. Major number is always DVB_MAJOR. * @id: device ID number, inside the adapter * @readers: Initialized by the caller. Each call to open() in Read Only mode * decreases this counter by one. * @writers: Initialized by the caller. Each call to open() in Read/Write * mode decreases this counter by one. * @users: Initialized by the caller. Each call to open() in any mode * decreases this counter by one. * @wait_queue: wait queue, used to wait for certain events inside one of * the DVB API callers * @kernel_ioctl: callback function used to handle ioctl calls from userspace. * @name: Name to be used for the device at the Media Controller * @entity: pointer to struct media_entity associated with the device node * @pads: pointer to struct media_pad associated with @entity; * @priv: private data * * This structure is used by the DVB core (frontend, CA, net, demux) in * order to create the device nodes. Usually, driver should not initialize * this struct diretly. */ struct dvb_device { struct list_head list_head; const struct file_operations *fops; Loading Loading @@ -109,19 +155,55 @@ struct dvb_device { void *priv; }; extern int dvb_register_adapter(struct dvb_adapter *adap, const char *name, /** * dvb_register_adapter - Registers a new DVB adapter * * @adap: pointer to struct dvb_adapter * @name: Adapter's name * @module: initialized with THIS_MODULE at the caller * @device: pointer to struct device that corresponds to the device driver * @adapter_nums: Array with a list of the numbers for @dvb_register_adapter; * to select among them. Typically, initialized with: * DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nums) */ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct module *module, struct device *device, short *adapter_nums); extern int dvb_unregister_adapter (struct dvb_adapter *adap); extern int dvb_register_device (struct dvb_adapter *adap, /** * dvb_unregister_adapter - Unregisters a DVB adapter * * @adap: pointer to struct dvb_adapter */ int dvb_unregister_adapter(struct dvb_adapter *adap); /** * dvb_register_device - Registers a new DVB device * * @adap: pointer to struct dvb_adapter * @pdvbdev: pointer to the place where the new struct dvb_device will be * stored * @template: Template used to create &pdvbdev; * @device: pointer to struct device that corresponds to the device driver * @adapter_nums: Array with a list of the numbers for @dvb_register_adapter; * to select among them. Typically, initialized with: * DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nums) * @priv: private data * @type: type of the device: DVB_DEVICE_SEC, DVB_DEVICE_FRONTEND, * DVB_DEVICE_DEMUX, DVB_DEVICE_DVR, DVB_DEVICE_CA, DVB_DEVICE_NET */ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, const struct dvb_device *template, void *priv, int type); extern void dvb_unregister_device (struct dvb_device *dvbdev); /** * dvb_unregister_device - Unregisters a DVB device * * @dvbdev: pointer to struct dvb_device */ void dvb_unregister_device(struct dvb_device *dvbdev); #ifdef CONFIG_MEDIA_CONTROLLER_DVB void dvb_create_media_graph(struct dvb_adapter *adap); Loading @@ -136,16 +218,16 @@ static inline void dvb_create_media_graph(struct dvb_adapter *adap) {} #define dvb_register_media_controller(a, b) {} #endif extern int dvb_generic_open (struct inode *inode, struct file *file); extern int dvb_generic_release (struct inode *inode, struct file *file); extern long dvb_generic_ioctl (struct file *file, int dvb_generic_open (struct inode *inode, struct file *file); int dvb_generic_release (struct inode *inode, struct file *file); long dvb_generic_ioctl (struct file *file, unsigned int cmd, unsigned long arg); /* we don't mess with video_usercopy() any more, we simply define out own dvb_usercopy(), which will hopefully become generic_usercopy() someday... */ extern int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg, int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg, int (*func)(struct file *file, unsigned int cmd, void *arg)); /** generic DVB attach function. */ Loading Loading
Documentation/DocBook/device-drivers.tmpl +1 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,7 @@ X!Isound/sound_firmware.c !Idrivers/media/dvb-core/dvb_frontend.h !Idrivers/media/dvb-core/dvb_math.h !Idrivers/media/dvb-core/dvb_ringbuffer.h !Idrivers/media/dvb-core/dvbdev.h </sect1> <sect1><title>Remote Controller devices</title> !Iinclude/media/rc-core.h Loading
drivers/media/dvb-core/dvbdev.h +99 −17 Original line number Diff line number Diff line Loading @@ -57,6 +57,25 @@ struct dvb_frontend; /** * struct dvb_adapter - represents a Digital TV adapter using Linux DVB API * * @num: Number of the adapter * @list_head: List with the DVB adapters * @device_list: List with the DVB devices * @name: Name of the adapter * @proposed_mac: proposed MAC address for the adapter * @priv: private data * @device: pointer to struct device * @module: pointer to struct module * @mfe_shared: mfe shared: indicates mutually exclusive frontends * Thie usage of this flag is currently deprecated * @mfe_dvbdev: Frontend device in use, in the case of MFE * @mfe_lock: Lock to prevent using the other frontends when MFE is * used. * @mdev: pointer to struct media_device, used when the media * controller is used. */ struct dvb_adapter { int num; struct list_head list_head; Loading @@ -78,7 +97,34 @@ struct dvb_adapter { #endif }; /** * struct dvb_device - represents a DVB device node * * @list_head: List head with all DVB devices * @fops: pointer to struct file_operations * @adapter: pointer to the adapter that holds this device node * @type: type of the device: DVB_DEVICE_SEC, DVB_DEVICE_FRONTEND, * DVB_DEVICE_DEMUX, DVB_DEVICE_DVR, DVB_DEVICE_CA, DVB_DEVICE_NET * @minor: devnode minor number. Major number is always DVB_MAJOR. * @id: device ID number, inside the adapter * @readers: Initialized by the caller. Each call to open() in Read Only mode * decreases this counter by one. * @writers: Initialized by the caller. Each call to open() in Read/Write * mode decreases this counter by one. * @users: Initialized by the caller. Each call to open() in any mode * decreases this counter by one. * @wait_queue: wait queue, used to wait for certain events inside one of * the DVB API callers * @kernel_ioctl: callback function used to handle ioctl calls from userspace. * @name: Name to be used for the device at the Media Controller * @entity: pointer to struct media_entity associated with the device node * @pads: pointer to struct media_pad associated with @entity; * @priv: private data * * This structure is used by the DVB core (frontend, CA, net, demux) in * order to create the device nodes. Usually, driver should not initialize * this struct diretly. */ struct dvb_device { struct list_head list_head; const struct file_operations *fops; Loading Loading @@ -109,19 +155,55 @@ struct dvb_device { void *priv; }; extern int dvb_register_adapter(struct dvb_adapter *adap, const char *name, /** * dvb_register_adapter - Registers a new DVB adapter * * @adap: pointer to struct dvb_adapter * @name: Adapter's name * @module: initialized with THIS_MODULE at the caller * @device: pointer to struct device that corresponds to the device driver * @adapter_nums: Array with a list of the numbers for @dvb_register_adapter; * to select among them. Typically, initialized with: * DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nums) */ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct module *module, struct device *device, short *adapter_nums); extern int dvb_unregister_adapter (struct dvb_adapter *adap); extern int dvb_register_device (struct dvb_adapter *adap, /** * dvb_unregister_adapter - Unregisters a DVB adapter * * @adap: pointer to struct dvb_adapter */ int dvb_unregister_adapter(struct dvb_adapter *adap); /** * dvb_register_device - Registers a new DVB device * * @adap: pointer to struct dvb_adapter * @pdvbdev: pointer to the place where the new struct dvb_device will be * stored * @template: Template used to create &pdvbdev; * @device: pointer to struct device that corresponds to the device driver * @adapter_nums: Array with a list of the numbers for @dvb_register_adapter; * to select among them. Typically, initialized with: * DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nums) * @priv: private data * @type: type of the device: DVB_DEVICE_SEC, DVB_DEVICE_FRONTEND, * DVB_DEVICE_DEMUX, DVB_DEVICE_DVR, DVB_DEVICE_CA, DVB_DEVICE_NET */ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, const struct dvb_device *template, void *priv, int type); extern void dvb_unregister_device (struct dvb_device *dvbdev); /** * dvb_unregister_device - Unregisters a DVB device * * @dvbdev: pointer to struct dvb_device */ void dvb_unregister_device(struct dvb_device *dvbdev); #ifdef CONFIG_MEDIA_CONTROLLER_DVB void dvb_create_media_graph(struct dvb_adapter *adap); Loading @@ -136,16 +218,16 @@ static inline void dvb_create_media_graph(struct dvb_adapter *adap) {} #define dvb_register_media_controller(a, b) {} #endif extern int dvb_generic_open (struct inode *inode, struct file *file); extern int dvb_generic_release (struct inode *inode, struct file *file); extern long dvb_generic_ioctl (struct file *file, int dvb_generic_open (struct inode *inode, struct file *file); int dvb_generic_release (struct inode *inode, struct file *file); long dvb_generic_ioctl (struct file *file, unsigned int cmd, unsigned long arg); /* we don't mess with video_usercopy() any more, we simply define out own dvb_usercopy(), which will hopefully become generic_usercopy() someday... */ extern int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg, int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg, int (*func)(struct file *file, unsigned int cmd, void *arg)); /** generic DVB attach function. */ Loading