Lines Matching defs:i2c_dev
33 * An i2c_dev represents an i2c_adapter ... an I2C or SMBus master, not a
37 * The list of i2c_dev structures is parallel to the i2c_adapter lists
40 struct i2c_dev {
51 static struct i2c_dev *i2c_dev_get_by_minor(unsigned index)
53 struct i2c_dev *i2c_dev;
56 list_for_each_entry(i2c_dev, &i2c_dev_list, list) {
57 if (i2c_dev->adap->nr == index)
60 i2c_dev = NULL;
63 return i2c_dev;
66 static struct i2c_dev *get_free_i2c_dev(struct i2c_adapter *adap)
68 struct i2c_dev *i2c_dev;
76 i2c_dev = kzalloc(sizeof(*i2c_dev), GFP_KERNEL);
77 if (!i2c_dev)
79 i2c_dev->adap = adap;
82 list_add_tail(&i2c_dev->list, &i2c_dev_list);
84 return i2c_dev;
87 static void put_i2c_dev(struct i2c_dev *i2c_dev, bool del_cdev)
90 list_del(&i2c_dev->list);
93 cdev_device_del(&i2c_dev->cdev, &i2c_dev->dev);
94 put_device(&i2c_dev->dev);
100 struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt));
102 if (!i2c_dev)
104 return sprintf(buf, "%s\n", i2c_dev->adap->name);
644 struct i2c_dev *i2c_dev;
646 i2c_dev = container_of(dev, struct i2c_dev, dev);
647 kfree(i2c_dev);
653 struct i2c_dev *i2c_dev;
660 i2c_dev = get_free_i2c_dev(adap);
661 if (IS_ERR(i2c_dev))
662 return PTR_ERR(i2c_dev);
664 cdev_init(&i2c_dev->cdev, &i2cdev_fops);
665 i2c_dev->cdev.owner = THIS_MODULE;
667 device_initialize(&i2c_dev->dev);
668 i2c_dev->dev.devt = MKDEV(I2C_MAJOR, adap->nr);
669 i2c_dev->dev.class = i2c_dev_class;
670 i2c_dev->dev.parent = &adap->dev;
671 i2c_dev->dev.release = i2cdev_dev_release;
672 dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr);
674 res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev);
676 put_i2c_dev(i2c_dev, false);
688 struct i2c_dev *i2c_dev;
694 i2c_dev = i2c_dev_get_by_minor(adap->nr);
695 if (!i2c_dev) /* attach_adapter must have failed */
698 put_i2c_dev(i2c_dev, true);