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
83 eeprom = dev_get_drvdata(container_of(kobj, struct device, kobj)); in i2c_slave_eeprom_bin_read()
85 spin_lock_irqsave(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_read()
86 memcpy(buf, &eeprom->buffer[off], count); in i2c_slave_eeprom_bin_read()
87 spin_unlock_irqrestore(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_read()
95 struct eeprom_data *eeprom; in i2c_slave_eeprom_bin_write() local
98 eeprom = dev_get_drvdata(container_of(kobj, struct device, kobj)); in i2c_slave_eeprom_bin_write()
100 spin_lock_irqsave(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_write()
101 memcpy(&eeprom->buffer[off], buf, count); in i2c_slave_eeprom_bin_write()
102 spin_unlock_irqrestore(&eeprom->buffer_lock, flags); in i2c_slave_eeprom_bin_write()
109 struct eeprom_data *eeprom; in i2c_slave_eeprom_probe() local
113 eeprom = devm_kzalloc(&client->dev, sizeof(struct eeprom_data) + size, GFP_KERNEL); in i2c_slave_eeprom_probe()
114 if (!eeprom) in i2c_slave_eeprom_probe()
117 eeprom->first_write = true; in i2c_slave_eeprom_probe()
118 spin_lock_init(&eeprom->buffer_lock); in i2c_slave_eeprom_probe()
119 i2c_set_clientdata(client, eeprom); in i2c_slave_eeprom_probe()
121 sysfs_bin_attr_init(&eeprom->bin); in i2c_slave_eeprom_probe()
122 eeprom->bin.attr.name = "slave-eeprom"; in i2c_slave_eeprom_probe()
123 eeprom->bin.attr.mode = S_IRUSR | S_IWUSR; in i2c_slave_eeprom_probe()
124 eeprom->bin.read = i2c_slave_eeprom_bin_read; in i2c_slave_eeprom_probe()
125 eeprom->bin.write = i2c_slave_eeprom_bin_write; in i2c_slave_eeprom_probe()
126 eeprom->bin.size = size; in i2c_slave_eeprom_probe()
128 ret = sysfs_create_bin_file(&client->dev.kobj, &eeprom->bin); in i2c_slave_eeprom_probe()
134 sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); in i2c_slave_eeprom_probe()
143 struct eeprom_data *eeprom = i2c_get_clientdata(client); in i2c_slave_eeprom_remove() local
146 sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); in i2c_slave_eeprom_remove()