All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanimir Varbanov <stanimir.varbanov@linaro.org>
To: Bjorn Andersson <bjorn.andersson@linaro.org>,
	Stanimir Varbanov <stanimir.varbanov@linaro.org>
Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-media@vger.kernel.org,
	Elliot Berman <eberman@codeaurora.org>,
	Andy Gross <agross@kernel.org>
Subject: Re: [PATCH v2 2/2] venus: firmware: Set virtual address ranges
Date: Wed, 9 Sep 2020 01:47:43 +0300	[thread overview]
Message-ID: <83573727-3cf1-27bc-f13e-d81657d16327@linaro.org> (raw)
In-Reply-To: <20200908143954.GK3715@yoga>



On 9/8/20 5:39 PM, Bjorn Andersson wrote:
> On Mon 17 Aug 03:27 CDT 2020, Stanimir Varbanov wrote:
> 
>> In order to boot some of the new Venus firmware versions TZ call to set
>> virtual address ranges is needed. Add virtual address ranges for CP and
>> CP_NONPIX in resource structure and use them when loading and booting
>> the firmware on remote processor.
>>
>> Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
>> ---
>>  drivers/media/platform/qcom/venus/core.c     |  4 ++++
>>  drivers/media/platform/qcom/venus/core.h     |  4 ++++
>>  drivers/media/platform/qcom/venus/firmware.c | 18 +++++++++++++++++-
>>  3 files changed, 25 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
>> index 203c6538044f..5f8f7b72731c 100644
>> --- a/drivers/media/platform/qcom/venus/core.c
>> +++ b/drivers/media/platform/qcom/venus/core.c
>> @@ -527,6 +527,10 @@ static const struct venus_resources sdm845_res_v2 = {
>>  	.vmem_size = 0,
>>  	.vmem_addr = 0,
>>  	.dma_mask = 0xe0000000 - 1,
>> +	.cp_start = 0,
>> +	.cp_size = 0x70800000,
>> +	.cp_nonpixel_start = 0x1000000,
>> +	.cp_nonpixel_size = 0x24800000,
>>  	.fwname = "qcom/venus-5.2/venus.mdt",
>>  };
>>  
>> diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platform/qcom/venus/core.h
>> index 7118612673c9..8c88516e4694 100644
>> --- a/drivers/media/platform/qcom/venus/core.h
>> +++ b/drivers/media/platform/qcom/venus/core.h
>> @@ -68,6 +68,10 @@ struct venus_resources {
>>  	unsigned int vmem_id;
>>  	u32 vmem_size;
>>  	u32 vmem_addr;
>> +	u32 cp_start;
>> +	u32 cp_size;
>> +	u32 cp_nonpixel_start;
>> +	u32 cp_nonpixel_size;
>>  	const char *fwname;
>>  };
>>  
>> diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c
>> index 8801a6a7543d..ac906ffc608f 100644
>> --- a/drivers/media/platform/qcom/venus/firmware.c
>> +++ b/drivers/media/platform/qcom/venus/firmware.c
>> @@ -181,6 +181,7 @@ static int venus_shutdown_no_tz(struct venus_core *core)
>>  int venus_boot(struct venus_core *core)
>>  {
>>  	struct device *dev = core->dev;
>> +	const struct venus_resources *res = core->res;
>>  	phys_addr_t mem_phys;
>>  	size_t mem_size;
>>  	int ret;
>> @@ -200,7 +201,22 @@ int venus_boot(struct venus_core *core)
>>  	else
>>  		ret = venus_boot_no_tz(core, mem_phys, mem_size);
>>  
>> -	return ret;
>> +	if (ret)
>> +		return ret;
>> +
>> +	if (core->use_tz && res->cp_size) {
>> +		ret = qcom_scm_mem_protect_video_var(res->cp_start,
>> +						     res->cp_size,
>> +						     res->cp_nonpixel_start,
>> +						     res->cp_nonpixel_size);
>> +		if (ret) {
>> +			dev_err(dev, "set virtual address ranges fail (%d)\n",
>> +				ret);
>> +			return ret;
> 
> Afaict venus_probe() will tear down clocks and power of the now running
> Venus core when you return an error here. Isn't it necessary to stop the
> core here as well?

I guess by "stop the core" you mean a call to qcom_scm_pas_shutdown() ?
If so, I think it makes sense.

-- 
regards,
Stan

      reply	other threads:[~2020-09-08 22:47 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-17  8:27 [PATCH v2 0/2] Venus - fix firmware load failure Stanimir Varbanov
2020-08-17  8:27 ` [PATCH v2 1/2] firmware: qcom_scm: Add memory protect virtual address ranges Stanimir Varbanov
2020-08-18 18:01   ` Elliot Berman
2020-09-08 14:40   ` Bjorn Andersson
2020-08-17  8:27 ` [PATCH v2 2/2] venus: firmware: Set " Stanimir Varbanov
2020-09-08 14:39   ` Bjorn Andersson
2020-09-08 22:47     ` Stanimir Varbanov [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=83573727-3cf1-27bc-f13e-d81657d16327@linaro.org \
    --to=stanimir.varbanov@linaro.org \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=eberman@codeaurora.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@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.