devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • * [PATCH 2/4] hwrng: mtk - add support for MT7622 SoC
           [not found] <cover.1496255334.git.sean.wang@mediatek.com>
           [not found] ` <cover.1496255334.git.sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
    @ 2017-05-31 18:44 ` sean.wang
      2017-05-31 18:44 ` [PATCH 3/4] hwrng: mtk - add runtime PM support sean.wang
      2017-05-31 18:44 ` [PATCH 4/4] MAINTAINERS: add entry for MediaTek Random Number Generator sean.wang
      3 siblings, 0 replies; 8+ messages in thread
    From: sean.wang @ 2017-05-31 18:44 UTC (permalink / raw)
      To: herbert, mpm, robh+dt, mark.rutland, clabbe.montjoie,
    	prasannatsmkumar, romain.perier, shannon.nelson
      Cc: devicetree, keyhaede, Sean Wang, linux-kernel, linux-mediatek,
    	linux-crypto, weiyongjun1, linux-arm-kernel
    
    From: Sean Wang <sean.wang@mediatek.com>
    
    Add "mediatek,generic-rng" allowing most of RNG on MediaTek SoCs to be
    compatible with the driver including MT7622 SoC.
    
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    ---
     drivers/char/hw_random/mtk-rng.c | 1 +
     1 file changed, 1 insertion(+)
    
    diff --git a/drivers/char/hw_random/mtk-rng.c b/drivers/char/hw_random/mtk-rng.c
    index df8eb54..3a1e1f1 100644
    --- a/drivers/char/hw_random/mtk-rng.c
    +++ b/drivers/char/hw_random/mtk-rng.c
    @@ -148,6 +148,7 @@ static int mtk_rng_probe(struct platform_device *pdev)
     }
     
     static const struct of_device_id mtk_rng_match[] = {
    +	{ .compatible = "mediatek,generic-rng" },
     	{ .compatible = "mediatek,mt7623-rng" },
     	{},
     };
    -- 
    1.9.1
    
    ^ permalink raw reply related	[flat|nested] 8+ messages in thread
  • * [PATCH 3/4] hwrng: mtk - add runtime PM support
           [not found] <cover.1496255334.git.sean.wang@mediatek.com>
           [not found] ` <cover.1496255334.git.sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
      2017-05-31 18:44 ` [PATCH 2/4] hwrng: mtk - add support for MT7622 SoC sean.wang
    @ 2017-05-31 18:44 ` sean.wang
      2017-05-31 18:44 ` [PATCH 4/4] MAINTAINERS: add entry for MediaTek Random Number Generator sean.wang
      3 siblings, 0 replies; 8+ messages in thread
    From: sean.wang @ 2017-05-31 18:44 UTC (permalink / raw)
      To: herbert, mpm, robh+dt, mark.rutland, clabbe.montjoie,
    	prasannatsmkumar, romain.perier, shannon.nelson
      Cc: weiyongjun1, devicetree, linux-crypto, linux-mediatek,
    	linux-arm-kernel, linux-kernel, keyhaede, Sean Wang
    
    From: Sean Wang <sean.wang@mediatek.com>
    
    Add runtime PM support.  There will be the benefit on SoCs where the
    clock to the RNG used can be shutdown.
    
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    ---
     drivers/char/hw_random/mtk-rng.c | 42 ++++++++++++++++++++++++++++++++++++++++
     1 file changed, 42 insertions(+)
    
    diff --git a/drivers/char/hw_random/mtk-rng.c b/drivers/char/hw_random/mtk-rng.c
    index 3a1e1f1..59ded4e 100644
    --- a/drivers/char/hw_random/mtk-rng.c
    +++ b/drivers/char/hw_random/mtk-rng.c
    @@ -25,6 +25,10 @@
     #include <linux/module.h>
     #include <linux/of.h>
     #include <linux/platform_device.h>
    +#include <linux/pm_runtime.h>
    +
    +/* Runtime PM autosuspend timeout: */
    +#define RNG_AUTOSUSPEND_TIMEOUT		100
     
     #define USEC_POLL			2
     #define TIMEOUT_POLL			20
    @@ -90,6 +94,8 @@ static int mtk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait)
     	struct mtk_rng *priv = to_mtk_rng(rng);
     	int retval = 0;
     
    +	pm_runtime_get_sync((struct device *)priv->rng.priv);
    +
     	while (max >= sizeof(u32)) {
     		if (!mtk_rng_wait_ready(rng, wait))
     			break;
    @@ -100,6 +106,9 @@ static int mtk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait)
     		max -= sizeof(u32);
     	}
     
    +	pm_runtime_mark_last_busy((struct device *)priv->rng.priv);
    +	pm_runtime_put_sync_autosuspend((struct device *)priv->rng.priv);
    +
     	return retval || !wait ? retval : -EIO;
     }
     
    @@ -120,9 +129,12 @@ static int mtk_rng_probe(struct platform_device *pdev)
     		return -ENOMEM;
     
     	priv->rng.name = pdev->name;
    +#ifndef CONFIG_PM
     	priv->rng.init = mtk_rng_init;
     	priv->rng.cleanup = mtk_rng_cleanup;
    +#endif
     	priv->rng.read = mtk_rng_read;
    +	priv->rng.priv = (unsigned long)&pdev->dev;
     
     	priv->clk = devm_clk_get(&pdev->dev, "rng");
     	if (IS_ERR(priv->clk)) {
    @@ -142,11 +154,40 @@ static int mtk_rng_probe(struct platform_device *pdev)
     		return ret;
     	}
     
    +	dev_set_drvdata(&pdev->dev, priv);
    +	pm_runtime_set_autosuspend_delay(&pdev->dev, RNG_AUTOSUSPEND_TIMEOUT);
    +	pm_runtime_use_autosuspend(&pdev->dev);
    +	pm_runtime_enable(&pdev->dev);
    +
     	dev_info(&pdev->dev, "registered RNG driver\n");
     
     	return 0;
     }
     
    +#ifdef CONFIG_PM
    +static int mtk_rng_runtime_suspend(struct device *dev)
    +{
    +	struct mtk_rng *priv = dev_get_drvdata(dev);
    +
    +	mtk_rng_cleanup(&priv->rng);
    +
    +	return 0;
    +}
    +
    +static int mtk_rng_runtime_resume(struct device *dev)
    +{
    +	struct mtk_rng *priv = dev_get_drvdata(dev);
    +
    +	return mtk_rng_init(&priv->rng);
    +}
    +
    +static UNIVERSAL_DEV_PM_OPS(mtk_rng_pm_ops, mtk_rng_runtime_suspend,
    +			    mtk_rng_runtime_resume, NULL);
    +#define MTK_RNG_PM_OPS (&mtk_rng_pm_ops)
    +#else	/* CONFIG_PM */
    +#define MTK_RNG_PM_OPS NULL
    +#endif	/* CONFIG_PM */
    +
     static const struct of_device_id mtk_rng_match[] = {
     	{ .compatible = "mediatek,generic-rng" },
     	{ .compatible = "mediatek,mt7623-rng" },
    @@ -158,6 +199,7 @@ static int mtk_rng_probe(struct platform_device *pdev)
     	.probe          = mtk_rng_probe,
     	.driver = {
     		.name = MTK_RNG_DEV,
    +		.pm = MTK_RNG_PM_OPS,
     		.of_match_table = mtk_rng_match,
     	},
     };
    -- 
    1.9.1
    
    ^ permalink raw reply related	[flat|nested] 8+ messages in thread
  • * [PATCH 4/4] MAINTAINERS: add entry for MediaTek Random Number Generator
           [not found] <cover.1496255334.git.sean.wang@mediatek.com>
                       ` (2 preceding siblings ...)
      2017-05-31 18:44 ` [PATCH 3/4] hwrng: mtk - add runtime PM support sean.wang
    @ 2017-05-31 18:44 ` sean.wang
      3 siblings, 0 replies; 8+ messages in thread
    From: sean.wang @ 2017-05-31 18:44 UTC (permalink / raw)
      To: herbert, mpm, robh+dt, mark.rutland, clabbe.montjoie,
    	prasannatsmkumar, romain.perier, shannon.nelson
      Cc: weiyongjun1, devicetree, linux-crypto, linux-mediatek,
    	linux-arm-kernel, linux-kernel, keyhaede, Sean Wang
    
    From: Sean Wang <sean.wang@mediatek.com>
    
    I work for MediaTek on maintaining the MediaTek RNG driver
    for the existing SoCs and adding support for the following
    SoCs.
    
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    ---
     MAINTAINERS | 5 +++++
     1 file changed, 5 insertions(+)
    
    diff --git a/MAINTAINERS b/MAINTAINERS
    index cf86519..da473d0 100644
    --- a/MAINTAINERS
    +++ b/MAINTAINERS
    @@ -8262,6 +8262,11 @@ L:	linux-wireless@vger.kernel.org
     S:	Maintained
     F:	drivers/net/wireless/mediatek/mt7601u/
     
    +MEDIATEK RANDOM NUMBER GENERATOR SUPPORT
    +M:      Sean Wang <sean.wang@mediatek.com>
    +S:      Maintained
    +F:      drivers/char/hw_random/mtk-rng.c
    +
     MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES
     M:	Peter Senna Tschudin <peter.senna@collabora.com>
     M:	Martin Donnelly <martin.donnelly@ge.com>
    -- 
    1.9.1
    
    ^ permalink raw reply related	[flat|nested] 8+ messages in thread

  • end of thread, other threads:[~2017-06-07 14:48 UTC | newest]
    
    Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <cover.1496255334.git.sean.wang@mediatek.com>
         [not found] ` <cover.1496255334.git.sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
    2017-05-31 18:44   ` [PATCH 1/4] dt-bindings: rng: add generic bindings for MediaTek SoCs sean.wang-NuS5LvNUpcJWk0Htik3J/w
    2017-06-06 11:07     ` Matthias Brugger
         [not found]       ` <9eb87222-ca89-0abb-4532-3887008f6e7a-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
    2017-06-07 13:20         ` Sean Wang
    2017-06-07 13:25           ` Matthias Brugger
         [not found]             ` <a8b797e9-db6f-7f92-2cee-72d456815310-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
    2017-06-07 14:48               ` Sean Wang
    2017-05-31 18:44 ` [PATCH 2/4] hwrng: mtk - add support for MT7622 SoC sean.wang
    2017-05-31 18:44 ` [PATCH 3/4] hwrng: mtk - add runtime PM support sean.wang
    2017-05-31 18:44 ` [PATCH 4/4] MAINTAINERS: add entry for MediaTek Random Number Generator sean.wang
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).