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? > } > > 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