diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2021-11-26 00:31:58 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-12-03 16:26:15 +0300 |
commit | 01d3c42a08021617ad8ee79b0a9fed91d68e32b6 (patch) | |
tree | bd8a44d97be8bf2c75e2f8bcb805d2f5748af78d /drivers/misc | |
parent | 994233e195aaa53f30ca1722a280c5295f8782ce (diff) | |
download | linux-01d3c42a08021617ad8ee79b0a9fed91d68e32b6.tar.xz |
misc: at25: Get rid of intermediate storage for AT25 chip data
There is no need to copy twice the same data. Drop needless local
variable.
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20211125213203.86693-6-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/eeprom/at25.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/misc/eeprom/at25.c b/drivers/misc/eeprom/at25.c index b235f20c56da..70cab386040a 100644 --- a/drivers/misc/eeprom/at25.c +++ b/drivers/misc/eeprom/at25.c @@ -306,7 +306,6 @@ static int at25_fw_to_chip(struct device *dev, struct spi_eeprom *chip) u32 val; int err; - memset(chip, 0, sizeof(*chip)); strncpy(chip->name, "at25", sizeof(chip->name)); err = device_property_read_u32(dev, "size", &val); @@ -378,9 +377,9 @@ MODULE_DEVICE_TABLE(spi, at25_spi_ids); static int at25_probe(struct spi_device *spi) { struct at25_data *at25 = NULL; - struct spi_eeprom chip, *pdata; int err; int sr; + struct spi_eeprom *pdata; u8 id[FM25_ID_LEN]; u8 sernum[FM25_SN_LEN]; bool is_fram; @@ -392,20 +391,6 @@ static int at25_probe(struct spi_device *spi) else is_fram = false; - /* Chip description */ - pdata = dev_get_platdata(&spi->dev); - if (!pdata) { - if (is_fram) { - /* We file fields for FRAM case later on */ - memset(&chip, 0, sizeof(chip)); - } else { - err = at25_fw_to_chip(&spi->dev, &chip); - if (err) - return err; - } - } else - chip = *pdata; - /* Ping the chip ... the status register is pretty portable, * unlike probing manufacturer IDs. We do expect that system * firmware didn't write it in the past few milliseconds! @@ -421,10 +406,23 @@ static int at25_probe(struct spi_device *spi) return -ENOMEM; mutex_init(&at25->lock); - at25->chip = chip; at25->spi = spi; spi_set_drvdata(spi, at25); + /* Chip description */ + pdata = dev_get_platdata(&spi->dev); + if (pdata) { + at25->chip = *pdata; + } else { + if (is_fram) { + /* We file fields for FRAM case later on */ + } else { + err = at25_fw_to_chip(&spi->dev, &at25->chip); + if (err) + return err; + } + } + if (is_fram) { /* Get ID of chip */ fm25_aux_read(at25, id, FM25_RDID, FM25_ID_LEN); |