All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-kernel@vger.kernel.org,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Neil Armstrong <narmstrong@baylibre.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH] mfd: qcom_rpm: parametrize also ack selector size
Date: Tue, 28 Jun 2016 16:35:36 +0100	[thread overview]
Message-ID: <20160628153536.GE29166@dell> (raw)
In-Reply-To: <1466576837-21995-1-git-send-email-linus.walleij@linaro.org>

On Wed, 22 Jun 2016, Linus Walleij wrote:

> The RPM has two sets of selectors (IPC bit fields): request and
> acknowledge. Apparently, some models use 4*32 bit words for select
> and some use 7*32 bit words for request, but all use 7*32 words
> for acknowledge bits.
> 
> So apparently you can on the models with requests of 4*32 select
> bits send 4*32 messages and get 7*32 different replies, so on ACK
> interrupt, 7*32 bit words need to be read. This is how the vendor
> code apparently works.
> 
> Cc: stable@vger.kernel.org
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Björn Andersson <bjorn.andersson@linaro.org>
> Reported-by: Stephen Boyd <sboyd@codeaurora.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> Lee: this patch goes on top of the previous patch I sent:
> "mfd: qcom_rpm: fix offset error for msm8660"
> You can also squash them, if you prefer.
> ---
>  drivers/mfd/qcom_rpm.c | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)

Applied, thanks.

> diff --git a/drivers/mfd/qcom_rpm.c b/drivers/mfd/qcom_rpm.c
> index 9364f88264e5..880d4699bcb0 100644
> --- a/drivers/mfd/qcom_rpm.c
> +++ b/drivers/mfd/qcom_rpm.c
> @@ -39,7 +39,8 @@ struct qcom_rpm_data {
>  	unsigned int req_sel_off;
>  	unsigned int ack_ctx_off;
>  	unsigned int ack_sel_off;
> -	unsigned int sel_size;
> +	unsigned int req_sel_size;
> +	unsigned int ack_sel_size;
>  };
>  
>  struct qcom_rpm {
> @@ -162,7 +163,8 @@ static const struct qcom_rpm_data apq8064_template = {
>  	.req_sel_off = 11,
>  	.ack_ctx_off = 15,
>  	.ack_sel_off = 23,
> -	.sel_size = 4,
> +	.req_sel_size = 4,
> +	.ack_sel_size = 7,
>  };
>  
>  static const struct qcom_rpm_resource msm8660_rpm_resource_table[] = {
> @@ -250,7 +252,8 @@ static const struct qcom_rpm_data msm8660_template = {
>  	.req_sel_off = 11,
>  	.ack_ctx_off = 19,
>  	.ack_sel_off = 27,
> -	.sel_size = 7,
> +	.req_sel_size = 7,
> +	.ack_sel_size = 7,
>  };
>  
>  static const struct qcom_rpm_resource msm8960_rpm_resource_table[] = {
> @@ -337,7 +340,8 @@ static const struct qcom_rpm_data msm8960_template = {
>  	.req_sel_off = 11,
>  	.ack_ctx_off = 15,
>  	.ack_sel_off = 23,
> -	.sel_size = 4,
> +	.req_sel_size = 4,
> +	.ack_sel_size = 7,
>  };
>  
>  static const struct qcom_rpm_resource ipq806x_rpm_resource_table[] = {
> @@ -382,7 +386,8 @@ static const struct qcom_rpm_data ipq806x_template = {
>  	.req_sel_off = 11,
>  	.ack_ctx_off = 15,
>  	.ack_sel_off = 23,
> -	.sel_size = 4,
> +	.req_sel_size = 4,
> +	.ack_sel_size = 7,
>  };
>  
>  static const struct of_device_id qcom_rpm_of_match[] = {
> @@ -419,7 +424,7 @@ int qcom_rpm_write(struct qcom_rpm *rpm,
>  		writel_relaxed(buf[i], RPM_REQ_REG(rpm, res->target_id + i));
>  
>  	bitmap_set((unsigned long *)sel_mask, res->select_id, 1);
> -	for (i = 0; i < rpm->data->sel_size; i++) {
> +	for (i = 0; i < rpm->data->req_sel_size; i++) {
>  		writel_relaxed(sel_mask[i],
>  			       RPM_CTRL_REG(rpm, rpm->data->req_sel_off + i));
>  	}
> @@ -448,7 +453,7 @@ static irqreturn_t qcom_rpm_ack_interrupt(int irq, void *dev)
>  	int i;
>  
>  	ack = readl_relaxed(RPM_CTRL_REG(rpm, rpm->data->ack_ctx_off));
> -	for (i = 0; i < rpm->data->sel_size; i++)
> +	for (i = 0; i < rpm->data->ack_sel_size; i++)
>  		writel_relaxed(0,
>  			RPM_CTRL_REG(rpm, rpm->data->ack_sel_off + i));
>  	writel(0, RPM_CTRL_REG(rpm, rpm->data->ack_ctx_off));

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

      parent reply	other threads:[~2016-06-28 15:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-22  6:27 [PATCH] mfd: qcom_rpm: parametrize also ack selector size Linus Walleij
2016-06-22 16:09 ` Bjorn Andersson
2016-06-22 16:09   ` Bjorn Andersson
2016-06-28 15:35 ` Lee Jones [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=20160628153536.GE29166@dell \
    --to=lee.jones@linaro.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=narmstrong@baylibre.com \
    --cc=sboyd@codeaurora.org \
    --cc=stable@vger.kernel.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.