Lines Matching refs:i2c_dev

42 struct i2c_dev {  struct
53 static struct i2c_dev *i2c_dev_get_by_minor(unsigned index) in i2c_dev_get_by_minor() argument
55 struct i2c_dev *i2c_dev; in i2c_dev_get_by_minor() local
58 list_for_each_entry(i2c_dev, &i2c_dev_list, list) { in i2c_dev_get_by_minor()
59 if (i2c_dev->adap->nr == index) in i2c_dev_get_by_minor()
62 i2c_dev = NULL; in i2c_dev_get_by_minor()
65 return i2c_dev; in i2c_dev_get_by_minor()
68 static struct i2c_dev *get_free_i2c_dev(struct i2c_adapter *adap) in get_free_i2c_dev()
70 struct i2c_dev *i2c_dev; in get_free_i2c_dev() local
77 i2c_dev = kzalloc(sizeof(*i2c_dev), GFP_KERNEL); in get_free_i2c_dev()
78 if (!i2c_dev) in get_free_i2c_dev()
80 i2c_dev->adap = adap; in get_free_i2c_dev()
83 list_add_tail(&i2c_dev->list, &i2c_dev_list); in get_free_i2c_dev()
85 return i2c_dev; in get_free_i2c_dev()
88 static void put_i2c_dev(struct i2c_dev *i2c_dev, bool del_cdev) in put_i2c_dev() argument
91 list_del(&i2c_dev->list); in put_i2c_dev()
94 cdev_device_del(&i2c_dev->cdev, &i2c_dev->dev); in put_i2c_dev()
95 put_device(&i2c_dev->dev); in put_i2c_dev()
101 struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt)); in name_show() local
103 if (!i2c_dev) in name_show()
105 return sysfs_emit(buf, "%s\n", i2c_dev->adap->name); in name_show()
657 struct i2c_dev *i2c_dev; in i2cdev_dev_release() local
659 i2c_dev = container_of(dev, struct i2c_dev, dev); in i2cdev_dev_release()
660 kfree(i2c_dev); in i2cdev_dev_release()
666 struct i2c_dev *i2c_dev; in i2cdev_attach_adapter() local
673 i2c_dev = get_free_i2c_dev(adap); in i2cdev_attach_adapter()
674 if (IS_ERR(i2c_dev)) in i2cdev_attach_adapter()
677 cdev_init(&i2c_dev->cdev, &i2cdev_fops); in i2cdev_attach_adapter()
678 i2c_dev->cdev.owner = THIS_MODULE; in i2cdev_attach_adapter()
680 device_initialize(&i2c_dev->dev); in i2cdev_attach_adapter()
681 i2c_dev->dev.devt = MKDEV(I2C_MAJOR, adap->nr); in i2cdev_attach_adapter()
682 i2c_dev->dev.class = &i2c_dev_class; in i2cdev_attach_adapter()
683 i2c_dev->dev.parent = &adap->dev; in i2cdev_attach_adapter()
684 i2c_dev->dev.release = i2cdev_dev_release; in i2cdev_attach_adapter()
686 res = dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr); in i2cdev_attach_adapter()
690 res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev); in i2cdev_attach_adapter()
698 put_i2c_dev(i2c_dev, false); in i2cdev_attach_adapter()
705 struct i2c_dev *i2c_dev; in i2cdev_detach_adapter() local
711 i2c_dev = i2c_dev_get_by_minor(adap->nr); in i2cdev_detach_adapter()
712 if (!i2c_dev) /* attach_adapter must have failed */ in i2cdev_detach_adapter()
715 put_i2c_dev(i2c_dev, true); in i2cdev_detach_adapter()