All of lore.kernel.org
 help / color / mirror / Atom feed
From: Niklas Cassel <niklas.cassel@linaro.org>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Cc: bgolaszewski@baylibre.com, viresh.kumar@linaro.org,
	linux-kernel@vger.kernel.org
Subject: Re: [regression 4.20-rc1, bisected] cpufreq fails to register on db820c
Date: Tue, 6 Nov 2018 16:26:04 +0100	[thread overview]
Message-ID: <20181106152604.GA27108@centauri.lan> (raw)
In-Reply-To: <941ed402-4259-a9aa-b0d3-10e76e4ac946@linaro.org>

On Tue, Nov 06, 2018 at 02:37:57PM +0000, Srinivas Kandagatla wrote:
> Hi Niklas,
> 
> thanks for reporting this..
> 
> I found the issue, DT support seems to be totally broken in NVMEM.
> Will send this fix once you can confirm it works for you!
> 
> Can you try this patch!
> ---------------------->cut<--------------------------
> 
> Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Date:   Tue Nov 6 14:32:30 2018 +0000
> 
>     nvmem: core: fix of_nvmem_cell_get()
> 
>     NVMEM DT support seems to be totally broken after
>     e888d445ac33 ("nvmem: resolve cells from DT at registration time")
>     Fix this!
> 
>     Fixes: e888d445ac33 ("nvmem: resolve cells from DT at registration
> time")
>     Reported-by: Niklas Cassel <niklas.cassel@linaro.org>
>     Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> 
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index 9b18ce90f907..7ae8072f56ae 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -44,6 +44,7 @@ struct nvmem_cell {
>         int                     bytes;
>         int                     bit_offset;
>         int                     nbits;
> +       struct device_node      *np;
>         struct nvmem_device     *nvmem;
>         struct list_head        node;
>  };
> @@ -530,6 +531,7 @@ static int nvmem_add_cells_from_of(struct nvmem_device
> *nvmem)
>                         return -ENOMEM;
> 
>                 cell->nvmem = nvmem;
> +               cell->np = child;
>                 cell->offset = be32_to_cpup(addr++);
>                 cell->bytes = be32_to_cpup(addr);
>                 cell->name = kasprintf(GFP_KERNEL, "%pOFn", child);
> @@ -960,14 +962,13 @@ nvmem_cell_get_from_lookup(struct device *dev, const
> char *con_id)
> 
>  #if IS_ENABLED(CONFIG_OF)
>  static struct nvmem_cell *
> -nvmem_find_cell_by_index(struct nvmem_device *nvmem, int index)
> +nvmem_find_cell_by_node(struct nvmem_device *nvmem, struct device_node *np)
>  {
>         struct nvmem_cell *cell = NULL;
> -       int i = 0;
> 
>         mutex_lock(&nvmem_mutex);
>         list_for_each_entry(cell, &nvmem->cells, node) {
> -               if (index == i++)
> +               if (np == cell->np)
>                         break;
>         }
>         mutex_unlock(&nvmem_mutex);
> @@ -1001,7 +1002,6 @@ struct nvmem_cell *of_nvmem_cell_get(struct
> device_node *np, const char *id)
>         cell_np = of_parse_phandle(np, "nvmem-cells", index);
>         if (!cell_np)
>                 return ERR_PTR(-EINVAL);
> -
>         nvmem_np = of_get_next_parent(cell_np);
>         if (!nvmem_np)
>                 return ERR_PTR(-EINVAL);
> @@ -1011,7 +1011,7 @@ struct nvmem_cell *of_nvmem_cell_get(struct
> device_node *np, const char *id)
>         if (IS_ERR(nvmem))
>                 return ERR_CAST(nvmem);
> 
> -       cell = nvmem_find_cell_by_index(nvmem, index);
> +       cell = nvmem_find_cell_by_node(nvmem, cell_np);
>         if (!cell) {
>                 __nvmem_device_put(nvmem);
>                 return ERR_PTR(-ENOENT);
> 

Tested-by: Niklas Cassel <niklas.cassel@linaro.org>

      reply	other threads:[~2018-11-06 15:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-06  1:29 [regression 4.20-rc1, bisected] cpufreq fails to register on db820c Niklas Cassel
2018-11-06 14:37 ` Srinivas Kandagatla
2018-11-06 15:26   ` Niklas Cassel [this message]

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=20181106152604.GA27108@centauri.lan \
    --to=niklas.cassel@linaro.org \
    --cc=bgolaszewski@baylibre.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=viresh.kumar@linaro.org \
    /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.