| From 44ae4ed142265a6d50a9d3e6f4c395f97b6849ab Mon Sep 17 00:00:00 2001 |
| From: Zhanyong Wang <zhanyong.wang@mediatek.com> |
| Date: Sat, 6 Nov 2021 20:06:30 +0800 |
| Subject: [PATCH 2/5] nvmem: mtk-efuse: support minimum one byte access stride |
| and granularity |
| |
| In order to support nvmem bits property, should support minimum 1 byte |
| read stride and minimum 1 byte read granularity at the same time. |
| |
| Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> |
| Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com> |
| Change-Id: Iafe1ebf195d58a3e9e3518913f795d14a01dfd3b |
| --- |
| drivers/nvmem/mtk-efuse.c | 13 +++++++------ |
| 1 file changed, 7 insertions(+), 6 deletions(-) |
| |
| diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c |
| index 856d9c3fc38e..2e728fed0b49 100644 |
| --- a/drivers/nvmem/mtk-efuse.c |
| +++ b/drivers/nvmem/mtk-efuse.c |
| @@ -19,11 +19,12 @@ static int mtk_reg_read(void *context, |
| unsigned int reg, void *_val, size_t bytes) |
| { |
| struct mtk_efuse_priv *priv = context; |
| - u32 *val = _val; |
| - int i = 0, words = bytes / 4; |
| + void __iomem *addr = priv->base + reg; |
| + u8 *val = _val; |
| + int i; |
| |
| - while (words--) |
| - *val++ = readl(priv->base + reg + (i++ * 4)); |
| + for (i = 0; i < bytes; i++, val++) |
| + *val = readb(addr + i); |
| |
| return 0; |
| } |
| @@ -58,8 +59,8 @@ static int mtk_efuse_probe(struct platform_device *pdev) |
| if (IS_ERR(priv->base)) |
| return PTR_ERR(priv->base); |
| |
| - econfig.stride = 4; |
| - econfig.word_size = 4; |
| + econfig.stride = 1; |
| + econfig.word_size = 1; |
| econfig.reg_read = mtk_reg_read; |
| econfig.reg_write = mtk_reg_write; |
| econfig.size = resource_size(res); |
| -- |
| 2.18.0 |
| |