All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2] accel/ivpu: Disable PLL after VPU IP reset during FLR
Date: Mon, 22 Jan 2024 13:31:05 +0100	[thread overview]
Message-ID: <be68fb6e-c41a-4aa9-9f89-455fbe339582@linux.intel.com> (raw)
In-Reply-To: <20231024165353.761507-1-stanislaw.gruszka@linux.intel.com>

Applied to drm-misc-fixes

On 24.10.2023 18:53, Stanislaw Gruszka wrote:
> From: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
> 
> IP reset has to followed by ivpu_pll_disable() to properly enter
> reset state.
> 
> Fixes: 828d63042aec ("accel/ivpu: Don't enter d0i3 during FLR")
> Cc: stable@vger.kernel.org
> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
> Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
> ---
> v2: use ivpu_hw_37xx_ip_reset() in ivpu_hw_37xx_power_up()
> 
>  drivers/accel/ivpu/ivpu_hw_37xx.c | 23 ++++++++++++++++++++---
>  drivers/accel/ivpu/ivpu_hw_40xx.c | 23 ++++++++++++++++++++---
>  2 files changed, 40 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/accel/ivpu/ivpu_hw_37xx.c b/drivers/accel/ivpu/ivpu_hw_37xx.c
> index 5c0246b9e522..56b53833ede2 100644
> --- a/drivers/accel/ivpu/ivpu_hw_37xx.c
> +++ b/drivers/accel/ivpu/ivpu_hw_37xx.c
> @@ -598,7 +598,7 @@ static int ivpu_hw_37xx_info_init(struct ivpu_device *vdev)
>  	return 0;
>  }
>  
> -static int ivpu_hw_37xx_reset(struct ivpu_device *vdev)
> +static int ivpu_hw_37xx_ip_reset(struct ivpu_device *vdev)
>  {
>  	int ret;
>  	u32 val;
> @@ -623,6 +623,23 @@ static int ivpu_hw_37xx_reset(struct ivpu_device *vdev)
>  	return ret;
>  }
>  
> +static int ivpu_hw_37xx_reset(struct ivpu_device *vdev)
> +{
> +	int ret = 0;
> +
> +	if (ivpu_hw_37xx_ip_reset(vdev)) {
> +		ivpu_err(vdev, "Failed to reset VPU IP\n");
> +		ret = -EIO;
> +	}
> +
> +	if (ivpu_pll_disable(vdev)) {
> +		ivpu_err(vdev, "Failed to disable PLL\n");
> +		ret = -EIO;
> +	}
> +
> +	return ret;
> +}
> +
>  static int ivpu_hw_37xx_d0i3_enable(struct ivpu_device *vdev)
>  {
>  	int ret;
> @@ -651,7 +668,7 @@ static int ivpu_hw_37xx_power_up(struct ivpu_device *vdev)
>  {
>  	int ret;
>  
> -	ret = ivpu_hw_37xx_reset(vdev);
> +	ret = ivpu_hw_37xx_ip_reset(vdev);
>  	if (ret)
>  		ivpu_warn(vdev, "Failed to reset HW: %d\n", ret);
>  
> @@ -722,7 +739,7 @@ static int ivpu_hw_37xx_power_down(struct ivpu_device *vdev)
>  {
>  	int ret = 0;
>  
> -	if (!ivpu_hw_37xx_is_idle(vdev) && ivpu_hw_37xx_reset(vdev))
> +	if (!ivpu_hw_37xx_is_idle(vdev) && ivpu_hw_37xx_ip_reset(vdev))
>  		ivpu_err(vdev, "Failed to reset the VPU\n");
>  
>  	if (ivpu_pll_disable(vdev)) {
> diff --git a/drivers/accel/ivpu/ivpu_hw_40xx.c b/drivers/accel/ivpu/ivpu_hw_40xx.c
> index e691c49c9841..b25d02dc541b 100644
> --- a/drivers/accel/ivpu/ivpu_hw_40xx.c
> +++ b/drivers/accel/ivpu/ivpu_hw_40xx.c
> @@ -742,7 +742,7 @@ static int ivpu_hw_40xx_info_init(struct ivpu_device *vdev)
>  	return 0;
>  }
>  
> -static int ivpu_hw_40xx_reset(struct ivpu_device *vdev)
> +static int ivpu_hw_40xx_ip_reset(struct ivpu_device *vdev)
>  {
>  	int ret;
>  	u32 val;
> @@ -764,6 +764,23 @@ static int ivpu_hw_40xx_reset(struct ivpu_device *vdev)
>  	return ret;
>  }
>  
> +static int ivpu_hw_40xx_reset(struct ivpu_device *vdev)
> +{
> +	int ret = 0;
> +
> +	if (ivpu_hw_40xx_ip_reset(vdev)) {
> +		ivpu_err(vdev, "Failed to reset VPU IP\n");
> +		ret = -EIO;
> +	}
> +
> +	if (ivpu_pll_disable(vdev)) {
> +		ivpu_err(vdev, "Failed to disable PLL\n");
> +		ret = -EIO;
> +	}
> +
> +	return ret;
> +}
> +
>  static int ivpu_hw_40xx_d0i3_enable(struct ivpu_device *vdev)
>  {
>  	int ret;
> @@ -824,7 +841,7 @@ static int ivpu_hw_40xx_power_up(struct ivpu_device *vdev)
>  {
>  	int ret;
>  
> -	ret = ivpu_hw_40xx_reset(vdev);
> +	ret = ivpu_hw_40xx_ip_reset(vdev);
>  	if (ret) {
>  		ivpu_err(vdev, "Failed to reset HW: %d\n", ret);
>  		return ret;
> @@ -902,7 +919,7 @@ static int ivpu_hw_40xx_power_down(struct ivpu_device *vdev)
>  {
>  	int ret = 0;
>  
> -	if (!ivpu_hw_40xx_is_idle(vdev) && ivpu_hw_40xx_reset(vdev))
> +	if (!ivpu_hw_40xx_is_idle(vdev) && ivpu_hw_40xx_ip_reset(vdev))
>  		ivpu_warn(vdev, "Failed to reset the VPU\n");
>  
>  	if (ivpu_pll_disable(vdev)) {

      reply	other threads:[~2024-01-22 12:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-24 16:53 [PATCH v2] accel/ivpu: Disable PLL after VPU IP reset during FLR Stanislaw Gruszka
2024-01-22 12:31 ` Jacek Lawrynowicz [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=be68fb6e-c41a-4aa9-9f89-455fbe339582@linux.intel.com \
    --to=jacek.lawrynowicz@linux.intel.com \
    --cc=dri-devel@lists.freedesktop.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.