Lines Matching refs:i2c_dev

48 struct i2c_dev {  struct
59 static struct i2c_dev *i2c_dev_get_by_minor(unsigned index) in i2c_dev_get_by_minor() argument
61 struct i2c_dev *i2c_dev; in i2c_dev_get_by_minor() local
64 list_for_each_entry(i2c_dev, &i2c_dev_list, list) { in i2c_dev_get_by_minor()
65 if (i2c_dev->adap->nr == index) in i2c_dev_get_by_minor()
68 i2c_dev = NULL; in i2c_dev_get_by_minor()
71 return i2c_dev; in i2c_dev_get_by_minor()
74 static struct i2c_dev *get_free_i2c_dev(struct i2c_adapter *adap) in get_free_i2c_dev()
76 struct i2c_dev *i2c_dev; in get_free_i2c_dev() local
84 i2c_dev = kzalloc(sizeof(*i2c_dev), GFP_KERNEL); in get_free_i2c_dev()
85 if (!i2c_dev) in get_free_i2c_dev()
87 i2c_dev->adap = adap; in get_free_i2c_dev()
90 list_add_tail(&i2c_dev->list, &i2c_dev_list); in get_free_i2c_dev()
92 return i2c_dev; in get_free_i2c_dev()
95 static void put_i2c_dev(struct i2c_dev *i2c_dev) in put_i2c_dev() argument
98 list_del(&i2c_dev->list); in put_i2c_dev()
100 kfree(i2c_dev); in put_i2c_dev()
106 struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt)); in name_show() local
108 if (!i2c_dev) in name_show()
110 return sprintf(buf, "%s\n", i2c_dev->adap->name); in name_show()
635 struct i2c_dev *i2c_dev; in i2cdev_attach_adapter() local
642 i2c_dev = get_free_i2c_dev(adap); in i2cdev_attach_adapter()
643 if (IS_ERR(i2c_dev)) in i2cdev_attach_adapter()
644 return PTR_ERR(i2c_dev); in i2cdev_attach_adapter()
646 cdev_init(&i2c_dev->cdev, &i2cdev_fops); in i2cdev_attach_adapter()
647 i2c_dev->cdev.owner = THIS_MODULE; in i2cdev_attach_adapter()
648 res = cdev_add(&i2c_dev->cdev, MKDEV(I2C_MAJOR, adap->nr), 1); in i2cdev_attach_adapter()
653 i2c_dev->dev = device_create(i2c_dev_class, &adap->dev, in i2cdev_attach_adapter()
656 if (IS_ERR(i2c_dev->dev)) { in i2cdev_attach_adapter()
657 res = PTR_ERR(i2c_dev->dev); in i2cdev_attach_adapter()
665 cdev_del(&i2c_dev->cdev); in i2cdev_attach_adapter()
667 put_i2c_dev(i2c_dev); in i2cdev_attach_adapter()
674 struct i2c_dev *i2c_dev; in i2cdev_detach_adapter() local
680 i2c_dev = i2c_dev_get_by_minor(adap->nr); in i2cdev_detach_adapter()
681 if (!i2c_dev) /* attach_adapter must have failed */ in i2cdev_detach_adapter()
684 cdev_del(&i2c_dev->cdev); in i2cdev_detach_adapter()
685 put_i2c_dev(i2c_dev); in i2cdev_detach_adapter()