Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at c9a28fa7b9ac19b676deefa0a171ce7df8755c08 68 lines 2.2 kB view raw
1/* 2 * v4l2-i2c-drv.h - contains I2C handling code that's identical for 3 * all V4L2 I2C drivers. Use this header if the 4 * I2C driver is only used by drivers converted 5 * to the bus-based I2C API. 6 * 7 * Copyright (C) 2007 Hans Verkuil <hverkuil@xs4all.nl> 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22 */ 23 24#ifndef __V4L2_I2C_DRV_H__ 25#define __V4L2_I2C_DRV_H__ 26 27#include <media/v4l2-common.h> 28 29struct v4l2_i2c_driver_data { 30 const char * const name; 31 int driverid; 32 int (*command)(struct i2c_client *client, unsigned int cmd, void *arg); 33 int (*probe)(struct i2c_client *client); 34 int (*remove)(struct i2c_client *client); 35 int (*suspend)(struct i2c_client *client, pm_message_t state); 36 int (*resume)(struct i2c_client *client); 37 int (*legacy_probe)(struct i2c_adapter *adapter); 38 int legacy_class; 39}; 40 41static struct v4l2_i2c_driver_data v4l2_i2c_data; 42static struct i2c_driver v4l2_i2c_driver; 43 44 45/* Bus-based I2C implementation for kernels >= 2.6.22 */ 46 47static int __init v4l2_i2c_drv_init(void) 48{ 49 v4l2_i2c_driver.driver.name = v4l2_i2c_data.name; 50 v4l2_i2c_driver.id = v4l2_i2c_data.driverid; 51 v4l2_i2c_driver.command = v4l2_i2c_data.command; 52 v4l2_i2c_driver.probe = v4l2_i2c_data.probe; 53 v4l2_i2c_driver.remove = v4l2_i2c_data.remove; 54 v4l2_i2c_driver.suspend = v4l2_i2c_data.suspend; 55 v4l2_i2c_driver.resume = v4l2_i2c_data.resume; 56 return i2c_add_driver(&v4l2_i2c_driver); 57} 58 59 60static void __exit v4l2_i2c_drv_cleanup(void) 61{ 62 i2c_del_driver(&v4l2_i2c_driver); 63} 64 65module_init(v4l2_i2c_drv_init); 66module_exit(v4l2_i2c_drv_cleanup); 67 68#endif /* __V4L2_I2C_DRV_H__ */