Loading src/drivers/elphel/sensor_i2c.c +25 −0 Original line number Diff line number Diff line Loading @@ -62,8 +62,33 @@ #define DRV_NAME "elphel_sensor_i2c" //------------------ #if 0 #include <linux/fs.h> /** * alloc_chrdev_region() - register a range of char device numbers * @dev: output parameter for first assigned number * @baseminor: first of the requested range of minor numbers * @count: the number of minor numbers required * @name: the name of the associated device or driver * * Allocates a range of char device numbers. The major number will be * chosen dynamically, and returned (along with the first minor number) * in @dev. Returns zero or a negative error code. */ int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) { struct char_device_struct *cd; cd = __register_chrdev_region(0, baseminor, count, name); if (IS_ERR(cd)) return PTR_ERR(cd); *dev = MKDEV(cd->major, cd->baseminor); return 0; } #endif // Number of channels is hard-wired to 4 static u32 free_i2c_groups[4]; static u32 free_i2c_pages [32]; Loading src/drivers/elphel/sensor_i2c.h +12 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,18 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ // I2C device description to be used with i2c sequencer /* typedef struct x393_i2c_device_tag{ char * name; u8 slave7; // slave address (7-bit) u8 address_bytes; u8 data_bytes; int scl_khz; // maximal SCL frequency in KHz (currently limited by 200KHz slowest) struct x393_i2c_device_tag * next; } x393_i2c_device_t; */ /* Reserve i2c page (1 of 256 for a sensor port)*/ int i2c_page_alloc(int chn); Loading Loading
src/drivers/elphel/sensor_i2c.c +25 −0 Original line number Diff line number Diff line Loading @@ -62,8 +62,33 @@ #define DRV_NAME "elphel_sensor_i2c" //------------------ #if 0 #include <linux/fs.h> /** * alloc_chrdev_region() - register a range of char device numbers * @dev: output parameter for first assigned number * @baseminor: first of the requested range of minor numbers * @count: the number of minor numbers required * @name: the name of the associated device or driver * * Allocates a range of char device numbers. The major number will be * chosen dynamically, and returned (along with the first minor number) * in @dev. Returns zero or a negative error code. */ int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) { struct char_device_struct *cd; cd = __register_chrdev_region(0, baseminor, count, name); if (IS_ERR(cd)) return PTR_ERR(cd); *dev = MKDEV(cd->major, cd->baseminor); return 0; } #endif // Number of channels is hard-wired to 4 static u32 free_i2c_groups[4]; static u32 free_i2c_pages [32]; Loading
src/drivers/elphel/sensor_i2c.h +12 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,18 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ // I2C device description to be used with i2c sequencer /* typedef struct x393_i2c_device_tag{ char * name; u8 slave7; // slave address (7-bit) u8 address_bytes; u8 data_bytes; int scl_khz; // maximal SCL frequency in KHz (currently limited by 200KHz slowest) struct x393_i2c_device_tag * next; } x393_i2c_device_t; */ /* Reserve i2c page (1 of 256 for a sensor port)*/ int i2c_page_alloc(int chn); Loading