forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/misc/eeprom/eeprom_93xx46.c
....@@ -1,11 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Driver for 93xx46 EEPROMs
34 *
45 * (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.
96 */
107
118 #include <linux/delay.h>
....@@ -454,7 +451,7 @@
454451 return -ENODEV;
455452 }
456453
457
- edev = kzalloc(sizeof(*edev), GFP_KERNEL);
454
+ edev = devm_kzalloc(&spi->dev, sizeof(*edev), GFP_KERNEL);
458455 if (!edev)
459456 return -ENOMEM;
460457
....@@ -464,8 +461,7 @@
464461 edev->addrlen = 6;
465462 else {
466463 dev_err(&spi->dev, "unspecified address type\n");
467
- err = -EINVAL;
468
- goto fail;
464
+ return -EINVAL;
469465 }
470466
471467 mutex_init(&edev->lock);
....@@ -474,6 +470,7 @@
474470 edev->pdata = pd;
475471
476472 edev->size = 128;
473
+ edev->nvmem_config.type = NVMEM_TYPE_EEPROM;
477474 edev->nvmem_config.name = dev_name(&spi->dev);
478475 edev->nvmem_config.dev = &spi->dev;
479476 edev->nvmem_config.read_only = pd->flags & EE_READONLY;
....@@ -488,11 +485,9 @@
488485 edev->nvmem_config.word_size = 1;
489486 edev->nvmem_config.size = edev->size;
490487
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);
496491
497492 dev_info(&spi->dev, "%d-bit eeprom %s\n",
498493 (pd->flags & EE_ADDR8) ? 8 : 16,
....@@ -505,21 +500,15 @@
505500
506501 spi_set_drvdata(spi, edev);
507502 return 0;
508
-fail:
509
- kfree(edev);
510
- return err;
511503 }
512504
513505 static int eeprom_93xx46_remove(struct spi_device *spi)
514506 {
515507 struct eeprom_93xx46_dev *edev = spi_get_drvdata(spi);
516508
517
- nvmem_unregister(edev->nvmem);
518
-
519509 if (!(edev->pdata->flags & EE_READONLY))
520510 device_remove_file(&spi->dev, &dev_attr_erase);
521511
522
- kfree(edev);
523512 return 0;
524513 }
525514