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:
Hans Verkuil 2006-01-09 15:32:40 -02:00 committed by Mauro Carvalho Chehab
commit 7e8b09ea16
4 changed files with 1097 additions and 77 deletions

View file

@ -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_ */