diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2017-10-20 12:57:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-11-08 07:54:16 -0500 |
commit | 4dd5f60e9a841da5c14c2a0a23290adddb4b5087 (patch) | |
tree | 536ac44c75280d921071edfd289a77726a2cd70f | |
parent | 01d35cabd5abda28c352f63c87109c477fc84886 (diff) |
nvmem: mtk-efuse: use stack for nvmem_config instead of malloc'ing it
nvmem_register() copies all the members of nvmem_config to
nvmem_device. So, nvmem_config is one-time use data during
probing. There is no point to keep it until the driver detach.
Using stack should be no problem because nvmem_config is pretty
small.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/nvmem/mtk-efuse.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c index 32fd572e18c5..fa7a0f66b37e 100644 --- a/drivers/nvmem/mtk-efuse.c +++ b/drivers/nvmem/mtk-efuse.c | |||
@@ -49,7 +49,7 @@ static int mtk_efuse_probe(struct platform_device *pdev) | |||
49 | struct device *dev = &pdev->dev; | 49 | struct device *dev = &pdev->dev; |
50 | struct resource *res; | 50 | struct resource *res; |
51 | struct nvmem_device *nvmem; | 51 | struct nvmem_device *nvmem; |
52 | struct nvmem_config *econfig; | 52 | struct nvmem_config econfig = {}; |
53 | void __iomem *base; | 53 | void __iomem *base; |
54 | 54 | ||
55 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 55 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
@@ -57,19 +57,15 @@ static int mtk_efuse_probe(struct platform_device *pdev) | |||
57 | if (IS_ERR(base)) | 57 | if (IS_ERR(base)) |
58 | return PTR_ERR(base); | 58 | return PTR_ERR(base); |
59 | 59 | ||
60 | econfig = devm_kzalloc(dev, sizeof(*econfig), GFP_KERNEL); | 60 | econfig.stride = 4; |
61 | if (!econfig) | 61 | econfig.word_size = 4; |
62 | return -ENOMEM; | 62 | econfig.reg_read = mtk_reg_read; |
63 | 63 | econfig.reg_write = mtk_reg_write; | |
64 | econfig->stride = 4; | 64 | econfig.size = resource_size(res); |
65 | econfig->word_size = 4; | 65 | econfig.priv = base; |
66 | econfig->reg_read = mtk_reg_read; | 66 | econfig.dev = dev; |
67 | econfig->reg_write = mtk_reg_write; | 67 | econfig.owner = THIS_MODULE; |
68 | econfig->size = resource_size(res); | 68 | nvmem = nvmem_register(&econfig); |
69 | econfig->priv = base; | ||
70 | econfig->dev = dev; | ||
71 | econfig->owner = THIS_MODULE; | ||
72 | nvmem = nvmem_register(econfig); | ||
73 | if (IS_ERR(nvmem)) | 69 | if (IS_ERR(nvmem)) |
74 | return PTR_ERR(nvmem); | 70 | return PTR_ERR(nvmem); |
75 | 71 | ||