.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Driver for 93xx46 EEPROMs |
---|
3 | 4 | * |
---|
4 | 5 | * (C) 2011 DENX Software Engineering, Anatolij Gustschin <agust@denx.de> |
---|
5 | | - * |
---|
6 | | - * This program is free software; you can redistribute it and/or modify |
---|
7 | | - * it under the terms of the GNU General Public License version 2 as |
---|
8 | | - * published by the Free Software Foundation. |
---|
9 | 6 | */ |
---|
10 | 7 | |
---|
11 | 8 | #include <linux/delay.h> |
---|
.. | .. |
---|
454 | 451 | return -ENODEV; |
---|
455 | 452 | } |
---|
456 | 453 | |
---|
457 | | - edev = kzalloc(sizeof(*edev), GFP_KERNEL); |
---|
| 454 | + edev = devm_kzalloc(&spi->dev, sizeof(*edev), GFP_KERNEL); |
---|
458 | 455 | if (!edev) |
---|
459 | 456 | return -ENOMEM; |
---|
460 | 457 | |
---|
.. | .. |
---|
464 | 461 | edev->addrlen = 6; |
---|
465 | 462 | else { |
---|
466 | 463 | dev_err(&spi->dev, "unspecified address type\n"); |
---|
467 | | - err = -EINVAL; |
---|
468 | | - goto fail; |
---|
| 464 | + return -EINVAL; |
---|
469 | 465 | } |
---|
470 | 466 | |
---|
471 | 467 | mutex_init(&edev->lock); |
---|
.. | .. |
---|
474 | 470 | edev->pdata = pd; |
---|
475 | 471 | |
---|
476 | 472 | edev->size = 128; |
---|
| 473 | + edev->nvmem_config.type = NVMEM_TYPE_EEPROM; |
---|
477 | 474 | edev->nvmem_config.name = dev_name(&spi->dev); |
---|
478 | 475 | edev->nvmem_config.dev = &spi->dev; |
---|
479 | 476 | edev->nvmem_config.read_only = pd->flags & EE_READONLY; |
---|
.. | .. |
---|
488 | 485 | edev->nvmem_config.word_size = 1; |
---|
489 | 486 | edev->nvmem_config.size = edev->size; |
---|
490 | 487 | |
---|
491 | | - edev->nvmem = nvmem_register(&edev->nvmem_config); |
---|
492 | | - if (IS_ERR(edev->nvmem)) { |
---|
493 | | - err = PTR_ERR(edev->nvmem); |
---|
494 | | - goto fail; |
---|
495 | | - } |
---|
| 488 | + edev->nvmem = devm_nvmem_register(&spi->dev, &edev->nvmem_config); |
---|
| 489 | + if (IS_ERR(edev->nvmem)) |
---|
| 490 | + return PTR_ERR(edev->nvmem); |
---|
496 | 491 | |
---|
497 | 492 | dev_info(&spi->dev, "%d-bit eeprom %s\n", |
---|
498 | 493 | (pd->flags & EE_ADDR8) ? 8 : 16, |
---|
.. | .. |
---|
505 | 500 | |
---|
506 | 501 | spi_set_drvdata(spi, edev); |
---|
507 | 502 | return 0; |
---|
508 | | -fail: |
---|
509 | | - kfree(edev); |
---|
510 | | - return err; |
---|
511 | 503 | } |
---|
512 | 504 | |
---|
513 | 505 | static int eeprom_93xx46_remove(struct spi_device *spi) |
---|
514 | 506 | { |
---|
515 | 507 | struct eeprom_93xx46_dev *edev = spi_get_drvdata(spi); |
---|
516 | 508 | |
---|
517 | | - nvmem_unregister(edev->nvmem); |
---|
518 | | - |
---|
519 | 509 | if (!(edev->pdata->flags & EE_READONLY)) |
---|
520 | 510 | device_remove_file(&spi->dev, &dev_attr_erase); |
---|
521 | 511 | |
---|
522 | | - kfree(edev); |
---|
523 | 512 | return 0; |
---|
524 | 513 | } |
---|
525 | 514 | |
---|