Re: [PATCH v2] media: intel/ipu6: remove buttress ish structure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sakari and Stanislaw,

On 11/1/24 3:46 PM, Sakari Ailus wrote:
> Hi Bingbu, Stanislaw,
> 
> On Fri, Nov 01, 2024 at 12:26:52PM +0800, Bingbu Cao wrote:
>>
>> On 11/1/24 12:22 PM, Bingbu Cao wrote:
>>> Stanislaw,
>>>
>>> Thanks for the patch, this is what I intended to do.
>>>
>>> On 10/31/24 9:06 PM, Stanislaw Gruszka wrote:
>>>> The buttress ipc ish structure is not effectively used on IPU6 - data
>>>> is nullified on init. Remove it to cleanup the code a bit.
>>>>
>>>> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@xxxxxxxxxxxxxxx>
>>>> ---
>>>> v2: fix formatting: use media: prefix in topic and white space alignment
>>>> to match open parenthesis
>>>>
>>>>  drivers/media/pci/intel/ipu6/ipu6-buttress.c | 27 ++++++--------------
>>>>  drivers/media/pci/intel/ipu6/ipu6-buttress.h |  6 -----
>>>>  2 files changed, 8 insertions(+), 25 deletions(-)
>>>>
>>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-buttress.c b/drivers/media/pci/intel/ipu6/ipu6-buttress.c
>>>> index edaa285283a1..6644fd4c3d91 100644
>>>> --- a/drivers/media/pci/intel/ipu6/ipu6-buttress.c
>>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-buttress.c
>>>> @@ -214,20 +214,17 @@ static void ipu6_buttress_ipc_recv(struct ipu6_device *isp,
>>>>  }
>>>>  
>>>>  static int ipu6_buttress_ipc_send_bulk(struct ipu6_device *isp,
>>>> -				       enum ipu6_buttress_ipc_domain ipc_domain,
>>>>  				       struct ipu6_ipc_buttress_bulk_msg *msgs,
>>>>  				       u32 size)
>>>>  {
>>>>  	unsigned long tx_timeout_jiffies, rx_timeout_jiffies;
>>>>  	unsigned int i, retry = BUTTRESS_IPC_CMD_SEND_RETRY;
>>>>  	struct ipu6_buttress *b = &isp->buttress;
>>>> -	struct ipu6_buttress_ipc *ipc;
>>>> +	struct ipu6_buttress_ipc *ipc = &b->cse;
>>>>  	u32 val;
>>>>  	int ret;
>>>>  	int tout;
>>>>  
>>>> -	ipc = ipc_domain == IPU6_BUTTRESS_IPC_CSE ? &b->cse : &b->ish;
>>>> -
>>>>  	mutex_lock(&b->ipc_mutex);
>>>>  
>>>>  	ret = ipu6_buttress_ipc_validity_open(isp, ipc);
>>>> @@ -305,7 +302,6 @@ static int ipu6_buttress_ipc_send_bulk(struct ipu6_device *isp,
>>>>  
>>>>  static int
>>>>  ipu6_buttress_ipc_send(struct ipu6_device *isp,
>>>> -		       enum ipu6_buttress_ipc_domain ipc_domain,
>>>>  		       u32 ipc_msg, u32 size, bool require_resp,
>>>>  		       u32 expected_resp)
>>>>  {
>>>> @@ -316,7 +312,7 @@ ipu6_buttress_ipc_send(struct ipu6_device *isp,
>>>>  		.expected_resp = expected_resp,
>>>>  	};
>>>>  
>>>> -	return ipu6_buttress_ipc_send_bulk(isp, ipc_domain, &msg, 1);
>>>> +	return ipu6_buttress_ipc_send_bulk(isp, &msg, 1);
>>>>  }
>>>>  
>>>>  static irqreturn_t ipu6_buttress_call_isr(struct ipu6_bus_device *adev)
>>>> @@ -386,10 +382,8 @@ irqreturn_t ipu6_buttress_isr(int irq, void *isp_ptr)
>>>>  		}
>>>>  
>>>>  		if (irq_status & BUTTRESS_ISR_IPC_FROM_ISH_IS_WAITING) {
>>>> -			dev_dbg(&isp->pdev->dev,
>>>> -				"BUTTRESS_ISR_IPC_FROM_ISH_IS_WAITING\n");
>>>> -			ipu6_buttress_ipc_recv(isp, &b->ish, &b->ish.recv_data);
>>>> -			complete(&b->ish.recv_complete);
>>>> +			dev_warn(&isp->pdev->dev,
>>>> +				 "BUTTRESS_ISR_IPC_FROM_ISH_IS_WAITING\n");
>>>
>>> I think this is a unrelated change, right?
>>
>> I mean the change from dev_dbg() to dev_warn().
> 
> We're not handling these interrupts anymore in any way.
> 
> I wonder if the ipu6_buttress_ipc_recv() call should still remain in place,
> even if we really do nothing with these. It looks like some kind of an
> acknowledgement mechanism.

I just confirm that IPC_FROM_ISH_IS_WAITING and IPC_EXEC_DONE_BY_ISH are
not valid anymore from IPU6, I think the handling here and below could be
removed.

> 
>>>
>>>>  		}
>>>>  
>>>>  		if (irq_status & BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE) {
>>>> @@ -399,9 +393,8 @@ irqreturn_t ipu6_buttress_isr(int irq, void *isp_ptr)
>>>>  		}
>>>>  
>>>>  		if (irq_status & BUTTRESS_ISR_IPC_EXEC_DONE_BY_ISH) {
>>>> -			dev_dbg(&isp->pdev->dev,
>>>> -				"BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE\n");
>>>> -			complete(&b->ish.send_complete);
>>>> +			dev_warn(&isp->pdev->dev,
>>>> +				 "BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE\n");
>>>
>>> Ditto.
>>>
>>>>  		}
>>>>  
>>>>  		if (irq_status & BUTTRESS_ISR_SAI_VIOLATION &&
>>>> @@ -655,7 +648,7 @@ int ipu6_buttress_authenticate(struct ipu6_device *isp)
>>>>  	 */
>>>>  	dev_info(&isp->pdev->dev, "Sending BOOT_LOAD to CSE\n");
>>>>  
>>>> -	ret = ipu6_buttress_ipc_send(isp, IPU6_BUTTRESS_IPC_CSE,
>>>> +	ret = ipu6_buttress_ipc_send(isp,
>>>>  				     BUTTRESS_IU2CSEDATA0_IPC_BOOT_LOAD,
>>>>  				     1, true,
>>>>  				     BUTTRESS_CSE2IUDATA0_IPC_BOOT_LOAD_DONE);
>>>> @@ -697,7 +690,7 @@ int ipu6_buttress_authenticate(struct ipu6_device *isp)
>>>>  	 * IU2CSEDB.IU2CSECMD and set IU2CSEDB.IU2CSEBUSY as
>>>>  	 */
>>>>  	dev_info(&isp->pdev->dev, "Sending AUTHENTICATE_RUN to CSE\n");
>>>> -	ret = ipu6_buttress_ipc_send(isp, IPU6_BUTTRESS_IPC_CSE,
>>>> +	ret = ipu6_buttress_ipc_send(isp,
>>>>  				     BUTTRESS_IU2CSEDATA0_IPC_AUTH_RUN,
>>>>  				     1, true,
>>>>  				     BUTTRESS_CSE2IUDATA0_IPC_AUTH_RUN_DONE);
>>>> @@ -838,9 +831,7 @@ int ipu6_buttress_init(struct ipu6_device *isp)
>>>>  	mutex_init(&b->auth_mutex);
>>>>  	mutex_init(&b->cons_mutex);
>>>>  	mutex_init(&b->ipc_mutex);
>>>> -	init_completion(&b->ish.send_complete);
>>>>  	init_completion(&b->cse.send_complete);
>>>> -	init_completion(&b->ish.recv_complete);
>>>>  	init_completion(&b->cse.recv_complete);
>>>>  
>>>>  	b->cse.nack = BUTTRESS_CSE2IUDATA0_IPC_NACK;
>>>> @@ -852,8 +843,6 @@ int ipu6_buttress_init(struct ipu6_device *isp)
>>>>  	b->cse.data0_in = BUTTRESS_REG_CSE2IUDATA0;
>>>>  	b->cse.data0_out = BUTTRESS_REG_IU2CSEDATA0;
>>>>  
>>>> -	/* no ISH on IPU6 */
>>>> -	memset(&b->ish, 0, sizeof(b->ish));
>>>>  	INIT_LIST_HEAD(&b->constraints);
>>>>  
>>>>  	isp->secure_mode = ipu6_buttress_get_secure_mode(isp);
>>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-buttress.h b/drivers/media/pci/intel/ipu6/ipu6-buttress.h
>>>> index 9b6f56958be7..482978c2a09d 100644
>>>> --- a/drivers/media/pci/intel/ipu6/ipu6-buttress.h
>>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-buttress.h
>>>> @@ -46,18 +46,12 @@ struct ipu6_buttress_ipc {
>>>>  struct ipu6_buttress {
>>>>  	struct mutex power_mutex, auth_mutex, cons_mutex, ipc_mutex;
>>>>  	struct ipu6_buttress_ipc cse;
>>>> -	struct ipu6_buttress_ipc ish;
>>>>  	struct list_head constraints;
>>>>  	u32 wdt_cached_value;
>>>>  	bool force_suspend;
>>>>  	u32 ref_clk;
>>>>  };
>>>>  
>>>> -enum ipu6_buttress_ipc_domain {
>>>> -	IPU6_BUTTRESS_IPC_CSE,
>>>> -	IPU6_BUTTRESS_IPC_ISH,
>>>> -};
>>>> -
>>>>  struct ipu6_ipc_buttress_bulk_msg {
>>>>  	u32 cmd;
>>>>  	u32 expected_resp;
>>>>
>>>
>>> Besides minor comment:
>>>
>>> Reviewed-by: Bingbu Cao <bingbu.cao@xxxxxxxxx>
>>>
>>
> 

-- 
Best regards,
Bingbu Cao




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux