Lines Matching refs:eeprom
36 struct eeprom_data *eeprom = i2c_get_clientdata(client); in i2c_slave_eeprom_slave_cb() local
40 if (eeprom->first_write) { in i2c_slave_eeprom_slave_cb()
41 eeprom->buffer_idx = *val; in i2c_slave_eeprom_slave_cb()
42 eeprom->first_write = false; in i2c_slave_eeprom_slave_cb()
44 spin_lock(&eeprom->buffer_lock); in i2c_slave_eeprom_slave_cb()
45 eeprom->buffer[eeprom->buffer_idx++] = *val; in i2c_slave_eeprom_slave_cb()
46 spin_unlock(&eeprom->buffer_lock); in i2c_slave_eeprom_slave_cb()
52 eeprom->buffer_idx++; in i2c_slave_eeprom_slave_cb()
55 spin_lock(&eeprom->buffer_lock); in i2c_slave_eeprom_slave_cb()
56 *val = eeprom->buffer[eeprom->buffer_idx]; in i2c_slave_eeprom_slave_cb()
57 spin_unlock(&eeprom->buffer_lock); in i2c_slave_eeprom_slave_cb()
67 eeprom->first_write = true; in i2c_slave_eeprom_slave_cb()
80 struct eeprom_data *eeprom; in i2c_slave_eeprom_bin_read() local
86 eeprom = dev_get_drvdata(container_of(kobj, struct device, kobj)); in i2c_slave_eeprom_bin_read()
88 spin_lock_irqsave(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_read()
89 memcpy(buf, &eeprom->buffer[off], count); in i2c_slave_eeprom_bin_read()
90 spin_unlock_irqrestore(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_read()
98 struct eeprom_data *eeprom; in i2c_slave_eeprom_bin_write() local
104 eeprom = dev_get_drvdata(container_of(kobj, struct device, kobj)); in i2c_slave_eeprom_bin_write()
106 spin_lock_irqsave(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_write()
107 memcpy(&eeprom->buffer[off], buf, count); in i2c_slave_eeprom_bin_write()
108 spin_unlock_irqrestore(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_write()
115 struct eeprom_data *eeprom; in i2c_slave_eeprom_probe() local
119 eeprom = devm_kzalloc(&client->dev, sizeof(struct eeprom_data) + size, GFP_KERNEL); in i2c_slave_eeprom_probe()
120 if (!eeprom) in i2c_slave_eeprom_probe()
123 eeprom->first_write = true; in i2c_slave_eeprom_probe()
124 spin_lock_init(&eeprom->buffer_lock); in i2c_slave_eeprom_probe()
125 i2c_set_clientdata(client, eeprom); in i2c_slave_eeprom_probe()
127 sysfs_bin_attr_init(&eeprom->bin); in i2c_slave_eeprom_probe()
128 eeprom->bin.attr.name = "slave-eeprom"; in i2c_slave_eeprom_probe()
129 eeprom->bin.attr.mode = S_IRUSR | S_IWUSR; in i2c_slave_eeprom_probe()
130 eeprom->bin.read = i2c_slave_eeprom_bin_read; in i2c_slave_eeprom_probe()
131 eeprom->bin.write = i2c_slave_eeprom_bin_write; in i2c_slave_eeprom_probe()
132 eeprom->bin.size = size; in i2c_slave_eeprom_probe()
134 ret = sysfs_create_bin_file(&client->dev.kobj, &eeprom->bin); in i2c_slave_eeprom_probe()
140 sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); in i2c_slave_eeprom_probe()
149 struct eeprom_data *eeprom = i2c_get_clientdata(client); in i2c_slave_eeprom_remove() local
152 sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); in i2c_slave_eeprom_remove()