Lines Matching refs:i2c_dev

35  * An i2c_dev represents an i2c_adapter ... an I2C or SMBus master, not a
39 * The list of i2c_dev structures is parallel to the i2c_adapter lists
42 struct i2c_dev {
53 static struct i2c_dev *i2c_dev_get_by_minor(unsigned index)
55 struct i2c_dev *i2c_dev;
58 list_for_each_entry(i2c_dev, &i2c_dev_list, list) {
59 if (i2c_dev->adap->nr == index)
62 i2c_dev = NULL;
65 return i2c_dev;
68 static struct i2c_dev *get_free_i2c_dev(struct i2c_adapter *adap)
70 struct i2c_dev *i2c_dev;
77 i2c_dev = kzalloc(sizeof(*i2c_dev), GFP_KERNEL);
78 if (!i2c_dev)
80 i2c_dev->adap = adap;
83 list_add_tail(&i2c_dev->list, &i2c_dev_list);
85 return i2c_dev;
88 static void put_i2c_dev(struct i2c_dev *i2c_dev, bool del_cdev)
91 list_del(&i2c_dev->list);
94 cdev_device_del(&i2c_dev->cdev, &i2c_dev->dev);
95 put_device(&i2c_dev->dev);
101 struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt));
103 if (!i2c_dev)
105 return sysfs_emit(buf, "%s\n", i2c_dev->adap->name);
643 struct i2c_dev *i2c_dev;
645 i2c_dev = container_of(dev, struct i2c_dev, dev);
646 kfree(i2c_dev);
652 struct i2c_dev *i2c_dev;
659 i2c_dev = get_free_i2c_dev(adap);
660 if (IS_ERR(i2c_dev))
663 cdev_init(&i2c_dev->cdev, &i2cdev_fops);
664 i2c_dev->cdev.owner = THIS_MODULE;
666 device_initialize(&i2c_dev->dev);
667 i2c_dev->dev.devt = MKDEV(I2C_MAJOR, adap->nr);
668 i2c_dev->dev.class = i2c_dev_class;
669 i2c_dev->dev.parent = &adap->dev;
670 i2c_dev->dev.release = i2cdev_dev_release;
672 res = dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr);
676 res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev);
684 put_i2c_dev(i2c_dev, false);
691 struct i2c_dev *i2c_dev;
697 i2c_dev = i2c_dev_get_by_minor(adap->nr);
698 if (!i2c_dev) /* attach_adapter must have failed */
701 put_i2c_dev(i2c_dev, true);