Re: [PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-17 Thread Brian Norris
On Sat, Sep 13, 2014 at 01:23:59AM +0200, Alexandre Belloni wrote:
> From: Boris BREZILLON 
> 
> Retrieve the NFC clock to make sure it is enabled. Make that optional to 
> ensure
> compatibility with previous device trees but document it as mandatory so newer
> device trees will include it.
> 
> Signed-off-by: Boris BREZILLON 
> Signed-off-by: Alexandre Belloni 
> Acked-by: Josh Wu 
> ---
> Changes in v5:
>  - Added a proper commit log

Pushed to l2-mtd.git. Thanks!

Brian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-17 Thread Brian Norris
On Sat, Sep 13, 2014 at 01:23:59AM +0200, Alexandre Belloni wrote:
 From: Boris BREZILLON boris.brezil...@free-electrons.com
 
 Retrieve the NFC clock to make sure it is enabled. Make that optional to 
 ensure
 compatibility with previous device trees but document it as mandatory so newer
 device trees will include it.
 
 Signed-off-by: Boris BREZILLON boris.brezil...@free-electrons.com
 Signed-off-by: Alexandre Belloni alexandre.bell...@free-electrons.com
 Acked-by: Josh Wu josh...@atmel.com
 ---
 Changes in v5:
  - Added a proper commit log

Pushed to l2-mtd.git. Thanks!

Brian
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-13 Thread Alexandre Belloni
Hi,

On 13/09/2014 at 10:26:18 +0100, Ezequiel Garcia wrote :
> > +   nfc->clk = devm_clk_get(>dev, NULL);
> > +   if (!IS_ERR(nfc->clk)) {
> > +   ret = clk_prepare_enable(nfc->clk);
> > +   if (ret)
> > +   return ret;
> > +   } else {
> > +   dev_warn(>dev, "NFC clock missing, update your Device 
> > Tree");
> 
> Looks much better now thanks. If the clock is not really optional, you
> can consider this a firmware bug. We've used FW_BUG messages for these
> cases
> (see vim drivers/watchdog/orion_wdt.c), so you could write something like:
> 
> dev_warn(..., FW_BUG "devicetree clock missing");
> 

Yeah, I've considered using FW_WARN like Thomas suggested but I'm not
sure it really relates to device tree. Apart from x86, FW_WARN and
FW_BUG are only used on mvebu stuff ;)


-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-13 Thread Ezequiel Garcia
On 13 September 2014 00:23, Alexandre Belloni
 wrote:
> From: Boris BREZILLON 
>
> Retrieve the NFC clock to make sure it is enabled. Make that optional to 
> ensure
> compatibility with previous device trees but document it as mandatory so newer
> device trees will include it.
>
> Signed-off-by: Boris BREZILLON 
> Signed-off-by: Alexandre Belloni 
> Acked-by: Josh Wu 
> ---
> Changes in v5:
>  - Added a proper commit log
>
>  .../devicetree/bindings/mtd/atmel-nand.txt |  2 ++
>  drivers/mtd/nand/atmel_nand.c  | 25 
> ++
>  2 files changed, 27 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt 
> b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
> index c4728839d0c1..6edc3b616e98 100644
> --- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt
> +++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
> @@ -36,6 +36,7 @@ Optional properties:
>  - reg : should specify the address and size used for NFC command 
> registers,
>  NFC registers and NFC Sram. NFC Sram address and size can be 
> absent
>  if don't want to use it.
> +- clocks: phandle to the peripheral clock
>- Optional properties:
>  - atmel,write-by-sram: boolean to enable NFC write by sram.
>
> @@ -98,6 +99,7 @@ nand0: nand@4000 {
> compatible = "atmel,sama5d3-nfc";
> #address-cells = <1>;
> #size-cells = <1>;
> +   clocks = <_clk>
> reg = <
> 0x7000 0x1000   /* NFC Command Registers */
> 0xc000 0x0070   /* NFC HSMC regs */
> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> index 9c5f717bda54..d1e502f8dbd0 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -27,6 +27,7 @@
>   *
>   */
>
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -96,6 +97,8 @@ struct atmel_nfc {
> booluse_nfc_sram;
> boolwrite_by_sram;
>
> +   struct clk  *clk;
> +
> boolis_initialized;
> struct completion   comp_ready;
> struct completion   comp_cmd_done;
> @@ -2248,6 +2251,7 @@ static int atmel_nand_nfc_probe(struct platform_device 
> *pdev)
>  {
> struct atmel_nfc *nfc = _nfc;
> struct resource *nfc_cmd_regs, *nfc_hsmc_regs, *nfc_sram;
> +   int ret;
>
> nfc_cmd_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> nfc->base_cmd_regs = devm_ioremap_resource(>dev, nfc_cmd_regs);
> @@ -2279,8 +2283,28 @@ static int atmel_nand_nfc_probe(struct platform_device 
> *pdev)
> nfc_writel(nfc->hsmc_regs, IDR, 0x);
> nfc_readl(nfc->hsmc_regs, SR);  /* clear the NFC_SR */
>
> +   nfc->clk = devm_clk_get(>dev, NULL);
> +   if (!IS_ERR(nfc->clk)) {
> +   ret = clk_prepare_enable(nfc->clk);
> +   if (ret)
> +   return ret;
> +   } else {
> +   dev_warn(>dev, "NFC clock missing, update your Device 
> Tree");

Looks much better now thanks. If the clock is not really optional, you
can consider this a firmware bug. We've used FW_BUG messages for these
cases
(see vim drivers/watchdog/orion_wdt.c), so you could write something like:

dev_warn(..., FW_BUG "devicetree clock missing");

Just a suggestion.
-- 
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-13 Thread Ezequiel Garcia
On 13 September 2014 00:23, Alexandre Belloni
alexandre.bell...@free-electrons.com wrote:
 From: Boris BREZILLON boris.brezil...@free-electrons.com

 Retrieve the NFC clock to make sure it is enabled. Make that optional to 
 ensure
 compatibility with previous device trees but document it as mandatory so newer
 device trees will include it.

 Signed-off-by: Boris BREZILLON boris.brezil...@free-electrons.com
 Signed-off-by: Alexandre Belloni alexandre.bell...@free-electrons.com
 Acked-by: Josh Wu josh...@atmel.com
 ---
 Changes in v5:
  - Added a proper commit log

  .../devicetree/bindings/mtd/atmel-nand.txt |  2 ++
  drivers/mtd/nand/atmel_nand.c  | 25 
 ++
  2 files changed, 27 insertions(+)

 diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt 
 b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
 index c4728839d0c1..6edc3b616e98 100644
 --- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt
 +++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
 @@ -36,6 +36,7 @@ Optional properties:
  - reg : should specify the address and size used for NFC command 
 registers,
  NFC registers and NFC Sram. NFC Sram address and size can be 
 absent
  if don't want to use it.
 +- clocks: phandle to the peripheral clock
- Optional properties:
  - atmel,write-by-sram: boolean to enable NFC write by sram.

 @@ -98,6 +99,7 @@ nand0: nand@4000 {
 compatible = atmel,sama5d3-nfc;
 #address-cells = 1;
 #size-cells = 1;
 +   clocks = hsmc_clk
 reg = 
 0x7000 0x1000   /* NFC Command Registers */
 0xc000 0x0070   /* NFC HSMC regs */
 diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
 index 9c5f717bda54..d1e502f8dbd0 100644
 --- a/drivers/mtd/nand/atmel_nand.c
 +++ b/drivers/mtd/nand/atmel_nand.c
 @@ -27,6 +27,7 @@
   *
   */

 +#include linux/clk.h
  #include linux/dma-mapping.h
  #include linux/slab.h
  #include linux/module.h
 @@ -96,6 +97,8 @@ struct atmel_nfc {
 booluse_nfc_sram;
 boolwrite_by_sram;

 +   struct clk  *clk;
 +
 boolis_initialized;
 struct completion   comp_ready;
 struct completion   comp_cmd_done;
 @@ -2248,6 +2251,7 @@ static int atmel_nand_nfc_probe(struct platform_device 
 *pdev)
  {
 struct atmel_nfc *nfc = nand_nfc;
 struct resource *nfc_cmd_regs, *nfc_hsmc_regs, *nfc_sram;
 +   int ret;

 nfc_cmd_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 nfc-base_cmd_regs = devm_ioremap_resource(pdev-dev, nfc_cmd_regs);
 @@ -2279,8 +2283,28 @@ static int atmel_nand_nfc_probe(struct platform_device 
 *pdev)
 nfc_writel(nfc-hsmc_regs, IDR, 0x);
 nfc_readl(nfc-hsmc_regs, SR);  /* clear the NFC_SR */

 +   nfc-clk = devm_clk_get(pdev-dev, NULL);
 +   if (!IS_ERR(nfc-clk)) {
 +   ret = clk_prepare_enable(nfc-clk);
 +   if (ret)
 +   return ret;
 +   } else {
 +   dev_warn(pdev-dev, NFC clock missing, update your Device 
 Tree);

Looks much better now thanks. If the clock is not really optional, you
can consider this a firmware bug. We've used FW_BUG messages for these
cases
(see vim drivers/watchdog/orion_wdt.c), so you could write something like:

dev_warn(..., FW_BUG devicetree clock missing);

Just a suggestion.
-- 
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-13 Thread Alexandre Belloni
Hi,

On 13/09/2014 at 10:26:18 +0100, Ezequiel Garcia wrote :
  +   nfc-clk = devm_clk_get(pdev-dev, NULL);
  +   if (!IS_ERR(nfc-clk)) {
  +   ret = clk_prepare_enable(nfc-clk);
  +   if (ret)
  +   return ret;
  +   } else {
  +   dev_warn(pdev-dev, NFC clock missing, update your Device 
  Tree);
 
 Looks much better now thanks. If the clock is not really optional, you
 can consider this a firmware bug. We've used FW_BUG messages for these
 cases
 (see vim drivers/watchdog/orion_wdt.c), so you could write something like:
 
 dev_warn(..., FW_BUG devicetree clock missing);
 

Yeah, I've considered using FW_WARN like Thomas suggested but I'm not
sure it really relates to device tree. Apart from x86, FW_WARN and
FW_BUG are only used on mvebu stuff ;)


-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-12 Thread Alexandre Belloni
From: Boris BREZILLON 

Retrieve the NFC clock to make sure it is enabled. Make that optional to ensure
compatibility with previous device trees but document it as mandatory so newer
device trees will include it.

Signed-off-by: Boris BREZILLON 
Signed-off-by: Alexandre Belloni 
Acked-by: Josh Wu 
---
Changes in v5:
 - Added a proper commit log

 .../devicetree/bindings/mtd/atmel-nand.txt |  2 ++
 drivers/mtd/nand/atmel_nand.c  | 25 ++
 2 files changed, 27 insertions(+)

diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt 
b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
index c4728839d0c1..6edc3b616e98 100644
--- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
@@ -36,6 +36,7 @@ Optional properties:
 - reg : should specify the address and size used for NFC command registers,
 NFC registers and NFC Sram. NFC Sram address and size can be absent
 if don't want to use it.
+- clocks: phandle to the peripheral clock
   - Optional properties:
 - atmel,write-by-sram: boolean to enable NFC write by sram.
 
@@ -98,6 +99,7 @@ nand0: nand@4000 {
compatible = "atmel,sama5d3-nfc";
#address-cells = <1>;
#size-cells = <1>;
+   clocks = <_clk>
reg = <
0x7000 0x1000   /* NFC Command Registers */
0xc000 0x0070   /* NFC HSMC regs */
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index 9c5f717bda54..d1e502f8dbd0 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -27,6 +27,7 @@
  *
  */
 
+#include 
 #include 
 #include 
 #include 
@@ -96,6 +97,8 @@ struct atmel_nfc {
booluse_nfc_sram;
boolwrite_by_sram;
 
+   struct clk  *clk;
+
boolis_initialized;
struct completion   comp_ready;
struct completion   comp_cmd_done;
@@ -2248,6 +2251,7 @@ static int atmel_nand_nfc_probe(struct platform_device 
*pdev)
 {
struct atmel_nfc *nfc = _nfc;
struct resource *nfc_cmd_regs, *nfc_hsmc_regs, *nfc_sram;
+   int ret;
 
nfc_cmd_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
nfc->base_cmd_regs = devm_ioremap_resource(>dev, nfc_cmd_regs);
@@ -2279,8 +2283,28 @@ static int atmel_nand_nfc_probe(struct platform_device 
*pdev)
nfc_writel(nfc->hsmc_regs, IDR, 0x);
nfc_readl(nfc->hsmc_regs, SR);  /* clear the NFC_SR */
 
+   nfc->clk = devm_clk_get(>dev, NULL);
+   if (!IS_ERR(nfc->clk)) {
+   ret = clk_prepare_enable(nfc->clk);
+   if (ret)
+   return ret;
+   } else {
+   dev_warn(>dev, "NFC clock missing, update your Device 
Tree");
+   }
+
nfc->is_initialized = true;
dev_info(>dev, "NFC is probed.\n");
+
+   return 0;
+}
+
+static int atmel_nand_nfc_remove(struct platform_device *pdev)
+{
+   struct atmel_nfc *nfc = _nfc;
+
+   if (!IS_ERR(nfc->clk))
+   clk_disable_unprepare(nfc->clk);
+
return 0;
 }
 
@@ -2297,6 +2321,7 @@ static struct platform_driver atmel_nand_nfc_driver = {
.of_match_table = of_match_ptr(atmel_nand_nfc_match),
},
.probe = atmel_nand_nfc_probe,
+   .remove = atmel_nand_nfc_remove,
 };
 
 static struct platform_driver atmel_nand_driver = {
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHv5] mtd: nand: atmel_nand: retrieve NFC clock

2014-09-12 Thread Alexandre Belloni
From: Boris BREZILLON boris.brezil...@free-electrons.com

Retrieve the NFC clock to make sure it is enabled. Make that optional to ensure
compatibility with previous device trees but document it as mandatory so newer
device trees will include it.

Signed-off-by: Boris BREZILLON boris.brezil...@free-electrons.com
Signed-off-by: Alexandre Belloni alexandre.bell...@free-electrons.com
Acked-by: Josh Wu josh...@atmel.com
---
Changes in v5:
 - Added a proper commit log

 .../devicetree/bindings/mtd/atmel-nand.txt |  2 ++
 drivers/mtd/nand/atmel_nand.c  | 25 ++
 2 files changed, 27 insertions(+)

diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt 
b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
index c4728839d0c1..6edc3b616e98 100644
--- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt
@@ -36,6 +36,7 @@ Optional properties:
 - reg : should specify the address and size used for NFC command registers,
 NFC registers and NFC Sram. NFC Sram address and size can be absent
 if don't want to use it.
+- clocks: phandle to the peripheral clock
   - Optional properties:
 - atmel,write-by-sram: boolean to enable NFC write by sram.
 
@@ -98,6 +99,7 @@ nand0: nand@4000 {
compatible = atmel,sama5d3-nfc;
#address-cells = 1;
#size-cells = 1;
+   clocks = hsmc_clk
reg = 
0x7000 0x1000   /* NFC Command Registers */
0xc000 0x0070   /* NFC HSMC regs */
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index 9c5f717bda54..d1e502f8dbd0 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -27,6 +27,7 @@
  *
  */
 
+#include linux/clk.h
 #include linux/dma-mapping.h
 #include linux/slab.h
 #include linux/module.h
@@ -96,6 +97,8 @@ struct atmel_nfc {
booluse_nfc_sram;
boolwrite_by_sram;
 
+   struct clk  *clk;
+
boolis_initialized;
struct completion   comp_ready;
struct completion   comp_cmd_done;
@@ -2248,6 +2251,7 @@ static int atmel_nand_nfc_probe(struct platform_device 
*pdev)
 {
struct atmel_nfc *nfc = nand_nfc;
struct resource *nfc_cmd_regs, *nfc_hsmc_regs, *nfc_sram;
+   int ret;
 
nfc_cmd_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
nfc-base_cmd_regs = devm_ioremap_resource(pdev-dev, nfc_cmd_regs);
@@ -2279,8 +2283,28 @@ static int atmel_nand_nfc_probe(struct platform_device 
*pdev)
nfc_writel(nfc-hsmc_regs, IDR, 0x);
nfc_readl(nfc-hsmc_regs, SR);  /* clear the NFC_SR */
 
+   nfc-clk = devm_clk_get(pdev-dev, NULL);
+   if (!IS_ERR(nfc-clk)) {
+   ret = clk_prepare_enable(nfc-clk);
+   if (ret)
+   return ret;
+   } else {
+   dev_warn(pdev-dev, NFC clock missing, update your Device 
Tree);
+   }
+
nfc-is_initialized = true;
dev_info(pdev-dev, NFC is probed.\n);
+
+   return 0;
+}
+
+static int atmel_nand_nfc_remove(struct platform_device *pdev)
+{
+   struct atmel_nfc *nfc = nand_nfc;
+
+   if (!IS_ERR(nfc-clk))
+   clk_disable_unprepare(nfc-clk);
+
return 0;
 }
 
@@ -2297,6 +2321,7 @@ static struct platform_driver atmel_nand_nfc_driver = {
.of_match_table = of_match_ptr(atmel_nand_nfc_match),
},
.probe = atmel_nand_nfc_probe,
+   .remove = atmel_nand_nfc_remove,
 };
 
 static struct platform_driver atmel_nand_driver = {
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/