Lines Matching refs:edev
41 struct eeprom_93xx46_dev *edev; in eeprom_93xx46_bin_read() local
49 edev = dev_get_drvdata(dev); in eeprom_93xx46_bin_read()
51 cmd_addr = OP_READ << edev->addrlen; in eeprom_93xx46_bin_read()
53 if (edev->addrlen == 7) { in eeprom_93xx46_bin_read()
61 dev_dbg(&edev->spi->dev, "read cmd 0x%x, %d Hz\n", in eeprom_93xx46_bin_read()
62 cmd_addr, edev->spi->max_speed_hz); in eeprom_93xx46_bin_read()
77 mutex_lock(&edev->lock); in eeprom_93xx46_bin_read()
79 if (edev->pdata->prepare) in eeprom_93xx46_bin_read()
80 edev->pdata->prepare(edev); in eeprom_93xx46_bin_read()
82 ret = spi_sync(edev->spi, &m); in eeprom_93xx46_bin_read()
86 dev_err(&edev->spi->dev, "read %zu bytes at %d: err. %d\n", in eeprom_93xx46_bin_read()
90 if (edev->pdata->finish) in eeprom_93xx46_bin_read()
91 edev->pdata->finish(edev); in eeprom_93xx46_bin_read()
93 mutex_unlock(&edev->lock); in eeprom_93xx46_bin_read()
97 static int eeprom_93xx46_ew(struct eeprom_93xx46_dev *edev, int is_on) in eeprom_93xx46_ew() argument
104 cmd_addr = OP_START << edev->addrlen; in eeprom_93xx46_ew()
105 if (edev->addrlen == 7) { in eeprom_93xx46_ew()
113 dev_dbg(&edev->spi->dev, "ew cmd 0x%04x\n", cmd_addr); in eeprom_93xx46_ew()
123 mutex_lock(&edev->lock); in eeprom_93xx46_ew()
125 if (edev->pdata->prepare) in eeprom_93xx46_ew()
126 edev->pdata->prepare(edev); in eeprom_93xx46_ew()
128 ret = spi_sync(edev->spi, &m); in eeprom_93xx46_ew()
132 dev_err(&edev->spi->dev, "erase/write %sable error %d\n", in eeprom_93xx46_ew()
135 if (edev->pdata->finish) in eeprom_93xx46_ew()
136 edev->pdata->finish(edev); in eeprom_93xx46_ew()
138 mutex_unlock(&edev->lock); in eeprom_93xx46_ew()
143 eeprom_93xx46_write_word(struct eeprom_93xx46_dev *edev, in eeprom_93xx46_write_word() argument
151 cmd_addr = OP_WRITE << edev->addrlen; in eeprom_93xx46_write_word()
153 if (edev->addrlen == 7) { in eeprom_93xx46_write_word()
163 dev_dbg(&edev->spi->dev, "write cmd 0x%x\n", cmd_addr); in eeprom_93xx46_write_word()
178 ret = spi_sync(edev->spi, &m); in eeprom_93xx46_write_word()
189 struct eeprom_93xx46_dev *edev; in eeprom_93xx46_bin_write() local
194 edev = dev_get_drvdata(dev); in eeprom_93xx46_bin_write()
197 if (edev->addrlen == 6) { in eeprom_93xx46_bin_write()
203 ret = eeprom_93xx46_ew(edev, 1); in eeprom_93xx46_bin_write()
207 mutex_lock(&edev->lock); in eeprom_93xx46_bin_write()
209 if (edev->pdata->prepare) in eeprom_93xx46_bin_write()
210 edev->pdata->prepare(edev); in eeprom_93xx46_bin_write()
213 ret = eeprom_93xx46_write_word(edev, &buf[i], off + i); in eeprom_93xx46_bin_write()
215 dev_err(&edev->spi->dev, "write failed at %d: %d\n", in eeprom_93xx46_bin_write()
221 if (edev->pdata->finish) in eeprom_93xx46_bin_write()
222 edev->pdata->finish(edev); in eeprom_93xx46_bin_write()
224 mutex_unlock(&edev->lock); in eeprom_93xx46_bin_write()
227 eeprom_93xx46_ew(edev, 0); in eeprom_93xx46_bin_write()
231 static int eeprom_93xx46_eral(struct eeprom_93xx46_dev *edev) in eeprom_93xx46_eral() argument
233 struct eeprom_93xx46_platform_data *pd = edev->pdata; in eeprom_93xx46_eral()
239 cmd_addr = OP_START << edev->addrlen; in eeprom_93xx46_eral()
240 if (edev->addrlen == 7) { in eeprom_93xx46_eral()
256 mutex_lock(&edev->lock); in eeprom_93xx46_eral()
258 if (edev->pdata->prepare) in eeprom_93xx46_eral()
259 edev->pdata->prepare(edev); in eeprom_93xx46_eral()
261 ret = spi_sync(edev->spi, &m); in eeprom_93xx46_eral()
263 dev_err(&edev->spi->dev, "erase error %d\n", ret); in eeprom_93xx46_eral()
268 pd->finish(edev); in eeprom_93xx46_eral()
270 mutex_unlock(&edev->lock); in eeprom_93xx46_eral()
278 struct eeprom_93xx46_dev *edev = dev_get_drvdata(dev); in eeprom_93xx46_store_erase() local
283 ret = eeprom_93xx46_ew(edev, 1); in eeprom_93xx46_store_erase()
286 ret = eeprom_93xx46_eral(edev); in eeprom_93xx46_store_erase()
289 ret = eeprom_93xx46_ew(edev, 0); in eeprom_93xx46_store_erase()
300 struct eeprom_93xx46_dev *edev; in eeprom_93xx46_probe() local
309 edev = kzalloc(sizeof(*edev), GFP_KERNEL); in eeprom_93xx46_probe()
310 if (!edev) in eeprom_93xx46_probe()
314 edev->addrlen = 7; in eeprom_93xx46_probe()
316 edev->addrlen = 6; in eeprom_93xx46_probe()
323 mutex_init(&edev->lock); in eeprom_93xx46_probe()
325 edev->spi = spi_dev_get(spi); in eeprom_93xx46_probe()
326 edev->pdata = pd; in eeprom_93xx46_probe()
328 sysfs_bin_attr_init(&edev->bin); in eeprom_93xx46_probe()
329 edev->bin.attr.name = "eeprom"; in eeprom_93xx46_probe()
330 edev->bin.attr.mode = S_IRUSR; in eeprom_93xx46_probe()
331 edev->bin.read = eeprom_93xx46_bin_read; in eeprom_93xx46_probe()
332 edev->bin.size = 128; in eeprom_93xx46_probe()
334 edev->bin.write = eeprom_93xx46_bin_write; in eeprom_93xx46_probe()
335 edev->bin.attr.mode |= S_IWUSR; in eeprom_93xx46_probe()
338 err = sysfs_create_bin_file(&spi->dev.kobj, &edev->bin); in eeprom_93xx46_probe()
351 spi_set_drvdata(spi, edev); in eeprom_93xx46_probe()
354 kfree(edev); in eeprom_93xx46_probe()
360 struct eeprom_93xx46_dev *edev = spi_get_drvdata(spi); in eeprom_93xx46_remove() local
362 if (!(edev->pdata->flags & EE_READONLY)) in eeprom_93xx46_remove()
365 sysfs_remove_bin_file(&spi->dev.kobj, &edev->bin); in eeprom_93xx46_remove()
366 kfree(edev); in eeprom_93xx46_remove()