mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
media updates for v4.8-rc1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJXmLuzAAoJEAhfPr2O5OEVXyUP/jzXfbc5e72ECimqZQnJeK3a
+MrJUrvp9W/7e99WUHwb2QoDYo/SDpXdbLbRjU0BTnPy47XS8J10MxsfE1eRnfds
+TAhw96Hs3Wm3A5OxQfqPsZmq3AtGpU+HJ/zzulpY0bTqEzAtD8oUO9ZjT39Eshz
xFbeIr6Kco6N6W4Ja998g4uBmvjN/24xOjSmuETja+gK2zztFPp70opefA2+crdY
ChOgdUOj6cPDZlddExGf9oVrEMJhM9tn2ACrbFsD0sWPvix145JbVXgaOdGrt2Jc
huRREv9tKte2/Os7IQ8wN33Jzca6RtdXg3twlauGIOjhYuaeVoaSCqQrRgKNjFl+
CWTucHGnCP82bfmFvQxCWkhGKGGMzcNdQlnjKM7PrGPrSwW9+FNpLzs5XDX5S0gj
UYkS/smbwzOOrfEcttFCMs5EGoAs+zOYzHtyCKp4EyWcznN5wRR8y3L3cdhmGAiG
jAqTh/orjSOnnM2qQXqt574IiGTVvJqGEZyLAWC16HKbRaEFzL/+9Z79lkoxQfPn
iLALAtTagFjxj/5ITxr5b2TzgWZ+GNFnyEpeC4DXqdESVfuZX00wiy0YEq1JFG+J
RIj3VQpDqUwIs5KMqGQDG/S58iCfR83AIJBpSFIWaCHByvZ3thL8H4og20oZ8Akt
TQXCqmzIvzn8QIZS/Pge
=CN+v
-----END PGP SIGNATURE-----
Merge tag 'media/v4.8-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media documentation updates from Mauro Carvalho Chehab:
"This patch series does the conversion of all media documentation stuff
to Restrutured Text markup format and add them to the
Documentation/index.rst file.
The media documentation was grouped into 4 books:
- media uAPI
- media kAPI
- V4L driver-specific documentation
- DVB driver-specific documentation
It also contains several documentation improvements and one fixup
patch for a core issue with cropcap.
PS. After this patch series, the media DocBook is deprecated and
should be removed. I'll add such patch on a future pull request"
* tag 'media/v4.8-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (322 commits)
[media] cx23885-cardlist.rst: add a new card
[media] doc-rst: add some needed escape codes
[media] doc-rst: kapi: use :c:func: instead of :cpp:func
doc-rst: kernel-doc: fix a change introduced by mistake
[media] v4l2-ioctl.h add debug info for struct v4l2_ioctl_ops
[media] dvb_ringbuffer.h: some documentation improvements
[media] v4l2-ctrls.h: fully document the header file
[media] doc-rst: Fix some typedef ugly warnings
[media] doc-rst: reorganize the kAPI v4l2 chapters
[media] rename v4l2-framework.rst to v4l2-intro.rst
[media] move V4L2 clocks to a separate .rst file
[media] v4l2-fh.rst: add cross references and markups
[media] v4l2-fh.rst: add fh contents from v4l2-framework.rst
[media] v4l2-fh.h: add documentation for it
[media] v4l2-event.rst: add cross-references and markups
[media] v4l2-event.h: document all functions
[media] v4l2-event.rst: add text from v4l2-framework.rst
[media] v4l2-framework.rst: remove videobuf quick chapter
[media] v4l2-dev: add cross-references and improve markup
[media] doc-rst: move v4l2-dev doc to a separate file
...
This commit is contained in:
commit
ff9a082fda
619 changed files with 88276 additions and 10988 deletions
|
|
@ -1,6 +1,10 @@
|
|||
/*
|
||||
* demux.h
|
||||
*
|
||||
* The Kernel Digital TV Demux kABI defines a driver-internal interface for
|
||||
* registering low-level, hardware specific driver to a hardware independent
|
||||
* demux layer.
|
||||
*
|
||||
* Copyright (c) 2002 Convergence GmbH
|
||||
*
|
||||
* based on code:
|
||||
|
|
@ -32,49 +36,6 @@
|
|||
#include <linux/time.h>
|
||||
#include <linux/dvb/dmx.h>
|
||||
|
||||
/**
|
||||
* DOC: Digital TV Demux
|
||||
*
|
||||
* The Kernel Digital TV Demux kABI defines a driver-internal interface for
|
||||
* registering low-level, hardware specific driver to a hardware independent
|
||||
* demux layer. It is only of interest for Digital TV device driver writers.
|
||||
* The header file for this kABI is named demux.h and located in
|
||||
* drivers/media/dvb-core.
|
||||
*
|
||||
* The demux kABI should be implemented for each demux in the system. It is
|
||||
* used to select the TS source of a demux and to manage the demux resources.
|
||||
* When the demux client allocates a resource via the demux kABI, it receives
|
||||
* a pointer to the kABI of that resource.
|
||||
*
|
||||
* Each demux receives its TS input from a DVB front-end or from memory, as
|
||||
* set via this demux kABI. In a system with more than one front-end, the kABI
|
||||
* can be used to select one of the DVB front-ends as a TS source for a demux,
|
||||
* unless this is fixed in the HW platform.
|
||||
*
|
||||
* The demux kABI only controls front-ends regarding to their connections with
|
||||
* demuxes; the kABI used to set the other front-end parameters, such as
|
||||
* tuning, are devined via the Digital TV Frontend kABI.
|
||||
*
|
||||
* The functions that implement the abstract interface demux should be defined
|
||||
* static or module private and registered to the Demux core for external
|
||||
* access. It is not necessary to implement every function in the struct
|
||||
* &dmx_demux. For example, a demux interface might support Section filtering,
|
||||
* but not PES filtering. The kABI client is expected to check the value of any
|
||||
* function pointer before calling the function: the value of NULL means
|
||||
* that the function is not available.
|
||||
*
|
||||
* Whenever the functions of the demux API modify shared data, the
|
||||
* possibilities of lost update and race condition problems should be
|
||||
* addressed, e.g. by protecting parts of code with mutexes.
|
||||
*
|
||||
* Note that functions called from a bottom half context must not sleep.
|
||||
* Even a simple memory allocation without using %GFP_ATOMIC can result in a
|
||||
* kernel thread being put to sleep if swapping is needed. For example, the
|
||||
* Linux Kernel calls the functions of a network device interface from a
|
||||
* bottom half context. Thus, if a demux kABI function is called from network
|
||||
* device code, the function must not sleep.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Common definitions
|
||||
*/
|
||||
|
|
@ -104,7 +65,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* enum ts_filter_type - filter type bitmap for dmx_ts_feed.set()
|
||||
* enum ts_filter_type - filter type bitmap for dmx_ts_feed.set\(\)
|
||||
*
|
||||
* @TS_PACKET: Send TS packets (188 bytes) to callback (default).
|
||||
* @TS_PAYLOAD_ONLY: In case TS_PACKET is set, only send the TS payload
|
||||
|
|
@ -230,30 +191,6 @@ struct dmx_section_feed {
|
|||
int (*stop_filtering)(struct dmx_section_feed *feed);
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: Demux Callback
|
||||
*
|
||||
* This kernel-space API comprises the callback functions that deliver filtered
|
||||
* data to the demux client. Unlike the other DVB kABIs, these functions are
|
||||
* provided by the client and called from the demux code.
|
||||
*
|
||||
* The function pointers of this abstract interface are not packed into a
|
||||
* structure as in the other demux APIs, because the callback functions are
|
||||
* registered and used independent of each other. As an example, it is possible
|
||||
* for the API client to provide several callback functions for receiving TS
|
||||
* packets and no callbacks for PES packets or sections.
|
||||
*
|
||||
* The functions that implement the callback API need not be re-entrant: when
|
||||
* a demux driver calls one of these functions, the driver is not allowed to
|
||||
* call the function again before the original call returns. If a callback is
|
||||
* triggered by a hardware interrupt, it is recommended to use the Linux
|
||||
* bottom half mechanism or start a tasklet instead of making the callback
|
||||
* function call directly from a hardware interrupt.
|
||||
*
|
||||
* This mechanism is implemented by dmx_ts_cb() and dmx_section_cb()
|
||||
* callbacks.
|
||||
*/
|
||||
|
||||
/**
|
||||
* typedef dmx_ts_cb - DVB demux TS filter callback function prototype
|
||||
*
|
||||
|
|
@ -402,7 +339,7 @@ struct dmx_frontend {
|
|||
* @DMX_SECTION_FILTERING: set if section filtering is supported;
|
||||
* @DMX_MEMORY_BASED_FILTERING: set if write() available.
|
||||
*
|
||||
* Those flags are OR'ed in the &dmx_demux.&capabilities field
|
||||
* Those flags are OR'ed in the &dmx_demux.capabilities field
|
||||
*/
|
||||
enum dmx_demux_caps {
|
||||
DMX_TS_FILTERING = 1,
|
||||
|
|
@ -442,10 +379,10 @@ enum dmx_demux_caps {
|
|||
* @open is called and decrement it when @close is called.
|
||||
* The @demux function parameter contains a pointer to the demux API and
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EUSERS, if maximum usage count was reached;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EUSERS, if maximum usage count was reached;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @close: This function reserves the demux for use by the caller and, if
|
||||
* necessary, initializes the demux. When the demux is no longer needed,
|
||||
|
|
@ -455,10 +392,10 @@ enum dmx_demux_caps {
|
|||
* @open is called and decrement it when @close is called.
|
||||
* The @demux function parameter contains a pointer to the demux API and
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -ENODEV, if demux was not in use (e. g. no users);
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -ENODEV, if demux was not in use (e. g. no users);
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @write: This function provides the demux driver with a memory buffer
|
||||
* containing TS packets. Instead of receiving TS packets from the DVB
|
||||
|
|
@ -473,12 +410,12 @@ enum dmx_demux_caps {
|
|||
* The @buf function parameter contains a pointer to the TS data in
|
||||
* kernel-space memory.
|
||||
* The @count function parameter contains the length of the TS data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -ERESTARTSYS, if mutex lock was interrupted;
|
||||
* -EINTR, if a signal handling is pending;
|
||||
* -ENODEV, if demux was removed;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -ERESTARTSYS, if mutex lock was interrupted;
|
||||
* -EINTR, if a signal handling is pending;
|
||||
* -ENODEV, if demux was removed;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @allocate_ts_feed: Allocates a new TS feed, which is used to filter the TS
|
||||
* packets carrying a certain PID. The TS feed normally corresponds to a
|
||||
|
|
@ -489,11 +426,11 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @callback function parameter contains a pointer to the callback
|
||||
* function for passing received TS packet.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -ERESTARTSYS, if mutex lock was interrupted;
|
||||
* -EBUSY, if no more TS feeds is available;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -ERESTARTSYS, if mutex lock was interrupted;
|
||||
* -EBUSY, if no more TS feeds is available;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @release_ts_feed: Releases the resources allocated with @allocate_ts_feed.
|
||||
* Any filtering in progress on the TS feed should be stopped before
|
||||
|
|
@ -502,9 +439,9 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @feed function parameter contains a pointer to the TS feed API and
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EINVAL on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EINVAL on bad parameter.
|
||||
*
|
||||
* @allocate_section_feed: Allocates a new section feed, i.e. a demux resource
|
||||
* for filtering and receiving sections. On platforms with hardware
|
||||
|
|
@ -520,10 +457,10 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @callback function parameter contains a pointer to the callback
|
||||
* function for passing received TS packet.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EBUSY, if no more TS feeds is available;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EBUSY, if no more TS feeds is available;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @release_section_feed: Releases the resources allocated with
|
||||
* @allocate_section_feed, including allocated filters. Any filtering in
|
||||
|
|
@ -533,9 +470,9 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @feed function parameter contains a pointer to the TS feed API and
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @add_frontend: Registers a connectivity between a demux and a front-end,
|
||||
* i.e., indicates that the demux can be connected via a call to
|
||||
|
|
@ -549,9 +486,9 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @frontend function parameter contains a pointer to the front-end
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @remove_frontend: Indicates that the given front-end, registered by a call
|
||||
* to @add_frontend, can no longer be connected as a TS source by this
|
||||
|
|
@ -565,10 +502,10 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @frontend function parameter contains a pointer to the front-end
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -ENODEV, if the front-end was not found,
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -ENODEV, if the front-end was not found,
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @get_frontends: Provides the APIs of the front-ends that have been
|
||||
* registered for this demux. Any of the front-ends obtained with this
|
||||
|
|
@ -592,17 +529,17 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @frontend function parameter contains a pointer to the front-end
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EINVAL, on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EINVAL, on bad parameter.
|
||||
*
|
||||
* @disconnect_frontend: Disconnects the demux and a front-end previously
|
||||
* connected by a @connect_frontend call.
|
||||
* The @demux function parameter contains a pointer to the demux API and
|
||||
* instance data.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EINVAL on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EINVAL on bad parameter.
|
||||
*
|
||||
* @get_pes_pids: Get the PIDs for DMX_PES_AUDIO0, DMX_PES_VIDEO0,
|
||||
* DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0 and DMX_PES_PCR0.
|
||||
|
|
@ -610,9 +547,9 @@ enum dmx_demux_caps {
|
|||
* instance data.
|
||||
* The @pids function parameter contains an array with five u16 elements
|
||||
* where the PIDs will be stored.
|
||||
* It returns
|
||||
* 0 on success;
|
||||
* -EINVAL on bad parameter.
|
||||
* It returns:
|
||||
* 0 on success;
|
||||
* -EINVAL on bad parameter.
|
||||
*/
|
||||
|
||||
struct dmx_demux {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
/*
|
||||
* dvb_frontend.h
|
||||
*
|
||||
* The Digital TV Frontend kABI defines a driver-internal interface for
|
||||
* registering low-level, hardware specific driver to a hardware independent
|
||||
* frontend layer.
|
||||
*
|
||||
* Copyright (C) 2001 convergence integrated media GmbH
|
||||
* Copyright (C) 2004 convergence GmbH
|
||||
*
|
||||
|
|
@ -42,29 +46,6 @@
|
|||
|
||||
#include "dvbdev.h"
|
||||
|
||||
/**
|
||||
* DOC: Digital TV Frontend
|
||||
*
|
||||
* The Digital TV Frontend kABI defines a driver-internal interface for
|
||||
* registering low-level, hardware specific driver to a hardware independent
|
||||
* frontend layer. It is only of interest for Digital TV device driver writers.
|
||||
* The header file for this API is named dvb_frontend.h and located in
|
||||
* drivers/media/dvb-core.
|
||||
*
|
||||
* Before using the Digital TV frontend core, the bridge driver should attach
|
||||
* the frontend demod, tuner and SEC devices and call dvb_register_frontend(),
|
||||
* in order to register the new frontend at the subsystem. At device
|
||||
* detach/removal, the bridge driver should call dvb_unregister_frontend() to
|
||||
* remove the frontend from the core and then dvb_frontend_detach() to free the
|
||||
* memory allocated by the frontend drivers.
|
||||
*
|
||||
* The drivers should also call dvb_frontend_suspend() as part of their
|
||||
* handler for the &device_driver.suspend(), and dvb_frontend_resume() as
|
||||
* part of their handler for &device_driver.resume().
|
||||
*
|
||||
* A few other optional functions are provided to handle some special cases.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Maximum number of Delivery systems per frontend. It
|
||||
* should be smaller or equal to 32
|
||||
|
|
@ -406,7 +387,7 @@ struct dtv_frontend_properties;
|
|||
* FE_DISHNETWORK_SEND_LEGACY_CMD ioctl (only Satellite).
|
||||
* Drivers should not use this, except when the DVB
|
||||
* core emulation fails to provide proper support (e.g.
|
||||
* if set_voltage() takes more than 8ms to work), and
|
||||
* if @set_voltage takes more than 8ms to work), and
|
||||
* when backward compatibility with this legacy API is
|
||||
* required.
|
||||
* @i2c_gate_ctrl: controls the I2C gate. Newer drivers should use I2C
|
||||
|
|
@ -741,13 +722,13 @@ void dvb_frontend_detach(struct dvb_frontend *fe);
|
|||
* This function prepares a Digital TV frontend to suspend.
|
||||
*
|
||||
* In order to prepare the tuner to suspend, if
|
||||
* &dvb_frontend_ops.tuner_ops.suspend() is available, it calls it. Otherwise,
|
||||
* it will call &dvb_frontend_ops.tuner_ops.sleep(), if available.
|
||||
* &dvb_frontend_ops.tuner_ops.suspend\(\) is available, it calls it. Otherwise,
|
||||
* it will call &dvb_frontend_ops.tuner_ops.sleep\(\), if available.
|
||||
*
|
||||
* It will also call &dvb_frontend_ops.sleep() to put the demod to suspend.
|
||||
* It will also call &dvb_frontend_ops.sleep\(\) to put the demod to suspend.
|
||||
*
|
||||
* The drivers should also call dvb_frontend_suspend() as part of their
|
||||
* handler for the &device_driver.suspend().
|
||||
* The drivers should also call dvb_frontend_suspend\(\) as part of their
|
||||
* handler for the &device_driver.suspend\(\).
|
||||
*/
|
||||
int dvb_frontend_suspend(struct dvb_frontend *fe);
|
||||
|
||||
|
|
@ -758,17 +739,17 @@ int dvb_frontend_suspend(struct dvb_frontend *fe);
|
|||
*
|
||||
* This function resumes the usual operation of the tuner after resume.
|
||||
*
|
||||
* In order to resume the frontend, it calls the demod &dvb_frontend_ops.init().
|
||||
* In order to resume the frontend, it calls the demod &dvb_frontend_ops.init\(\).
|
||||
*
|
||||
* If &dvb_frontend_ops.tuner_ops.resume() is available, It, it calls it.
|
||||
* Otherwise,t will call &dvb_frontend_ops.tuner_ops.init(), if available.
|
||||
* If &dvb_frontend_ops.tuner_ops.resume\(\) is available, It, it calls it.
|
||||
* Otherwise,t will call &dvb_frontend_ops.tuner_ops.init\(\), if available.
|
||||
*
|
||||
* Once tuner and demods are resumed, it will enforce that the SEC voltage and
|
||||
* tone are restored to their previous values and wake up the frontend's
|
||||
* kthread in order to retune the frontend.
|
||||
*
|
||||
* The drivers should also call dvb_frontend_resume() as part of their
|
||||
* handler for the &device_driver.resume().
|
||||
* handler for the &device_driver.resume\(\).
|
||||
*/
|
||||
int dvb_frontend_resume(struct dvb_frontend *fe);
|
||||
|
||||
|
|
@ -777,7 +758,7 @@ int dvb_frontend_resume(struct dvb_frontend *fe);
|
|||
*
|
||||
* @fe: pointer to the frontend struct
|
||||
*
|
||||
* Calls &dvb_frontend_ops.init() and &dvb_frontend_ops.tuner_ops.init(),
|
||||
* Calls &dvb_frontend_ops.init\(\) and &dvb_frontend_ops.tuner_ops.init\(\),
|
||||
* and resets SEC tone and voltage (for Satellite systems).
|
||||
*
|
||||
* NOTE: Currently, this function is used only by one driver (budget-av).
|
||||
|
|
@ -799,14 +780,14 @@ void dvb_frontend_reinitialise(struct dvb_frontend *fe);
|
|||
* satellite subsystem.
|
||||
*
|
||||
* Its used internally by the DVB frontend core, in order to emulate
|
||||
* %FE_DISHNETWORK_SEND_LEGACY_CMD using the &dvb_frontend_ops.set_voltage()
|
||||
* %FE_DISHNETWORK_SEND_LEGACY_CMD using the &dvb_frontend_ops.set_voltage\(\)
|
||||
* callback.
|
||||
*
|
||||
* NOTE: it should not be used at the drivers, as the emulation for the
|
||||
* legacy callback is provided by the Kernel. The only situation where this
|
||||
* should be at the drivers is when there are some bugs at the hardware that
|
||||
* would prevent the core emulation to work. On such cases, the driver would
|
||||
* be writing a &dvb_frontend_ops.dishnetwork_send_legacy_command() and
|
||||
* be writing a &dvb_frontend_ops.dishnetwork_send_legacy_command\(\) and
|
||||
* calling this function directly.
|
||||
*/
|
||||
void dvb_frontend_sleep_until(ktime_t *waketime, u32 add_usec);
|
||||
|
|
|
|||
|
|
@ -30,11 +30,15 @@
|
|||
* @value: The value (must be != 0)
|
||||
*
|
||||
* to use rational values you can use the following method:
|
||||
*
|
||||
* intlog2(value) = intlog2(value * 2^x) - x * 2^24
|
||||
*
|
||||
* Some usecase examples:
|
||||
*
|
||||
* intlog2(8) will give 3 << 24 = 3 * 2^24
|
||||
*
|
||||
* intlog2(9) will give 3 << 24 + ... = 3.16... * 2^24
|
||||
*
|
||||
* intlog2(1.5) = intlog2(3) - 2^24 = 0.584... * 2^24
|
||||
*
|
||||
*
|
||||
|
|
@ -48,10 +52,13 @@ extern unsigned int intlog2(u32 value);
|
|||
* @value: The value (must be != 0)
|
||||
*
|
||||
* to use rational values you can use the following method:
|
||||
*
|
||||
* intlog10(value) = intlog10(value * 10^x) - x * 2^24
|
||||
*
|
||||
* An usecase example:
|
||||
*
|
||||
* intlog10(1000) will give 3 << 24 = 3 * 2^24
|
||||
*
|
||||
* due to the implementation intlog10(1000) might be not exactly 3 * 2^24
|
||||
*
|
||||
* look at intlog2 for similar examples
|
||||
|
|
|
|||
|
|
@ -150,9 +150,6 @@ extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf,
|
|||
|
||||
/**
|
||||
* dvb_ringbuffer_pkt_read_user - Read from a packet in the ringbuffer.
|
||||
* Note: unlike dvb_ringbuffer_read(), this does NOT update the read pointer
|
||||
* in the ringbuffer. You must use dvb_ringbuffer_pkt_dispose() to mark a
|
||||
* packet as no longer required.
|
||||
*
|
||||
* @rbuf: Ringbuffer concerned.
|
||||
* @idx: Packet index as returned by dvb_ringbuffer_pkt_next().
|
||||
|
|
@ -161,9 +158,17 @@ extern ssize_t dvb_ringbuffer_pkt_write(struct dvb_ringbuffer *rbuf, u8* buf,
|
|||
* @len: Size of destination buffer.
|
||||
*
|
||||
* returns Number of bytes read, or -EFAULT.
|
||||
*
|
||||
* .. note::
|
||||
*
|
||||
* unlike dvb_ringbuffer_read(), this does **NOT** update the read pointer
|
||||
* in the ringbuffer. You must use dvb_ringbuffer_pkt_dispose() to mark a
|
||||
* packet as no longer required.
|
||||
*/
|
||||
extern ssize_t dvb_ringbuffer_pkt_read_user(struct dvb_ringbuffer *rbuf, size_t idx,
|
||||
int offset, u8 __user *buf, size_t len);
|
||||
extern ssize_t dvb_ringbuffer_pkt_read_user(struct dvb_ringbuffer *rbuf,
|
||||
size_t idx,
|
||||
int offset, u8 __user *buf,
|
||||
size_t len);
|
||||
|
||||
/**
|
||||
* dvb_ringbuffer_pkt_read - Read from a packet in the ringbuffer.
|
||||
|
|
|
|||
|
|
@ -812,40 +812,6 @@ static int video_register_media_controller(struct video_device *vdev, int type)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* __video_register_device - register video4linux devices
|
||||
* @vdev: video device structure we want to register
|
||||
* @type: type of device to register
|
||||
* @nr: which device node number (0 == /dev/video0, 1 == /dev/video1, ...
|
||||
* -1 == first free)
|
||||
* @warn_if_nr_in_use: warn if the desired device node number
|
||||
* was already in use and another number was chosen instead.
|
||||
* @owner: module that owns the video device node
|
||||
*
|
||||
* The registration code assigns minor numbers and device node numbers
|
||||
* based on the requested type and registers the new device node with
|
||||
* the kernel.
|
||||
*
|
||||
* This function assumes that struct video_device was zeroed when it
|
||||
* was allocated and does not contain any stale date.
|
||||
*
|
||||
* An error is returned if no free minor or device node number could be
|
||||
* found, or if the registration of the device node failed.
|
||||
*
|
||||
* Zero is returned on success.
|
||||
*
|
||||
* Valid types are
|
||||
*
|
||||
* %VFL_TYPE_GRABBER - A frame grabber
|
||||
*
|
||||
* %VFL_TYPE_VBI - Vertical blank data (undecoded)
|
||||
*
|
||||
* %VFL_TYPE_RADIO - A radio card
|
||||
*
|
||||
* %VFL_TYPE_SUBDEV - A subdevice
|
||||
*
|
||||
* %VFL_TYPE_SDR - Software Defined Radio
|
||||
*/
|
||||
int __video_register_device(struct video_device *vdev, int type, int nr,
|
||||
int warn_if_nr_in_use, struct module *owner)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -621,16 +621,6 @@ void v4l2_subdev_init(struct v4l2_subdev *sd, const struct v4l2_subdev_ops *ops)
|
|||
}
|
||||
EXPORT_SYMBOL(v4l2_subdev_init);
|
||||
|
||||
/**
|
||||
* v4l2_subdev_notify_event() - Delivers event notification for subdevice
|
||||
* @sd: The subdev for which to deliver the event
|
||||
* @ev: The event to deliver
|
||||
*
|
||||
* Will deliver the specified event to all userspace event listeners which are
|
||||
* subscribed to the v42l subdev event queue as well as to the bridge driver
|
||||
* using the notify callback. The notification type for the notify callback
|
||||
* will be V4L2_DEVICE_NOTIFY_EVENT.
|
||||
*/
|
||||
void v4l2_subdev_notify_event(struct v4l2_subdev *sd,
|
||||
const struct v4l2_event *ev)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue