V4L/DVB (9821): v4l2-common: add i2c helper functions
Add helper functions to load i2c sub-devices, integrating them into the v4l2-framework. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
2a1fcdf082
commit
dd99120c71
2 changed files with 154 additions and 0 deletions
|
@ -57,6 +57,29 @@
|
|||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/* These printk constructs can be used with v4l2_device and v4l2_subdev */
|
||||
#define v4l2_printk(level, dev, fmt, arg...) \
|
||||
printk(level "%s: " fmt, (dev)->name , ## arg)
|
||||
|
||||
#define v4l2_err(dev, fmt, arg...) \
|
||||
v4l2_printk(KERN_ERR, dev, fmt , ## arg)
|
||||
|
||||
#define v4l2_warn(dev, fmt, arg...) \
|
||||
v4l2_printk(KERN_WARNING, dev, fmt , ## arg)
|
||||
|
||||
#define v4l2_info(dev, fmt, arg...) \
|
||||
v4l2_printk(KERN_INFO, dev, fmt , ## arg)
|
||||
|
||||
/* These three macros assume that the debug level is set with a module
|
||||
parameter called 'debug'. */
|
||||
#define v4l2_dbg(level, debug, dev, fmt, arg...) \
|
||||
do { \
|
||||
if (debug >= (level)) \
|
||||
v4l2_printk(KERN_DEBUG, dev, fmt , ## arg); \
|
||||
} while (0)
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/* Priority helper functions */
|
||||
|
||||
struct v4l2_prio_state {
|
||||
|
@ -104,11 +127,29 @@ struct i2c_driver;
|
|||
struct i2c_adapter;
|
||||
struct i2c_client;
|
||||
struct i2c_device_id;
|
||||
struct v4l2_device;
|
||||
struct v4l2_subdev;
|
||||
struct v4l2_subdev_ops;
|
||||
|
||||
int v4l2_i2c_attach(struct i2c_adapter *adapter, int address, struct i2c_driver *driver,
|
||||
const char *name,
|
||||
int (*probe)(struct i2c_client *, const struct i2c_device_id *));
|
||||
|
||||
/* Load an i2c module and return an initialized v4l2_subdev struct.
|
||||
Only call request_module if module_name != NULL.
|
||||
The client_type argument is the name of the chip that's on the adapter. */
|
||||
struct v4l2_subdev *v4l2_i2c_new_subdev(struct i2c_adapter *adapter,
|
||||
const char *module_name, const char *client_type, u8 addr);
|
||||
/* Probe and load an i2c module and return an initialized v4l2_subdev struct.
|
||||
Only call request_module if module_name != NULL.
|
||||
The client_type argument is the name of the chip that's on the adapter. */
|
||||
struct v4l2_subdev *v4l2_i2c_new_probed_subdev(struct i2c_adapter *adapter,
|
||||
const char *module_name, const char *client_type,
|
||||
const unsigned short *addrs);
|
||||
/* Initialize an v4l2_subdev with data from an i2c_client struct */
|
||||
void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client,
|
||||
const struct v4l2_subdev_ops *ops);
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/* Internal ioctls */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue