From d0624b8de9fd26dafba82f6cad4a8cf828e8bfe9 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 22 Mar 2022 15:16:40 +0000 Subject: [PATCH] drivers: staging: bcm2835-isp: Clear LS table handle in the firmware When all nodes have stopped streaming, ensure the firmware has released its handle on the LS table dmabuf. This is done by passing a null handle in the LS params. Signed-off-by: Naushir Patuck --- .../vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) --- a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c +++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c @@ -655,6 +655,19 @@ static void bcm2835_isp_node_stop_stream atomic_dec(&dev->num_streaming); /* If all ports disabled, then disable the component */ if (atomic_read(&dev->num_streaming) == 0) { + struct bcm2835_isp_lens_shading ls; + /* + * The ISP component on the firmware has a reference to the + * dmabuf handle for the lens shading table. Pass a null handle + * to remove that reference now. + */ + memset(&ls, 0, sizeof(ls)); + /* Must set a valid grid size for the FW */ + ls.grid_cell_size = 16; + set_isp_param(&dev->node[0], + MMAL_PARAMETER_LENS_SHADING_OVERRIDE, + &ls, sizeof(ls)); + ret = vchiq_mmal_component_disable(dev->mmal_instance, dev->component); if (ret) {