803-v5.17-0002-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. From 98e2c4efae214fb7086cac9117616eb6ea11475d Mon Sep 17 00:00:00 2001
  2. From: Chunfeng Yun <[email protected]>
  3. Date: Thu, 9 Dec 2021 17:42:34 +0000
  4. Subject: [PATCH] nvmem: mtk-efuse: support minimum one byte access stride and
  5. granularity
  6. In order to support nvmem bits property, should support minimum 1 byte
  7. read stride and minimum 1 byte read granularity at the same time.
  8. Signed-off-by: Chunfeng Yun <[email protected]>
  9. Signed-off-by: Srinivas Kandagatla <[email protected]>
  10. Link: https://lore.kernel.org/r/[email protected]
  11. Signed-off-by: Greg Kroah-Hartman <[email protected]>
  12. ---
  13. drivers/nvmem/mtk-efuse.c | 13 +++++++------
  14. 1 file changed, 7 insertions(+), 6 deletions(-)
  15. --- a/drivers/nvmem/mtk-efuse.c
  16. +++ b/drivers/nvmem/mtk-efuse.c
  17. @@ -19,11 +19,12 @@ static int mtk_reg_read(void *context,
  18. unsigned int reg, void *_val, size_t bytes)
  19. {
  20. struct mtk_efuse_priv *priv = context;
  21. - u32 *val = _val;
  22. - int i = 0, words = bytes / 4;
  23. + void __iomem *addr = priv->base + reg;
  24. + u8 *val = _val;
  25. + int i;
  26. - while (words--)
  27. - *val++ = readl(priv->base + reg + (i++ * 4));
  28. + for (i = 0; i < bytes; i++, val++)
  29. + *val = readb(addr + i);
  30. return 0;
  31. }
  32. @@ -45,8 +46,8 @@ static int mtk_efuse_probe(struct platfo
  33. if (IS_ERR(priv->base))
  34. return PTR_ERR(priv->base);
  35. - econfig.stride = 4;
  36. - econfig.word_size = 4;
  37. + econfig.stride = 1;
  38. + econfig.word_size = 1;
  39. econfig.reg_read = mtk_reg_read;
  40. econfig.size = resource_size(res);
  41. econfig.priv = priv;