V4L/DVB (3276): Added new diagnositics macros, convert msp3400 to the new macros.
- Added new v4l_err, v4l_warn, v4l_info and v4l_dbg macros to v4l2-common.h for use in v4l-dvb i2c drivers. This ensures a unique prefix for each device instance. - At a later stage these macros may be reimplemented using the device-generic macros from device.h. - Converted the msp3400 driver to the new macros. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
This commit is contained in:
parent
53b0a1c60b
commit
7e8b09ea16
4 changed files with 1097 additions and 77 deletions
|
@ -26,6 +26,57 @@
|
|||
#ifndef V4L2_COMMON_H_
|
||||
#define V4L2_COMMON_H_
|
||||
|
||||
/* v4l debugging and diagnostics */
|
||||
|
||||
/* Common printk constucts for v4l-i2c drivers. These macros create a unique
|
||||
prefix consisting of the driver name, the adapter number and the i2c
|
||||
address. */
|
||||
#define v4l_printk(level, name, adapter, addr, fmt, arg...) \
|
||||
printk(level "%s %d-%04x: " fmt, name, i2c_adapter_id(adapter), addr , ## arg)
|
||||
|
||||
#define v4l_client_printk(level, client, fmt, arg...) \
|
||||
v4l_printk(level, (client)->driver->driver.name, (client)->adapter, \
|
||||
(client)->addr, fmt , ## arg)
|
||||
|
||||
#define v4l_err(client, fmt, arg...) \
|
||||
v4l_client_printk(KERN_ERR, client, fmt , ## arg)
|
||||
|
||||
#define v4l_warn(client, fmt, arg...) \
|
||||
v4l_client_printk(KERN_WARNING, client, fmt , ## arg)
|
||||
|
||||
#define v4l_info(client, fmt, arg...) \
|
||||
v4l_client_printk(KERN_INFO, client, fmt , ## arg)
|
||||
|
||||
/* These three macros assume that the debug level is set with a module
|
||||
parameter called 'debug'. */
|
||||
#define v4l_dbg(level, client, fmt, arg...) \
|
||||
do { \
|
||||
if (debug >= (level)) \
|
||||
v4l_client_printk(KERN_DEBUG, client, fmt , ## arg); \
|
||||
} while (0)
|
||||
|
||||
/* Prints the ioctl in a human-readable format */
|
||||
extern void v4l_printk_ioctl(unsigned int cmd);
|
||||
|
||||
/* Use this macro for non-I2C drivers. Pass the driver name as the first arg. */
|
||||
#define v4l_print_ioctl(name, cmd) \
|
||||
do { \
|
||||
printk(KERN_DEBUG "%s: ", name); \
|
||||
v4l_printk_ioctl(cmd); \
|
||||
} while (0)
|
||||
|
||||
/* Use this macro in I2C drivers where 'client' is the struct i2c_client
|
||||
pointer */
|
||||
#define v4l_i2c_print_ioctl(client, cmd) \
|
||||
do { \
|
||||
v4l_client_printk(KERN_DEBUG, client, ""); \
|
||||
v4l_printk_ioctl(cmd); \
|
||||
} while (0)
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/* Internal ioctls */
|
||||
|
||||
/* VIDIOC_INT_G_REGISTER and VIDIOC_INT_S_REGISTER */
|
||||
struct v4l2_register {
|
||||
u32 i2c_id; /* I2C driver ID of the I2C chip. 0 for the I2C adapter. */
|
||||
|
@ -122,16 +173,4 @@ enum v4l2_chip_ident {
|
|||
If the frequency is not supported, then -EINVAL is returned. */
|
||||
#define VIDIOC_INT_I2S_CLOCK_FREQ _IOW ('d', 108, u32)
|
||||
|
||||
/* Prints used ioctl */
|
||||
extern void v4l_printk_ioctl(unsigned int cmd);
|
||||
|
||||
#define v4l_print_ioctl(name,cmd) do {\
|
||||
printk(KERN_DEBUG "%s: ", name); \
|
||||
v4l_printk_ioctl(cmd); } while (0)
|
||||
|
||||
#define v4l_i2c_print_ioctl(client,cmd) do {\
|
||||
printk(KERN_DEBUG "%s %d-%04x: ", (client)->driver->name, \
|
||||
i2c_adapter_id((client)->adapter),(client)->addr); \
|
||||
v4l_printk_ioctl(cmd); } while (0)
|
||||
|
||||
#endif /* V4L2_COMMON_H_ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue