summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2021-06-19 05:45:05 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-06-21 08:04:35 +0200
commit4b3ecdb261beca50d5b7d39876af8bbebb2c3fcb (patch)
treebfa442ac3bc2d1377bdee97f82d9f988e3651c95 /drivers
parentde524f3b4b6d739e1cd84fdd240632a92e2f9684 (diff)
downloadbarebox-4b3ecdb261beca50d5b7d39876af8bbebb2c3fcb.tar.gz
barebox-4b3ecdb261beca50d5b7d39876af8bbebb2c3fcb.tar.xz
nvmem: treat devices without nvmem_bus::write as read only
nvmem_bus::write is dereferenced unconditionally when doing write operations. Align behavior with Linux, which allows drivers to omit the reg_write callback when the device is known to be read-only. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20210619034516.6737-3-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/nvmem/core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index cfeecf70cd..3c14e390de 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -209,8 +209,8 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
nvmem->dev.device_node = np;
nvmem->priv = config->priv;
- nvmem->read_only = of_property_read_bool(np, "read-only") |
- config->read_only;
+ if (config->read_only || !config->bus->write || of_property_read_bool(np, "read-only"))
+ nvmem->read_only = true;
dev_set_name(&nvmem->dev, config->name);
nvmem->dev.id = DEVICE_ID_DYNAMIC;