NAND controller has a reference clock but the driver doesn't use it.
Add a struct clock in the struct davinci_nand_info so it can be used
to compute timings.
Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
---
drivers/mtd/nand/raw/davinci_nand.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/mtd/nand/raw/davinci_nand.c b/drivers/mtd/nand/raw/davinci_nand.c
index 3c0efbdd789e..11dc30c29957 100644
--- a/drivers/mtd/nand/raw/davinci_nand.c
+++ b/drivers/mtd/nand/raw/davinci_nand.c
@@ -10,6 +10,7 @@
* Dirk Behme <Dirk.Behme@gmail.com>
*/
+#include <linux/clk.h>
#include <linux/err.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
@@ -117,6 +118,8 @@ struct davinci_nand_info {
uint32_t mask_cle;
uint32_t core_chipsel;
+
+ struct clk *clk;
};
static DEFINE_SPINLOCK(davinci_nand_lock);
@@ -822,6 +825,12 @@ static int nand_davinci_probe(struct platform_device *pdev)
return -EADDRNOTAVAIL;
}
+ info->clk = devm_clk_get(&pdev->dev, "aemif");
+ if (IS_ERR(info->clk)) {
+ dev_err(&pdev->dev, "failed to get clock %ld", PTR_ERR(info->clk));
+ return PTR_ERR(info->clk);
+ }
+
info->pdev = pdev;
info->base = base;
info->vaddr = vaddr;
--
2.47.0
On 30/10/2024 11:47, Bastien Curutchet wrote:
> NAND controller has a reference clock but the driver doesn't use it.
>
> Add a struct clock in the struct davinci_nand_info so it can be used
> to compute timings.
>
> Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
> ---
> drivers/mtd/nand/raw/davinci_nand.c | 9 +++++++++
Where are the bindings?
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/mtd/nand/raw/davinci_nand.c b/drivers/mtd/nand/raw/davinci_nand.c
> index 3c0efbdd789e..11dc30c29957 100644
> --- a/drivers/mtd/nand/raw/davinci_nand.c
> +++ b/drivers/mtd/nand/raw/davinci_nand.c
> @@ -10,6 +10,7 @@
> * Dirk Behme <Dirk.Behme@gmail.com>
> */
>
> +#include <linux/clk.h>
> #include <linux/err.h>
> #include <linux/iopoll.h>
> #include <linux/kernel.h>
> @@ -117,6 +118,8 @@ struct davinci_nand_info {
> uint32_t mask_cle;
>
> uint32_t core_chipsel;
> +
> + struct clk *clk;
> };
>
> static DEFINE_SPINLOCK(davinci_nand_lock);
> @@ -822,6 +825,12 @@ static int nand_davinci_probe(struct platform_device *pdev)
> return -EADDRNOTAVAIL;
> }
>
> + info->clk = devm_clk_get(&pdev->dev, "aemif");
> + if (IS_ERR(info->clk)) {
> + dev_err(&pdev->dev, "failed to get clock %ld", PTR_ERR(info->clk));
Syntax is return dev_err_probe.
Best regards,
Krzysztof
Hi Krzysztof,
On 10/30/24 12:17 PM, Krzysztof Kozlowski wrote:
> On 30/10/2024 11:47, Bastien Curutchet wrote:
>> NAND controller has a reference clock but the driver doesn't use it.
>>
>> Add a struct clock in the struct davinci_nand_info so it can be used
>> to compute timings.
>>
>> Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
>> ---
>> drivers/mtd/nand/raw/davinci_nand.c | 9 +++++++++
>
> Where are the bindings?
>
The NAND controller bindings are in
Documentation/devicetree/bindings/mtd/davinci-nand.txt but this clock is
defined in the AEMIF bindings in
Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/mtd/nand/raw/davinci_nand.c b/drivers/mtd/nand/raw/davinci_nand.c
>> index 3c0efbdd789e..11dc30c29957 100644
>> --- a/drivers/mtd/nand/raw/davinci_nand.c
>> +++ b/drivers/mtd/nand/raw/davinci_nand.c
>> @@ -10,6 +10,7 @@
>> * Dirk Behme <Dirk.Behme@gmail.com>
>> */
>>
>> +#include <linux/clk.h>
>> #include <linux/err.h>
>> #include <linux/iopoll.h>
>> #include <linux/kernel.h>
>> @@ -117,6 +118,8 @@ struct davinci_nand_info {
>> uint32_t mask_cle;
>>
>> uint32_t core_chipsel;
>> +
>> + struct clk *clk;
>> };
>>
>> static DEFINE_SPINLOCK(davinci_nand_lock);
>> @@ -822,6 +825,12 @@ static int nand_davinci_probe(struct platform_device *pdev)
>> return -EADDRNOTAVAIL;
>> }
>>
>> + info->clk = devm_clk_get(&pdev->dev, "aemif");
>> + if (IS_ERR(info->clk)) {
>> + dev_err(&pdev->dev, "failed to get clock %ld", PTR_ERR(info->clk));
>
> Syntax is return dev_err_probe.
>
Ok, I'll correct this in V2
Best regards,
Bastien
On 30/10/2024 13:20, Bastien Curutchet wrote: > Hi Krzysztof, > > On 10/30/24 12:17 PM, Krzysztof Kozlowski wrote: >> On 30/10/2024 11:47, Bastien Curutchet wrote: >>> NAND controller has a reference clock but the driver doesn't use it. >>> >>> Add a struct clock in the struct davinci_nand_info so it can be used >>> to compute timings. >>> >>> Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com> >>> --- >>> drivers/mtd/nand/raw/davinci_nand.c | 9 +++++++++ >> >> Where are the bindings? >> > > The NAND controller bindings are in > Documentation/devicetree/bindings/mtd/davinci-nand.txt but this clock is > defined in the AEMIF bindings in > Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt Mention this in commit msg so you get one reviewer question less... Best regards, Krzysztof
© 2016 - 2026 Red Hat, Inc.