All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@bootlin.com>
To: Gregory CLEMENT <gregory.clement@bootlin.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>,
	linux-mtd@lists.infradead.org,
	Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	linux-arm-kernel@lists.infradead.org,
	Antoine Tenart <antoine.tenart@bootlin.com>,
	Nadav Haklai <nadavh@marvell.com>,
	Shadi Ammouri <shadi@marvell.com>, Omri Itach <omrii@marvell.com>,
	Hanna Hawa <hannah@marvell.com>,
	Igal Liberman <igall@marvell.com>,
	Marcin Wojtas <mw@semihalf.com>, Rob Herring <robh@kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock
Date: Wed, 7 Mar 2018 20:44:18 +0100	[thread overview]
Message-ID: <20180307204418.014622b8@bbrezillon> (raw)
In-Reply-To: <20180307161316.14612-1-gregory.clement@bootlin.com>

+Rob and the DT ML for the DT bindings changes.

On Wed,  7 Mar 2018 17:13:16 +0100
Gregory CLEMENT <gregory.clement@bootlin.com> wrote:

> On Armada 7K/8K we need to explicitly enable the register clock. This
> clock is optional because not all the SoCs using this IP need it but at
> least for Armada 7K/8K it is actually mandatory.
> 
> The binding documentation is updated accordingly.
> 
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> Changelog:
> v1-> v2
> 
>  - Removed the unnecessary IS_ERR() call
>  - Skip the reg clock only if it is not present by checking "-ENOENT"
>  - Add a label for uninitializing the reg clock.
>  
>  .../devicetree/bindings/mtd/marvell-nand.txt       |  6 +++++-
>  drivers/mtd/nand/marvell_nand.c                    | 24 ++++++++++++++++++----
>  2 files changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mtd/marvell-nand.txt b/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> index c08fb477b3c6..4ee9813bf88f 100644
> --- a/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> +++ b/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> @@ -14,7 +14,11 @@ Required properties:
>  - #address-cells: shall be set to 1. Encode the NAND CS.
>  - #size-cells: shall be set to 0.
>  - interrupts: shall define the NAND controller interrupt.
> -- clocks: shall reference the NAND controller clock.
> +- clocks: shall reference the NAND controller clocks, the second one is
> +  optional but needed for the Armada 7K/8K SoCs
> +- clock-names: mandatory if there is a second clock, in this case the
> +   name must be "core" for the first clock and "reg" for the second
> +   one

Still think we should not enforce the order, and I proposed a simple
solution for that in my previous review:

	nfc->ecc_clk = devm_clk_get(&pdev->dev, "core");
	if (PTR_ERR(nfc->ecc_clk) == -ENOENT)
		nfc->ecc_clk = devm_clk_get(&pdev->dev, NULL);

	if (IS_ERR(nfc->ecc_clk))
		return PTR_ERR(nfc->ecc_clk);

>  - marvell,system-controller: Set to retrieve the syscon node that handles
>    NAND controller related registers (only required with the
>    "marvell,armada-8k-nand[-controller]" compatibles).
> diff --git a/drivers/mtd/nand/marvell_nand.c b/drivers/mtd/nand/marvell_nand.c
> index 2196f2a233d6..072e23635375 100644
> --- a/drivers/mtd/nand/marvell_nand.c
> +++ b/drivers/mtd/nand/marvell_nand.c
> @@ -321,6 +321,7 @@ struct marvell_nfc {
>  	struct device *dev;
>  	void __iomem *regs;
>  	struct clk *ecc_clk;
> +	struct clk *reg_clk;

There's a kernel-doc header describing the marvell_nfc fields, could
you add an entry for reg_clk?

>  	struct completion complete;
>  	unsigned long assigned_cs;
>  	struct list_head chips;
> @@ -2747,12 +2748,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> +	nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
> +	if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
> +		if (!IS_ERR(nfc->reg_clk)) {
> +			ret = clk_prepare_enable(nfc->reg_clk);
> +			if (ret)
> +				goto unprepare_clk;

I already suggested to move the devm_clk_get(&pdev->dev, "reg") before
the clk_prepare_enable(nfc->ecc_clk) one to simplify the error path.

> +		} else {
> +			ret = PTR_ERR(nfc->reg_clk);
> +			goto unprepare_clk;
> +		}
> +	}

