Lines Matching refs:at25
67 struct at25_data *at25, in at25_ee_read() argument
80 if (unlikely(offset >= at25->bin.size)) in at25_ee_read()
82 if ((offset + count) > at25->bin.size) in at25_ee_read()
83 count = at25->bin.size - offset; in at25_ee_read()
90 if (at25->chip.flags & EE_INSTR_BIT3_IS_ADDR) in at25_ee_read()
91 if (offset >= (1U << (at25->addrlen * 8))) in at25_ee_read()
96 switch (at25->addrlen) { in at25_ee_read()
110 t[0].len = at25->addrlen + 1; in at25_ee_read()
117 mutex_lock(&at25->lock); in at25_ee_read()
125 status = spi_sync(at25->spi, &m); in at25_ee_read()
126 dev_dbg(&at25->spi->dev, in at25_ee_read()
130 mutex_unlock(&at25->lock); in at25_ee_read()
140 struct at25_data *at25; in at25_bin_read() local
143 at25 = dev_get_drvdata(dev); in at25_bin_read()
145 return at25_ee_read(at25, buf, off, count); in at25_bin_read()
150 at25_ee_write(struct at25_data *at25, const char *buf, loff_t off, in at25_ee_write() argument
158 if (unlikely(off >= at25->bin.size)) in at25_ee_write()
160 if ((off + count) > at25->bin.size) in at25_ee_write()
161 count = at25->bin.size - off; in at25_ee_write()
166 buf_size = at25->chip.page_size; in at25_ee_write()
169 bounce = kmalloc(buf_size + at25->addrlen + 1, GFP_KERNEL); in at25_ee_write()
176 mutex_lock(&at25->lock); in at25_ee_write()
186 status = spi_write(at25->spi, cp, 1); in at25_ee_write()
188 dev_dbg(&at25->spi->dev, "WREN --> %d\n", in at25_ee_write()
194 if (at25->chip.flags & EE_INSTR_BIT3_IS_ADDR) in at25_ee_write()
195 if (offset >= (1U << (at25->addrlen * 8))) in at25_ee_write()
200 switch (at25->addrlen) { in at25_ee_write()
215 status = spi_write(at25->spi, bounce, in at25_ee_write()
216 segment + at25->addrlen + 1); in at25_ee_write()
217 dev_dbg(&at25->spi->dev, in at25_ee_write()
232 sr = spi_w8r8(at25->spi, AT25_RDSR); in at25_ee_write()
234 dev_dbg(&at25->spi->dev, in at25_ee_write()
245 dev_err(&at25->spi->dev, in at25_ee_write()
262 mutex_unlock(&at25->lock); in at25_ee_write()
274 struct at25_data *at25; in at25_bin_write() local
277 at25 = dev_get_drvdata(dev); in at25_bin_write()
279 return at25_ee_write(at25, buf, off, count); in at25_bin_write()
289 struct at25_data *at25 = container_of(mem, struct at25_data, mem); in at25_mem_read() local
291 return at25_ee_read(at25, buf, offset, count); in at25_mem_read()
297 struct at25_data *at25 = container_of(mem, struct at25_data, mem); in at25_mem_write() local
299 return at25_ee_write(at25, buf, offset, count); in at25_mem_write()
359 struct at25_data *at25 = NULL; in at25_probe() local
395 at25 = devm_kzalloc(&spi->dev, sizeof(struct at25_data), GFP_KERNEL); in at25_probe()
396 if (!at25) in at25_probe()
399 mutex_init(&at25->lock); in at25_probe()
400 at25->chip = chip; in at25_probe()
401 at25->spi = spi_dev_get(spi); in at25_probe()
402 spi_set_drvdata(spi, at25); in at25_probe()
403 at25->addrlen = addrlen; in at25_probe()
414 sysfs_bin_attr_init(&at25->bin); in at25_probe()
415 at25->bin.attr.name = "eeprom"; in at25_probe()
416 at25->bin.attr.mode = S_IRUSR; in at25_probe()
417 at25->bin.read = at25_bin_read; in at25_probe()
418 at25->mem.read = at25_mem_read; in at25_probe()
420 at25->bin.size = at25->chip.byte_len; in at25_probe()
422 at25->bin.write = at25_bin_write; in at25_probe()
423 at25->bin.attr.mode |= S_IWUSR; in at25_probe()
424 at25->mem.write = at25_mem_write; in at25_probe()
427 err = sysfs_create_bin_file(&spi->dev.kobj, &at25->bin); in at25_probe()
432 chip.setup(&at25->mem, chip.context); in at25_probe()
435 (at25->bin.size < 1024) in at25_probe()
436 ? at25->bin.size in at25_probe()
437 : (at25->bin.size / 1024), in at25_probe()
438 (at25->bin.size < 1024) ? "Byte" : "KByte", in at25_probe()
439 at25->chip.name, in at25_probe()
441 at25->chip.page_size); in at25_probe()
447 struct at25_data *at25; in at25_remove() local
449 at25 = spi_get_drvdata(spi); in at25_remove()
450 sysfs_remove_bin_file(&spi->dev.kobj, &at25->bin); in at25_remove()