diff options
author | Vivek Gautam <vivek.gautam@codeaurora.org> | 2017-01-04 16:18:09 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-01-04 18:22:47 +0100 |
commit | 01d0d2c42a14cee8f619d3e9d571ce3469f5ef51 (patch) | |
tree | 3d0e97d8e9686e4a453983312c5cdc73d4753847 /drivers/nvmem/qfprom.c | |
parent | e09ee853c92011860a4bd2fbdf6126f60fc16bd3 (diff) | |
download | linux-01d0d2c42a14cee8f619d3e9d571ce3469f5ef51.tar.gz linux-01d0d2c42a14cee8f619d3e9d571ce3469f5ef51.tar.bz2 linux-01d0d2c42a14cee8f619d3e9d571ce3469f5ef51.zip |
nvmem: qfprom: Allow single byte accesses for read/write
The nvmem core driver supports to read and write single
byte. So, allow qfprom to support this feature.
This change helps in extracting a required value based
on bit-offset and number of bits for the required value
in the nvmem cell.
Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org>
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/nvmem/qfprom.c')
-rw-r--r-- | drivers/nvmem/qfprom.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/nvmem/qfprom.c b/drivers/nvmem/qfprom.c index b5305f08b184..2bdb6c389328 100644 --- a/drivers/nvmem/qfprom.c +++ b/drivers/nvmem/qfprom.c @@ -21,11 +21,11 @@ static int qfprom_reg_read(void *context, unsigned int reg, void *_val, size_t bytes) { void __iomem *base = context; - u32 *val = _val; - int i = 0, words = bytes / 4; + u8 *val = _val; + int i = 0, words = bytes; while (words--) - *val++ = readl(base + reg + (i++ * 4)); + *val++ = readb(base + reg + i++); return 0; } @@ -34,11 +34,11 @@ static int qfprom_reg_write(void *context, unsigned int reg, void *_val, size_t bytes) { void __iomem *base = context; - u32 *val = _val; - int i = 0, words = bytes / 4; + u8 *val = _val; + int i = 0, words = bytes; while (words--) - writel(*val++, base + reg + (i++ * 4)); + writeb(*val++, base + reg + i++); return 0; } @@ -53,7 +53,7 @@ static int qfprom_remove(struct platform_device *pdev) static struct nvmem_config econfig = { .name = "qfprom", .owner = THIS_MODULE, - .stride = 4, + .stride = 1, .word_size = 1, .reg_read = qfprom_reg_read, .reg_write = qfprom_reg_write, |