Lines Matching full:ipc
64 struct ipu6_buttress_ipc *ipc) in ipu6_buttress_ipc_reset() argument
71 dev_dbg(&isp->pdev->dev, "Skip IPC reset for non-secure mode"); in ipu6_buttress_ipc_reset()
78 val = readl(isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
79 writel(val, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
82 writel(ENTRY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset()
97 val = readl(isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
108 writel(ENTRY | EXIT, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
109 writel(QUERY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset()
120 writel(ENTRY | QUERY, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
121 writel(ENTRY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset()
138 writel(EXIT, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
139 writel(0, isp->base + ipc->db0_in); in ipu6_buttress_ipc_reset()
140 writel(csr_in_clr, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
141 writel(EXIT, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset()
148 val = readl(isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
163 writel(QUERY, isp->base + ipc->csr_in); in ipu6_buttress_ipc_reset()
164 writel(ENTRY, isp->base + ipc->csr_out); in ipu6_buttress_ipc_reset()
180 struct ipu6_buttress_ipc *ipc) in ipu6_buttress_ipc_validity_close() argument
183 isp->base + ipc->csr_out); in ipu6_buttress_ipc_validity_close()
188 struct ipu6_buttress_ipc *ipc) in ipu6_buttress_ipc_validity_open() argument
196 isp->base + ipc->csr_out); in ipu6_buttress_ipc_validity_open()
198 addr = isp->base + ipc->csr_in; in ipu6_buttress_ipc_validity_open()
203 ipu6_buttress_ipc_validity_close(isp, ipc); in ipu6_buttress_ipc_validity_open()
210 struct ipu6_buttress_ipc *ipc, u32 *ipc_msg) in ipu6_buttress_ipc_recv() argument
213 *ipc_msg = readl(isp->base + ipc->data0_in); in ipu6_buttress_ipc_recv()
214 writel(0, isp->base + ipc->db0_in); in ipu6_buttress_ipc_recv()
224 struct ipu6_buttress_ipc *ipc = &b->cse; in ipu6_buttress_ipc_send_bulk() local
231 ret = ipu6_buttress_ipc_validity_open(isp, ipc); in ipu6_buttress_ipc_send_bulk()
233 dev_err(&isp->pdev->dev, "IPC validity open failed\n"); in ipu6_buttress_ipc_send_bulk()
241 reinit_completion(&ipc->send_complete); in ipu6_buttress_ipc_send_bulk()
243 reinit_completion(&ipc->recv_complete); in ipu6_buttress_ipc_send_bulk()
245 dev_dbg(&isp->pdev->dev, "bulk IPC command: 0x%x\n", in ipu6_buttress_ipc_send_bulk()
247 writel(msgs[i].cmd, isp->base + ipc->data0_out); in ipu6_buttress_ipc_send_bulk()
249 writel(val, isp->base + ipc->db0_out); in ipu6_buttress_ipc_send_bulk()
251 tout = wait_for_completion_timeout(&ipc->send_complete, in ipu6_buttress_ipc_send_bulk()
254 dev_err(&isp->pdev->dev, "send IPC response timeout\n"); in ipu6_buttress_ipc_send_bulk()
261 writel(0, isp->base + ipc->db0_out); in ipu6_buttress_ipc_send_bulk()
271 tout = wait_for_completion_timeout(&ipc->recv_complete, in ipu6_buttress_ipc_send_bulk()
274 dev_err(&isp->pdev->dev, "recv IPC response timeout\n"); in ipu6_buttress_ipc_send_bulk()
279 if (ipc->nack_mask && in ipu6_buttress_ipc_send_bulk()
280 (ipc->recv_data & ipc->nack_mask) == ipc->nack) { in ipu6_buttress_ipc_send_bulk()
282 "IPC NACK for cmd 0x%x\n", msgs[i].cmd); in ipu6_buttress_ipc_send_bulk()
287 if (ipc->recv_data != msgs[i].expected_resp) { in ipu6_buttress_ipc_send_bulk()
289 "expected resp: 0x%x, IPC response: 0x%x ", in ipu6_buttress_ipc_send_bulk()
290 msgs[i].expected_resp, ipc->recv_data); in ipu6_buttress_ipc_send_bulk()
296 dev_dbg(&isp->pdev->dev, "bulk IPC commands done\n"); in ipu6_buttress_ipc_send_bulk()
299 ipu6_buttress_ipc_validity_close(isp, ipc); in ipu6_buttress_ipc_send_bulk()
885 "IPC reset protocol failed, retrying\n"); in ipu6_buttress_init()
887 dev_dbg(&isp->pdev->dev, "IPC reset done\n"); in ipu6_buttress_init()
892 dev_err(&isp->pdev->dev, "IPC reset protocol failed\n"); in ipu6_buttress_init()