So nfc->reg_clk stays assigned to -ENOENT if the clk is not present, and
clk_disable_unprepare() will manipulate an invalid pointer when called
from the error or ->remove() path.

Could be addressed/simplified with something like that:

	/*
	 * The register clk is only required on armada 8k. By assigning
	 * ->reg_clk to NULL when -ENOENT is returned, we make sure all
	 * clk_prepare_enable()/clk_disable_unprepare() calls work
	 * correctly even if the clk is missing.
	 */
	nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
	if (PTR_ERR(nfc->reg_clk) == -ENOENT)
		nfc->reg_clk = NULL;

	if (IS_ERR(nfc->reg_clk))
		return PTR_ERR(nfc->reg_clk);

	...

	ret = clk_prepare_enable(nfc->reg_clk);
	if (ret)
		goto unprepare_ecc_clk;


> +
>  	marvell_nfc_disable_int(nfc, NDCR_ALL_INT);
>  	marvell_nfc_clear_int(nfc, NDCR_ALL_INT);
>  	ret = devm_request_irq(dev, irq, marvell_nfc_isr,
>  			       0, "marvell-nfc", nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	/* Get NAND controller capabilities */
>  	if (pdev->id_entry)
> @@ -2763,22 +2776,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>  	if (!nfc->caps) {
>  		dev_err(dev, "Could not retrieve NFC caps\n");
>  		ret = -EINVAL;
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  	}
>  
>  	/* Init the controller and then probe the chips */
>  	ret = marvell_nfc_init(nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	platform_set_drvdata(pdev, nfc);
>  
>  	ret = marvell_nand_chips_init(dev, nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	return 0;
>  
> +unprepare_clk_reg:
> +	clk_disable_unprepare(nfc->reg_clk);
>  unprepare_clk:

Please rename the label (unprepare_clk -> unprepare_ecc_clk).

>  	clk_disable_unprepare(nfc->ecc_clk);
>  
> @@ -2796,6 +2811,7 @@ static int marvell_nfc_remove(struct platform_device *pdev)
>  		dma_release_channel(nfc->dma_chan);
>  	}
>  
> +	clk_disable_unprepare(nfc->reg_clk);
>  	clk_disable_unprepare(nfc->ecc_clk);
>  
>  	return 0;



-- 
Boris Brezillon, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

WARNING: multiple messages have this Message-ID (diff)
From: boris.brezillon@bootlin.com (Boris Brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock
Date: Wed, 7 Mar 2018 20:44:18 +0100	[thread overview]
Message-ID: <20180307204418.014622b8@bbrezillon> (raw)
In-Reply-To: <20180307161316.14612-1-gregory.clement@bootlin.com>

+Rob and the DT ML for the DT bindings changes.

On Wed,  7 Mar 2018 17:13:16 +0100
Gregory CLEMENT <gregory.clement@bootlin.com> wrote:

> On Armada 7K/8K we need to explicitly enable the register clock. This
> clock is optional because not all the SoCs using this IP need it but at
> least for Armada 7K/8K it is actually mandatory.
> 
> The binding documentation is updated accordingly.
> 
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> Changelog:
> v1-> v2
> 
>  - Removed the unnecessary IS_ERR() call
>  - Skip the reg clock only if it is not present by checking "-ENOENT"
>  - Add a label for uninitializing the reg clock.
>  
>  .../devicetree/bindings/mtd/marvell-nand.txt       |  6 +++++-
>  drivers/mtd/nand/marvell_nand.c                    | 24 ++++++++++++++++++----
>  2 files changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mtd/marvell-nand.txt b/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> index c08fb477b3c6..4ee9813bf88f 100644
> --- a/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> +++ b/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> @@ -14,7 +14,11 @@ Required properties:
>  - #address-cells: shall be set to 1. Encode the NAND CS.
>  - #size-cells: shall be set to 0.
>  - interrupts: shall define the NAND controller interrupt.
> -- clocks: shall reference the NAND controller clock.
> +- clocks: shall reference the NAND controller clocks, the second one is
> +  optional but needed for the Armada 7K/8K SoCs
> +- clock-names: mandatory if there is a second clock, in this case the
> +   name must be "core" for the first clock and "reg" for the second
> +   one

Still think we should not enforce the order, and I proposed a simple
solution for that in my previous review:

	nfc->ecc_clk = devm_clk_get(&pdev->dev, "core");
	if (PTR_ERR(nfc->ecc_clk) == -ENOENT)
		nfc->ecc_clk = devm_clk_get(&pdev->dev, NULL);

	if (IS_ERR(nfc->ecc_clk))
		return PTR_ERR(nfc->ecc_clk);

>  - marvell,system-controller: Set to retrieve the syscon node that handles
>    NAND controller related registers (only required with the
>    "marvell,armada-8k-nand[-controller]" compatibles).
> diff --git a/drivers/mtd/nand/marvell_nand.c b/drivers/mtd/nand/marvell_nand.c
> index 2196f2a233d6..072e23635375 100644
> --- a/drivers/mtd/nand/marvell_nand.c
> +++ b/drivers/mtd/nand/marvell_nand.c
> @@ -321,6 +321,7 @@ struct marvell_nfc {
>  	struct device *dev;
>  	void __iomem *regs;
>  	struct clk *ecc_clk;
> +	struct clk *reg_clk;

There's a kernel-doc header describing the marvell_nfc fields, could
you add an entry for reg_clk?

>  	struct completion complete;
>  	unsigned long assigned_cs;
>  	struct list_head chips;
> @@ -2747,12 +2748,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> +	nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
> +	if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
> +		if (!IS_ERR(nfc->reg_clk)) {
> +			ret = clk_prepare_enable(nfc->reg_clk);
> +			if (ret)
> +				goto unprepare_clk;

I already suggested to move the devm_clk_get(&pdev->dev, "reg") before
the clk_prepare_enable(nfc->ecc_clk) one to simplify the error path.

> +		} else {
> +			ret = PTR_ERR(nfc->reg_clk);
> +			goto unprepare_clk;
> +		}
> +	}

So nfc->reg_clk stays assigned to -ENOENT if the clk is not present, and
clk_disable_unprepare() will manipulate an invalid pointer when called
from the error or ->remove() path.

Could be addressed/simplified with something like that:

	/*
	 * The register clk is only required on armada 8k. By assigning
	 * ->reg_clk to NULL when -ENOENT is returned, we make sure all
	 * clk_prepare_enable()/clk_disable_unprepare() calls work
	 * correctly even if the clk is missing.
	 */
	nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
	if (PTR_ERR(nfc->reg_clk) == -ENOENT)
		nfc->reg_clk = NULL;

	if (IS_ERR(nfc->reg_clk))
		return PTR_ERR(nfc->reg_clk);

	...

	ret = clk_prepare_enable(nfc->reg_clk);
	if (ret)
		goto unprepare_ecc_clk;


> +
>  	marvell_nfc_disable_int(nfc, NDCR_ALL_INT);
>  	marvell_nfc_clear_int(nfc, NDCR_ALL_INT);
>  	ret = devm_request_irq(dev, irq, marvell_nfc_isr,
>  			       0, "marvell-nfc", nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	/* Get NAND controller capabilities */
>  	if (pdev->id_entry)
> @@ -2763,22 +2776,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>  	if (!nfc->caps) {
>  		dev_err(dev, "Could not retrieve NFC caps\n");
>  		ret = -EINVAL;
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  	}
>  
>  	/* Init the controller and then probe the chips */
>  	ret = marvell_nfc_init(nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	platform_set_drvdata(pdev, nfc);
>  
>  	ret = marvell_nand_chips_init(dev, nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	return 0;
>  
> +unprepare_clk_reg:
> +	clk_disable_unprepare(nfc->reg_clk);
>  unprepare_clk:

Please rename the label (unprepare_clk -> unprepare_ecc_clk).

>  	clk_disable_unprepare(nfc->ecc_clk);
>  
> @@ -2796,6 +2811,7 @@ static int marvell_nfc_remove(struct platform_device *pdev)
>  		dma_release_channel(nfc->dma_chan);
>  	}
>  
> +	clk_disable_unprepare(nfc->reg_clk);
>  	clk_disable_unprepare(nfc->ecc_clk);
>  
>  	return 0;



-- 
Boris Brezillon, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

WARNING: multiple messages have this Message-ID (diff)
From: Boris Brezillon <boris.brezillon@bootlin.com>
To: Gregory CLEMENT <gregory.clement@bootlin.com>
Cc: Andrew Lunn <andrew@lunn.ch>, Jason Cooper <jason@lakedaemon.net>,
	Rob Herring <robh@kernel.org>,
	Antoine Tenart <antoine.tenart@bootlin.com>,
	Hanna Hawa <hannah@marvell.com>, Omri Itach <omrii@marvell.com>,
	Nadav Haklai <nadavh@marvell.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	linux-mtd@lists.infradead.org, Igal Liberman <igall@marvell.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	Shadi Ammouri <shadi@marvell.com>,
	Marcin Wojtas <mw@semihalf.com>,
	linux-arm-kernel@lists.infradead.org,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock
Date: Wed, 7 Mar 2018 20:44:18 +0100	[thread overview]
Message-ID: <20180307204418.014622b8@bbrezillon> (raw)
In-Reply-To: <20180307161316.14612-1-gregory.clement@bootlin.com>

+Rob and the DT ML for the DT bindings changes.

On Wed,  7 Mar 2018 17:13:16 +0100
Gregory CLEMENT <gregory.clement@bootlin.com> wrote:

> On Armada 7K/8K we need to explicitly enable the register clock. This
> clock is optional because not all the SoCs using this IP need it but at
> least for Armada 7K/8K it is actually mandatory.
> 
> The binding documentation is updated accordingly.
> 
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> Changelog:
> v1-> v2
> 
>  - Removed the unnecessary IS_ERR() call
>  - Skip the reg clock only if it is not present by checking "-ENOENT"
>  - Add a label for uninitializing the reg clock.
>  
>  .../devicetree/bindings/mtd/marvell-nand.txt       |  6 +++++-
>  drivers/mtd/nand/marvell_nand.c                    | 24 ++++++++++++++++++----
>  2 files changed, 25 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mtd/marvell-nand.txt b/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> index c08fb477b3c6..4ee9813bf88f 100644
> --- a/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> +++ b/Documentation/devicetree/bindings/mtd/marvell-nand.txt
> @@ -14,7 +14,11 @@ Required properties:
>  - #address-cells: shall be set to 1. Encode the NAND CS.
>  - #size-cells: shall be set to 0.
>  - interrupts: shall define the NAND controller interrupt.
> -- clocks: shall reference the NAND controller clock.
> +- clocks: shall reference the NAND controller clocks, the second one is
> +  optional but needed for the Armada 7K/8K SoCs
> +- clock-names: mandatory if there is a second clock, in this case the
> +   name must be "core" for the first clock and "reg" for the second
> +   one

Still think we should not enforce the order, and I proposed a simple
solution for that in my previous review:

	nfc->ecc_clk = devm_clk_get(&pdev->dev, "core");
	if (PTR_ERR(nfc->ecc_clk) == -ENOENT)
		nfc->ecc_clk = devm_clk_get(&pdev->dev, NULL);

	if (IS_ERR(nfc->ecc_clk))
		return PTR_ERR(nfc->ecc_clk);

>  - marvell,system-controller: Set to retrieve the syscon node that handles
>    NAND controller related registers (only required with the
>    "marvell,armada-8k-nand[-controller]" compatibles).
> diff --git a/drivers/mtd/nand/marvell_nand.c b/drivers/mtd/nand/marvell_nand.c
> index 2196f2a233d6..072e23635375 100644
> --- a/drivers/mtd/nand/marvell_nand.c
> +++ b/drivers/mtd/nand/marvell_nand.c
> @@ -321,6 +321,7 @@ struct marvell_nfc {
>  	struct device *dev;
>  	void __iomem *regs;
>  	struct clk *ecc_clk;
> +	struct clk *reg_clk;

There's a kernel-doc header describing the marvell_nfc fields, could
you add an entry for reg_clk?

>  	struct completion complete;
>  	unsigned long assigned_cs;
>  	struct list_head chips;
> @@ -2747,12 +2748,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> +	nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
> +	if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
> +		if (!IS_ERR(nfc->reg_clk)) {
> +			ret = clk_prepare_enable(nfc->reg_clk);
> +			if (ret)
> +				goto unprepare_clk;

I already suggested to move the devm_clk_get(&pdev->dev, "reg") before
the clk_prepare_enable(nfc->ecc_clk) one to simplify the error path.

> +		} else {
> +			ret = PTR_ERR(nfc->reg_clk);
> +			goto unprepare_clk;
> +		}
> +	}

So nfc->reg_clk stays assigned to -ENOENT if the clk is not present, and
clk_disable_unprepare() will manipulate an invalid pointer when called
from the error or ->remove() path.

Could be addressed/simplified with something like that:

	/*
	 * The register clk is only required on armada 8k. By assigning
	 * ->reg_clk to NULL when -ENOENT is returned, we make sure all
	 * clk_prepare_enable()/clk_disable_unprepare() calls work
	 * correctly even if the clk is missing.
	 */
	nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
	if (PTR_ERR(nfc->reg_clk) == -ENOENT)
		nfc->reg_clk = NULL;

	if (IS_ERR(nfc->reg_clk))
		return PTR_ERR(nfc->reg_clk);

	...

	ret = clk_prepare_enable(nfc->reg_clk);
	if (ret)
		goto unprepare_ecc_clk;


> +
>  	marvell_nfc_disable_int(nfc, NDCR_ALL_INT);
>  	marvell_nfc_clear_int(nfc, NDCR_ALL_INT);
>  	ret = devm_request_irq(dev, irq, marvell_nfc_isr,
>  			       0, "marvell-nfc", nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	/* Get NAND controller capabilities */
>  	if (pdev->id_entry)
> @@ -2763,22 +2776,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>  	if (!nfc->caps) {
>  		dev_err(dev, "Could not retrieve NFC caps\n");
>  		ret = -EINVAL;
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  	}
>  
>  	/* Init the controller and then probe the chips */
>  	ret = marvell_nfc_init(nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	platform_set_drvdata(pdev, nfc);
>  
>  	ret = marvell_nand_chips_init(dev, nfc);
>  	if (ret)
> -		goto unprepare_clk;
> +		goto unprepare_clk_reg;
>  
>  	return 0;
>  
> +unprepare_clk_reg:
> +	clk_disable_unprepare(nfc->reg_clk);
>  unprepare_clk:

Please rename the label (unprepare_clk -> unprepare_ecc_clk).

>  	clk_disable_unprepare(nfc->ecc_clk);
>  
> @@ -2796,6 +2811,7 @@ static int marvell_nfc_remove(struct platform_device *pdev)
>  		dma_release_channel(nfc->dma_chan);
>  	}
>  
> +	clk_disable_unprepare(nfc->reg_clk);
>  	clk_disable_unprepare(nfc->ecc_clk);
>  
>  	return 0;



-- 
Boris Brezillon, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2018-03-07 19:44 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-07 16:13 [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock Gregory CLEMENT
2018-03-07 16:13 ` Gregory CLEMENT
2018-03-07 19:44 ` Boris Brezillon [this message]
2018-03-07 19:44   ` Boris Brezillon
2018-03-07 19:44   ` Boris Brezillon
2018-03-12 16:55   ` Gregory CLEMENT
2018-03-12 16:55     ` Gregory CLEMENT
2018-03-12 16:55     ` Gregory CLEMENT
2018-03-12 19:35     ` Boris Brezillon
2018-03-12 19:35       ` Boris Brezillon
2018-03-12 19:35       ` Boris Brezillon
2018-03-13 10:29       ` Gregory CLEMENT
2018-03-13 10:29         ` Gregory CLEMENT
2018-03-13 10:29         ` Gregory CLEMENT

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180307204418.014622b8@bbrezillon \
    --to=boris.brezillon@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=antoine.tenart@bootlin.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregory.clement@bootlin.com \
    --cc=hannah@marvell.com \
    --cc=igall@marvell.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=miquel.raynal@bootlin.com \
    --cc=mw@semihalf.com \
    --cc=nadavh@marvell.com \
    --cc=omrii@marvell.com \
    --cc=robh@kernel.org \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=shadi@marvell.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.