linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • * [PATCH v3 1/3] dt-bindings: hwrng: Add Samsung Exynos 5250+ True RNG bindings
           [not found] <20171204120429.22892-1-l.stelmach@samsung.com>
           [not found] ` <CGME20171204125413eucas1p17e7b90e3eab244e716ea3b0023ff9a41@eucas1p1.samsung.com>
    @ 2017-12-04 12:53 ` Łukasz Stelmach
      2017-12-04 13:13   ` Krzysztof Kozlowski
      2017-12-04 20:27   ` Rob Herring
      2017-12-04 12:53 ` [PATCH v3 2/3] hwrng: exynos - add Samsung Exynos True RNG driver Łukasz Stelmach
      2017-12-04 12:53 ` [PATCH v3 3/3] ARM: dts: exynos: Add nodes for True Random Number Generator Łukasz Stelmach
      3 siblings, 2 replies; 27+ messages in thread
    From: Łukasz Stelmach @ 2017-12-04 12:53 UTC (permalink / raw)
      To: Andrew F . Davis, PrasannaKumar Muralidharan, Rob Herring,
    	Matt Mackall, Herbert Xu, Krzysztof Kozlowski, Kukjin Kim,
    	devicetree, linux-crypto, linux-samsung-soc, linux-kernel
      Cc: Łukasz Stelmach, Marek Szyprowski, Bartlomiej Zolnierkiewicz
    
    Add binding documentation for the True Random Number Generator
    found on Samsung Exynos 5250+ SoCs.
    
    Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
    ---
     .../devicetree/bindings/rng/samsung,exynos5250-trng.txt | 17 +++++++++++++++++
     1 file changed, 17 insertions(+)
     create mode 100644 Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt
    
    diff --git a/Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt b/Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt
    new file mode 100644
    index 000000000000..5a613a4ec780
    --- /dev/null
    +++ b/Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt
    @@ -0,0 +1,17 @@
    +Exynos True Random Number Generator
    +
    +Required properties:
    +
    +- compatible  : Should be "samsung,exynos5250-trng".
    +- reg         : Specifies base physical address and size of the registers map.
    +- clocks      : Phandle to clock-controller plus clock-specifier pair.
    +- clock-names : "secss" as a clock name.
    +
    +Example:
    +
    +	rng@10830600 {
    +		compatible = "samsung,exynos5250-trng";
    +		reg = <0x10830600 0x100>;
    +		clocks = <&clock CLK_SSS>;
    +		clock-names = "secss";
    +	};
    -- 
    2.11.0
    
    ^ permalink raw reply related	[flat|nested] 27+ messages in thread
  • * [PATCH v3 2/3] hwrng: exynos - add Samsung Exynos True RNG driver
           [not found] <20171204120429.22892-1-l.stelmach@samsung.com>
           [not found] ` <CGME20171204125413eucas1p17e7b90e3eab244e716ea3b0023ff9a41@eucas1p1.samsung.com>
      2017-12-04 12:53 ` [PATCH v3 1/3] dt-bindings: hwrng: Add Samsung Exynos 5250+ True RNG bindings Łukasz Stelmach
    @ 2017-12-04 12:53 ` Łukasz Stelmach
      2017-12-04 13:19   ` Krzysztof Kozlowski
                         ` (2 more replies)
      2017-12-04 12:53 ` [PATCH v3 3/3] ARM: dts: exynos: Add nodes for True Random Number Generator Łukasz Stelmach
      3 siblings, 3 replies; 27+ messages in thread
    From: Łukasz Stelmach @ 2017-12-04 12:53 UTC (permalink / raw)
      To: Andrew F . Davis, PrasannaKumar Muralidharan, Rob Herring,
    	Matt Mackall, Herbert Xu, Krzysztof Kozlowski, Kukjin Kim,
    	devicetree, linux-crypto, linux-samsung-soc, linux-kernel
      Cc: Łukasz Stelmach, Marek Szyprowski, Bartlomiej Zolnierkiewicz
    
    Add support for True Random Number Generator found in Samsung Exynos
    5250+ SoCs.
    
    Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
    ---
     MAINTAINERS                          |   7 +
     drivers/char/hw_random/Kconfig       |  12 ++
     drivers/char/hw_random/Makefile      |   1 +
     drivers/char/hw_random/exynos-trng.c | 245 +++++++++++++++++++++++++++++++++++
     4 files changed, 265 insertions(+)
     create mode 100644 drivers/char/hw_random/exynos-trng.c
    
    diff --git a/MAINTAINERS b/MAINTAINERS
    index 2811a211632c..992074cca612 100644
    --- a/MAINTAINERS
    +++ b/MAINTAINERS
    @@ -11780,6 +11780,13 @@ S:	Maintained
     F:	drivers/crypto/exynos-rng.c
     F:	Documentation/devicetree/bindings/rng/samsung,exynos-rng4.txt
     
    +SAMSUNG EXYNOS TRUE RANDOM NUMBER GENERATOR (TRNG) DRIVER
    +M:	Łukasz Stelmach <l.stelmach@samsung.com>
    +L:	linux-samsung-soc@vger.kernel.org
    +S:	Maintained
    +F:	drivers/char/hw_random/exynos-trng.c
    +F:	Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt
    +
     SAMSUNG FRAMEBUFFER DRIVER
     M:	Jingoo Han <jingoohan1@gmail.com>
     L:	linux-fbdev@vger.kernel.org
    diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
    index 95a031e9eced..292e6b36d493 100644
    --- a/drivers/char/hw_random/Kconfig
    +++ b/drivers/char/hw_random/Kconfig
    @@ -449,6 +449,18 @@ config HW_RANDOM_S390
     
     	  If unsure, say Y.
     
    +config HW_RANDOM_EXYNOS
    +	tristate "Samsung Exynos True Random Number Generator support"
    +	depends on ARCH_EXYNOS || COMPILE_TEST
    +	default HW_RANDOM
    +	---help---
    +	  This driver provides support for the True Random Number
    +	  Generator available in Exynos SoCs.
    +
    +	  To compile this driver as a module, choose M here: the module
    +	  will be called exynos-trng.
    +
    +	  If unsure, say Y.
     endif # HW_RANDOM
     
     config UML_RANDOM
    diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
    index f3728d008fff..5595df97da7a 100644
    --- a/drivers/char/hw_random/Makefile
    +++ b/drivers/char/hw_random/Makefile
    @@ -14,6 +14,7 @@ obj-$(CONFIG_HW_RANDOM_GEODE) += geode-rng.o
     obj-$(CONFIG_HW_RANDOM_N2RNG) += n2-rng.o
     n2-rng-y := n2-drv.o n2-asm.o
     obj-$(CONFIG_HW_RANDOM_VIA) += via-rng.o
    +obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-trng.o
     obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o
     obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o
     obj-$(CONFIG_HW_RANDOM_OMAP3_ROM) += omap3-rom-rng.o
    diff --git a/drivers/char/hw_random/exynos-trng.c b/drivers/char/hw_random/exynos-trng.c
    new file mode 100644
    index 000000000000..971d2fe9d55a
    --- /dev/null
    +++ b/drivers/char/hw_random/exynos-trng.c
    @@ -0,0 +1,245 @@
    +/*
    + * RNG driver for Exynos TRNGs
    + *
    + * Author: Łukasz Stelmach <l.stelmach@samsung.com>
    + *
    + * Copyright 2017 (c) Samsung Electronics Software, Inc.
    + *
    + * Based on the Exynos PRNG driver drivers/crypto/exynos-rng by
    + * Krzysztof Kozłowski <krzk@kernel.org>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation;
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + * GNU General Public License for more details.
    + */
    +
    +#include <linux/clk.h>
    +#include <linux/crypto.h>
    +#include <linux/delay.h>
    +#include <linux/err.h>
    +#include <linux/hw_random.h>
    +#include <linux/io.h>
    +#include <linux/iopoll.h>
    +#include <linux/kernel.h>
    +#include <linux/module.h>
    +#include <linux/platform_device.h>
    +#include <linux/pm_runtime.h>
    +
    +#define EXYNOS_TRNG_CLKDIV         (0x0)
    +
    +#define EXYNOS_TRNG_CTRL           (0x20)
    +#define EXYNOS_TRNG_CTRL_RNGEN     BIT(31)
    +
    +#define EXYNOS_TRNG_POST_CTRL      (0x30)
    +#define EXYNOS_TRNG_ONLINE_CTRL    (0x40)
    +#define EXYNOS_TRNG_ONLINE_STAT    (0x44)
    +#define EXYNOS_TRNG_ONLINE_MAXCHI2 (0x48)
    +#define EXYNOS_TRNG_FIFO_CTRL      (0x50)
    +#define EXYNOS_TRNG_FIFO_0         (0x80)
    +#define EXYNOS_TRNG_FIFO_1         (0x84)
    +#define EXYNOS_TRNG_FIFO_2         (0x88)
    +#define EXYNOS_TRNG_FIFO_3         (0x8c)
    +#define EXYNOS_TRNG_FIFO_4         (0x90)
    +#define EXYNOS_TRNG_FIFO_5         (0x94)
    +#define EXYNOS_TRNG_FIFO_6         (0x98)
    +#define EXYNOS_TRNG_FIFO_7         (0x9c)
    +#define EXYNOS_TRNG_FIFO_LEN       (8)
    +#define EXYNOS_TRNG_CLOCK_RATE     (500000)
    +
    +
    +struct exynos_trng_dev {
    +	struct device    *dev;
    +	void __iomem     *mem;
    +	struct clk       *clk;
    +	struct hwrng rng;
    +};
    +
    +static int exynos_trng_do_read(struct hwrng *rng, void *data, size_t max,
    +			       bool wait)
    +{
    +	struct exynos_trng_dev *trng;
    +	u32 val;
    +
    +	max = min_t(size_t, max, (EXYNOS_TRNG_FIFO_LEN * 4));
    +
    +	trng = (struct exynos_trng_dev *)rng->priv;
    +
    +	writel_relaxed(max * 8, trng->mem + EXYNOS_TRNG_FIFO_CTRL);
    +	val = readl_poll_timeout(trng->mem + EXYNOS_TRNG_FIFO_CTRL, val,
    +				 val == 0, 200, 1000000);
    +	if (val < 0)
    +		return val;
    +
    +	memcpy_fromio(data, trng->mem + EXYNOS_TRNG_FIFO_0, max);
    +
    +	return max;
    +}
    +
    +static int exynos_trng_init(struct hwrng *rng)
    +{
    +	struct exynos_trng_dev *trng = (struct exynos_trng_dev *)rng->priv;
    +	unsigned long sss_rate;
    +	u32 val;
    +
    +	sss_rate = clk_get_rate(trng->clk);
    +
    +	/*
    +	 * For most TRNG circuits the clock frequency of under 500 kHz
    +	 * is safe.
    +	 */
    +	val = sss_rate / (EXYNOS_TRNG_CLOCK_RATE * 2);
    +	if (val > 0x7fff) {
    +		dev_err(trng->dev, "clock divider too large: %d", val);
    +		return -ERANGE;
    +	}
    +	val = val << 1;
    +	writel_relaxed(val, trng->mem + EXYNOS_TRNG_CLKDIV);
    +
    +	/* Enable the generator. */
    +	val = EXYNOS_TRNG_CTRL_RNGEN;
    +	writel_relaxed(val, trng->mem + EXYNOS_TRNG_CTRL);
    +
    +	/*
    +	 * Disable post-processing. /dev/hwrng is supposed to deliver
    +	 * unprocessed data.
    +	 */
    +	writel_relaxed(0, trng->mem + EXYNOS_TRNG_POST_CTRL);
    +
    +	return 0;
    +}
    +
    +static int exynos_trng_probe(struct platform_device *pdev)
    +{
    +	struct exynos_trng_dev *trng;
    +	struct resource *res;
    +	int ret = -ENOMEM;
    +
    +	trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL);
    +	if (!trng)
    +		return ret;
    +
    +	trng->rng.name = devm_kstrdup(&pdev->dev, dev_name(&pdev->dev),
    +				      GFP_KERNEL);
    +	if (!trng->rng.name)
    +		return ret;
    +
    +	trng->rng.init = exynos_trng_init;
    +	trng->rng.read = exynos_trng_do_read;
    +	trng->rng.priv = (unsigned long) trng;
    +
    +	platform_set_drvdata(pdev, trng);
    +	trng->dev = &pdev->dev;
    +
    +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    +	trng->mem = devm_ioremap_resource(&pdev->dev, res);
    +	if (IS_ERR(trng->mem)) {
    +		dev_err(&pdev->dev, "Could not map IO resources.\n");
    +		return PTR_ERR(trng->mem);
    +	}
    +
    +	pm_runtime_enable(&pdev->dev);
    +	ret = pm_runtime_get_sync(&pdev->dev);
    +	if (ret < 0) {
    +		dev_err(&pdev->dev, "Could not get runtime PM.\n");
    +		goto err_pm_get;
    +	}
    +
    +	trng->clk = devm_clk_get(&pdev->dev, "secss");
    +	if (IS_ERR(trng->clk)) {
    +		ret = PTR_ERR(trng->clk);
    +		dev_err(&pdev->dev, "Could not get clock.\n");
    +		goto err_clock;
    +	}
    +
    +	ret = clk_prepare_enable(trng->clk);
    +	if (ret) {
    +		dev_err(&pdev->dev, "Could not enable the clk.\n");
    +		goto err_clock;
    +	}
    +
    +	ret = hwrng_register(&trng->rng);
    +	if (ret) {
    +		dev_err(&pdev->dev, "Could not register hwrng device.\n");
    +		goto err_register;
    +	}
    +
    +	dev_info(&pdev->dev, "Exynos True Random Number Generator.\n");
    +
    +	return 0;
    +
    +err_register:
    +	clk_disable_unprepare(trng->clk);
    +
    +err_clock:
    +	pm_runtime_put_sync(&pdev->dev);
    +
    +err_pm_get:
    +	pm_runtime_disable(&pdev->dev);
    +
    +	return ret;
    +}
    +
    +static int exynos_trng_remove(struct platform_device *pdev)
    +{
    +	struct exynos_trng_dev *trng =  platform_get_drvdata(pdev);
    +
    +	hwrng_unregister(&trng->rng);
    +	clk_disable_unprepare(trng->clk);
    +
    +	pm_runtime_put_sync(&pdev->dev);
    +	pm_runtime_disable(&pdev->dev);
    +
    +	return 0;
    +}
    +
    +static int __maybe_unused exynos_trng_suspend(struct device *dev)
    +{
    +	pm_runtime_put_sync(dev);
    +
    +	return 0;
    +}
    +
    +static int __maybe_unused exynos_trng_resume(struct device *dev)
    +{
    +	int ret;
    +
    +	ret = pm_runtime_get_sync(dev);
    +	if (ret < 0) {
    +		dev_err(dev, "Could not get runtime PM.\n");
    +		pm_runtime_put_noidle(dev);
    +		return ret;
    +	}
    +
    +	return 0;
    +}
    +
    +static SIMPLE_DEV_PM_OPS(exynos_trng_pm_ops, exynos_trng_suspend,
    +			 exynos_trng_resume);
    +
    +static const struct of_device_id exynos_trng_dt_match[] = {
    +	{
    +		.compatible = "samsung,exynos5250-trng",
    +	},
    +	{ },
    +};
    +MODULE_DEVICE_TABLE(of, exynos_rng_dt_match);
    +
    +static struct platform_driver exynos_trng_driver = {
    +	.driver = {
    +		.name = "exynos-trng",
    +		.pm = &exynos_trng_pm_ops,
    +		.of_match_table = exynos_trng_dt_match,
    +	},
    +	.probe = exynos_trng_probe,
    +	.remove = exynos_trng_remove,
    +};
    +
    +module_platform_driver(exynos_trng_driver);
    +MODULE_AUTHOR("Łukasz Stelmach");
    +MODULE_DESCRIPTION("H/W TRNG driver for Exynos chips");
    +MODULE_LICENSE("GPL");
    -- 
    2.11.0
    
    ^ permalink raw reply related	[flat|nested] 27+ messages in thread
  • * [PATCH v3 3/3] ARM: dts: exynos: Add nodes for True Random Number Generator
           [not found] <20171204120429.22892-1-l.stelmach@samsung.com>
                       ` (2 preceding siblings ...)
      2017-12-04 12:53 ` [PATCH v3 2/3] hwrng: exynos - add Samsung Exynos True RNG driver Łukasz Stelmach
    @ 2017-12-04 12:53 ` Łukasz Stelmach
      2017-12-11 18:49   ` Krzysztof Kozlowski
           [not found]   ` <CGME20171212120906eucas1p23883590efde24a67800473b0d34871e5@eucas1p2.samsung.com>
      3 siblings, 2 replies; 27+ messages in thread
    From: Łukasz Stelmach @ 2017-12-04 12:53 UTC (permalink / raw)
      To: Andrew F . Davis, PrasannaKumar Muralidharan, Rob Herring,
    	Matt Mackall, Herbert Xu, Krzysztof Kozlowski, Kukjin Kim,
    	devicetree, linux-crypto, linux-samsung-soc, linux-kernel
      Cc: Łukasz Stelmach, Marek Szyprowski, Bartlomiej Zolnierkiewicz
    
    Add nodes for the True Random Number Generator found in Samsung Exynos
    5250+ SoCs.
    
    Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
    ---
     arch/arm/boot/dts/exynos5.dtsi    | 5 +++++
     arch/arm/boot/dts/exynos5250.dtsi | 5 +++++
     arch/arm/boot/dts/exynos5410.dtsi | 5 +++++
     arch/arm/boot/dts/exynos5420.dtsi | 5 +++++
     4 files changed, 20 insertions(+)
    
    diff --git a/arch/arm/boot/dts/exynos5.dtsi b/arch/arm/boot/dts/exynos5.dtsi
    index 33f929c1dda9..e0c91ff4442c 100644
    --- a/arch/arm/boot/dts/exynos5.dtsi
    +++ b/arch/arm/boot/dts/exynos5.dtsi
    @@ -215,5 +215,10 @@
     		      compatible = "samsung,exynos5250-prng";
     		      reg = <0x10830400 0x200>;
     		};
    +
    +		trng: rng@10830600 {
    +		      compatible = "samsung,exynos5250-trng";
    +		      reg = <0x10830600 0x100>;
    +		};
     	};
     };
    diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
    index 51aa83ba8c87..38627e8164a0 100644
    --- a/arch/arm/boot/dts/exynos5250.dtsi
    +++ b/arch/arm/boot/dts/exynos5250.dtsi
    @@ -1086,4 +1086,9 @@
     	clock-names = "secss";
     };
     
    +&trng {
    +	clocks = <&clock CLK_SSS>;
    +	clock-names = "secss";
    +};
    +
     #include "exynos5250-pinctrl.dtsi"
    diff --git a/arch/arm/boot/dts/exynos5410.dtsi b/arch/arm/boot/dts/exynos5410.dtsi
    index 1604cb1b837d..aa8b14eda662 100644
    --- a/arch/arm/boot/dts/exynos5410.dtsi
    +++ b/arch/arm/boot/dts/exynos5410.dtsi
    @@ -384,6 +384,11 @@
     		  3 0 0x07000000 0x20000>;
     };
     
    +&trng {
    +	clocks = <&clock CLK_SSS>;
    +	clock-names = "secss";
    +};
    +
     &usbdrd3_0 {
     	clocks = <&clock CLK_USBD300>;
     	clock-names = "usbdrd30";
    diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
    index 31c77ea9123d..6c8cec9d564a 100644
    --- a/arch/arm/boot/dts/exynos5420.dtsi
    +++ b/arch/arm/boot/dts/exynos5420.dtsi
    @@ -1459,6 +1459,11 @@
     	clock-names = "secss";
     };
     
    +&trng {
    +	clocks = <&clock CLK_SSS>;
    +	clock-names = "secss";
    +};
    +
     &usbdrd3_0 {
     	clocks = <&clock CLK_USBD300>;
     	clock-names = "usbdrd30";
    -- 
    2.11.0
    
    ^ permalink raw reply related	[flat|nested] 27+ messages in thread

  • end of thread, other threads:[~2018-01-05 11:15 UTC | newest]
    
    Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <20171204120429.22892-1-l.stelmach@samsung.com>
         [not found] ` <CGME20171204125413eucas1p17e7b90e3eab244e716ea3b0023ff9a41@eucas1p1.samsung.com>
    2017-12-04 12:53   ` [PATCH v3 0/3] True RNG driver for Samsung Exynos 5250+ SoCs Łukasz Stelmach
    2017-12-04 12:53 ` [PATCH v3 1/3] dt-bindings: hwrng: Add Samsung Exynos 5250+ True RNG bindings Łukasz Stelmach
    2017-12-04 13:13   ` Krzysztof Kozlowski
         [not found]     ` <CGME20171205093028eucas1p1fb6d7b8bde6cd5e3a0bfca8ddafe8a31@eucas1p1.samsung.com>
    2017-12-05  9:30       ` Łukasz Stelmach
    2017-12-05 10:04         ` Krzysztof Kozlowski
    2017-12-04 20:27   ` Rob Herring
    2017-12-04 12:53 ` [PATCH v3 2/3] hwrng: exynos - add Samsung Exynos True RNG driver Łukasz Stelmach
    2017-12-04 13:19   ` Krzysztof Kozlowski
    2017-12-22  8:24   ` Herbert Xu
    2017-12-22  8:29     ` Marek Szyprowski
    2017-12-22  8:35       ` Herbert Xu
         [not found]         ` <CGME20171222124132eucas1p281d0ae6925ec5358baa3bbbc4e35b628@eucas1p2.samsung.com>
    2017-12-22 12:41           ` Łukasz Stelmach
         [not found]   ` <CGME20171222132349eucas1p2270e45b81c9d77cb09addfd769877098@eucas1p2.samsung.com>
    2017-12-22 13:23     ` [PATCH v4] " Łukasz Stelmach
    2017-12-22 13:34       ` Philippe Ombredanne
         [not found]         ` <CGME20171222163901eucas1p253c4258fb141ea955c40185cd2f38197@eucas1p2.samsung.com>
    2017-12-22 16:38           ` Łukasz Stelmach
    2017-12-22 18:30             ` Philippe Ombredanne
         [not found]               ` <CGME20171227101226eucas1p2baa0309227b8e6a1e77dd7ca88f6412b@eucas1p2.samsung.com>
    2017-12-27 10:12                 ` Łukasz Stelmach
    2017-12-27 21:51                   ` Philippe Ombredanne
         [not found]       ` <CGME20171222164840eucas1p17e3d17666ba3d0c5fced2d1c9259bf0b@eucas1p1.samsung.com>
    2017-12-22 16:48         ` [PATCH v5] " Łukasz Stelmach
    2017-12-22 18:31           ` Philippe Ombredanne
    2018-01-05 11:14           ` Herbert Xu
    2017-12-04 12:53 ` [PATCH v3 3/3] ARM: dts: exynos: Add nodes for True Random Number Generator Łukasz Stelmach
    2017-12-11 18:49   ` Krzysztof Kozlowski
         [not found]     ` <CGME20171212103557eucas1p202966a9335d52149ce69ef122f1758d8@eucas1p2.samsung.com>
    2017-12-12 10:35       ` Łukasz Stelmach
    2017-12-12 10:49         ` Krzysztof Kozlowski
         [not found]   ` <CGME20171212120906eucas1p23883590efde24a67800473b0d34871e5@eucas1p2.samsung.com>
    2017-12-12 12:09     ` [PATCH v4] " Łukasz Stelmach
    2017-12-12 17:44       ` Krzysztof Kozlowski
    

    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).