Loading drivers/Makefile +7 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,13 @@ camera-$(CONFIG_LEDS_QPNP_FLASH_V2) += \ cam_sensor_module/cam_flash/cam_flash_core.o \ cam_sensor_module/cam_flash/cam_flash_soc.o ifneq (,$(filter $(CONFIG_LEDS_QTI_FLASH),y m)) camera-y += \ cam_sensor_module/cam_flash/cam_flash_dev.o \ cam_sensor_module/cam_flash/cam_flash_core.o \ cam_sensor_module/cam_flash/cam_flash_soc.o endif camera-$(CONFIG_SPECTRA_CUSTOM) += \ cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.o \ cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_dev.o \ Loading drivers/cam_cdm/cam_cdm_hw_core.c +2 −2 Original line number Diff line number Diff line Loading @@ -1894,10 +1894,10 @@ static void cam_hw_cdm_component_unbind(struct device *dev, destroy_workqueue(cdm_core->bl_fifo[i].work_queue); } if (cam_smmu_destroy_handle(cdm_core->iommu_hdl.non_secure)) CAM_ERR(CAM_CDM, "Release iommu secure hdl failed"); cam_smmu_unset_client_page_fault_handler( cdm_core->iommu_hdl.non_secure, cdm_hw); if (cam_smmu_destroy_handle(cdm_core->iommu_hdl.non_secure)) CAM_ERR(CAM_CDM, "Release iommu secure hdl failed"); mutex_destroy(&cdm_hw->hw_mutex); kfree(cdm_hw->soc_info.soc_private); Loading drivers/cam_cdm/cam_cdm_intf.c +1 −2 Original line number Diff line number Diff line Loading @@ -620,7 +620,7 @@ static void cam_cdm_intf_component_unbind(struct device *dev, if (cam_virtual_cdm_remove(pdev)) { CAM_ERR(CAM_CDM, "Virtual CDM remove failed"); goto end; return; } put_cdm_mgr_refcount(); Loading @@ -635,7 +635,6 @@ static void cam_cdm_intf_component_unbind(struct device *dev, if (cdm_mgr.nodes[i].device || cdm_mgr.nodes[i].data || (cdm_mgr.nodes[i].refcount != 0)) { CAM_ERR(CAM_CDM, "Valid node present in index=%d", i); mutex_unlock(&cam_cdm_mgr_lock); goto end; } mutex_destroy(&cdm_mgr.nodes[i].lock); Loading drivers/cam_cdm/cam_cdm_util.c +31 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,15 @@ struct cdm_wait_comp_event_cmd { unsigned int mask2; } __attribute__((__packed__)); struct cdm_clear_comp_event_cmd { unsigned int reserved : 8; unsigned int id : 8; unsigned int id_reserved: 8; unsigned int cmd : 8; unsigned int mask1; unsigned int mask2; } __attribute__((__packed__)); struct cdm_prefetch_disable_event_cmd { unsigned int reserved : 8; unsigned int id : 8; Loading Loading @@ -223,6 +232,11 @@ uint32_t cdm_required_size_comp_wait(void) return cdm_get_cmd_header_size(CAM_CDM_COMP_WAIT); } uint32_t cdm_required_size_clear_comp_event(void) { return cdm_get_cmd_header_size(CAM_CDM_CLEAR_COMP_WAIT); } uint32_t cdm_required_size_prefetch_disable(void) { return cdm_get_cmd_header_size(CAM_CDM_WAIT_PREFETCH_DISABLE); Loading Loading @@ -382,6 +396,21 @@ uint32_t *cdm_write_wait_comp_event( return pCmdBuffer; } uint32_t *cdm_write_clear_comp_event( uint32_t *pCmdBuffer, uint32_t mask1, uint32_t mask2) { struct cdm_clear_comp_event_cmd *pHeader = (struct cdm_clear_comp_event_cmd *)pCmdBuffer; pHeader->cmd = CAM_CDM_CLEAR_COMP_WAIT; pHeader->mask1 = mask1; pHeader->mask2 = mask2; pCmdBuffer += cdm_get_cmd_header_size(CAM_CDM_CLEAR_COMP_WAIT); return pCmdBuffer; } uint32_t *cdm_write_wait_prefetch_disable( uint32_t *pCmdBuffer, uint32_t id, Loading Loading @@ -412,6 +441,7 @@ struct cam_cdm_utils_ops CDM170_ops = { cdm_required_size_wait_event, cdm_required_size_changebase, cdm_required_size_comp_wait, cdm_required_size_clear_comp_event, cdm_required_size_prefetch_disable, cdm_offsetof_dmi_addr, cdm_offsetof_indirect_addr, Loading @@ -423,6 +453,7 @@ struct cam_cdm_utils_ops CDM170_ops = { cdm_write_wait_event, cdm_write_changebase, cdm_write_wait_comp_event, cdm_write_clear_comp_event, cdm_write_wait_prefetch_disable, }; Loading drivers/cam_cdm/cam_cdm_util.h +15 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,10 @@ enum cam_cdm_command { * in dwords. * @return Size in dwords * * @cdm_required_size_clear_comp_event: Calculates the size of clear-comp-event * command in dwords. * @return Size in dwords * * @cdm_required_size_changebase: Calculates the size of a change-base command * in dwords. * @return Size in dwords Loading Loading @@ -123,6 +127,12 @@ enum cam_cdm_command { * @pCmdBuffer: Pointer to command buffer * @mask1: This value decides which comp events to wait (0 - 31). * @mask2: This value decides which comp events to wait (32 - 65). * * @cdm_write_clear_comp_event: Writes a clear comp event cmd into the * command buffer. * @pCmdBuffer: Pointer to command buffer * @mask1: This value decides which comp events to clear (0 - 31). * @mask2: This value decides which comp events to clear (32 - 65). */ struct cam_cdm_utils_ops { uint32_t (*cdm_get_cmd_header_size)(unsigned int command); Loading @@ -134,6 +144,7 @@ uint32_t (*cdm_required_size_genirq)(void); uint32_t (*cdm_required_size_wait_event)(void); uint32_t (*cdm_required_size_changebase)(void); uint32_t (*cdm_required_size_comp_wait)(void); uint32_t (*cdm_required_size_clear_comp_event)(void); uint32_t (*cdm_required_size_prefetch_disable)(void); uint32_t (*cdm_offsetof_dmi_addr)(void); uint32_t (*cdm_offsetof_indirect_addr)(void); Loading Loading @@ -176,6 +187,10 @@ uint32_t *(*cdm_write_wait_comp_event)( uint32_t *pCmdBuffer, uint32_t mask1, uint32_t mask2); uint32_t *(*cdm_write_clear_comp_event)( uint32_t *pCmdBuffer, uint32_t mask1, uint32_t mask2); uint32_t *(*cdm_write_wait_prefetch_disable)( uint32_t *pCmdBuffer, uint32_t id, Loading Loading
drivers/Makefile +7 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,13 @@ camera-$(CONFIG_LEDS_QPNP_FLASH_V2) += \ cam_sensor_module/cam_flash/cam_flash_core.o \ cam_sensor_module/cam_flash/cam_flash_soc.o ifneq (,$(filter $(CONFIG_LEDS_QTI_FLASH),y m)) camera-y += \ cam_sensor_module/cam_flash/cam_flash_dev.o \ cam_sensor_module/cam_flash/cam_flash_core.o \ cam_sensor_module/cam_flash/cam_flash_soc.o endif camera-$(CONFIG_SPECTRA_CUSTOM) += \ cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.o \ cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_dev.o \ Loading
drivers/cam_cdm/cam_cdm_hw_core.c +2 −2 Original line number Diff line number Diff line Loading @@ -1894,10 +1894,10 @@ static void cam_hw_cdm_component_unbind(struct device *dev, destroy_workqueue(cdm_core->bl_fifo[i].work_queue); } if (cam_smmu_destroy_handle(cdm_core->iommu_hdl.non_secure)) CAM_ERR(CAM_CDM, "Release iommu secure hdl failed"); cam_smmu_unset_client_page_fault_handler( cdm_core->iommu_hdl.non_secure, cdm_hw); if (cam_smmu_destroy_handle(cdm_core->iommu_hdl.non_secure)) CAM_ERR(CAM_CDM, "Release iommu secure hdl failed"); mutex_destroy(&cdm_hw->hw_mutex); kfree(cdm_hw->soc_info.soc_private); Loading
drivers/cam_cdm/cam_cdm_intf.c +1 −2 Original line number Diff line number Diff line Loading @@ -620,7 +620,7 @@ static void cam_cdm_intf_component_unbind(struct device *dev, if (cam_virtual_cdm_remove(pdev)) { CAM_ERR(CAM_CDM, "Virtual CDM remove failed"); goto end; return; } put_cdm_mgr_refcount(); Loading @@ -635,7 +635,6 @@ static void cam_cdm_intf_component_unbind(struct device *dev, if (cdm_mgr.nodes[i].device || cdm_mgr.nodes[i].data || (cdm_mgr.nodes[i].refcount != 0)) { CAM_ERR(CAM_CDM, "Valid node present in index=%d", i); mutex_unlock(&cam_cdm_mgr_lock); goto end; } mutex_destroy(&cdm_mgr.nodes[i].lock); Loading
drivers/cam_cdm/cam_cdm_util.c +31 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,15 @@ struct cdm_wait_comp_event_cmd { unsigned int mask2; } __attribute__((__packed__)); struct cdm_clear_comp_event_cmd { unsigned int reserved : 8; unsigned int id : 8; unsigned int id_reserved: 8; unsigned int cmd : 8; unsigned int mask1; unsigned int mask2; } __attribute__((__packed__)); struct cdm_prefetch_disable_event_cmd { unsigned int reserved : 8; unsigned int id : 8; Loading Loading @@ -223,6 +232,11 @@ uint32_t cdm_required_size_comp_wait(void) return cdm_get_cmd_header_size(CAM_CDM_COMP_WAIT); } uint32_t cdm_required_size_clear_comp_event(void) { return cdm_get_cmd_header_size(CAM_CDM_CLEAR_COMP_WAIT); } uint32_t cdm_required_size_prefetch_disable(void) { return cdm_get_cmd_header_size(CAM_CDM_WAIT_PREFETCH_DISABLE); Loading Loading @@ -382,6 +396,21 @@ uint32_t *cdm_write_wait_comp_event( return pCmdBuffer; } uint32_t *cdm_write_clear_comp_event( uint32_t *pCmdBuffer, uint32_t mask1, uint32_t mask2) { struct cdm_clear_comp_event_cmd *pHeader = (struct cdm_clear_comp_event_cmd *)pCmdBuffer; pHeader->cmd = CAM_CDM_CLEAR_COMP_WAIT; pHeader->mask1 = mask1; pHeader->mask2 = mask2; pCmdBuffer += cdm_get_cmd_header_size(CAM_CDM_CLEAR_COMP_WAIT); return pCmdBuffer; } uint32_t *cdm_write_wait_prefetch_disable( uint32_t *pCmdBuffer, uint32_t id, Loading Loading @@ -412,6 +441,7 @@ struct cam_cdm_utils_ops CDM170_ops = { cdm_required_size_wait_event, cdm_required_size_changebase, cdm_required_size_comp_wait, cdm_required_size_clear_comp_event, cdm_required_size_prefetch_disable, cdm_offsetof_dmi_addr, cdm_offsetof_indirect_addr, Loading @@ -423,6 +453,7 @@ struct cam_cdm_utils_ops CDM170_ops = { cdm_write_wait_event, cdm_write_changebase, cdm_write_wait_comp_event, cdm_write_clear_comp_event, cdm_write_wait_prefetch_disable, }; Loading
drivers/cam_cdm/cam_cdm_util.h +15 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,10 @@ enum cam_cdm_command { * in dwords. * @return Size in dwords * * @cdm_required_size_clear_comp_event: Calculates the size of clear-comp-event * command in dwords. * @return Size in dwords * * @cdm_required_size_changebase: Calculates the size of a change-base command * in dwords. * @return Size in dwords Loading Loading @@ -123,6 +127,12 @@ enum cam_cdm_command { * @pCmdBuffer: Pointer to command buffer * @mask1: This value decides which comp events to wait (0 - 31). * @mask2: This value decides which comp events to wait (32 - 65). * * @cdm_write_clear_comp_event: Writes a clear comp event cmd into the * command buffer. * @pCmdBuffer: Pointer to command buffer * @mask1: This value decides which comp events to clear (0 - 31). * @mask2: This value decides which comp events to clear (32 - 65). */ struct cam_cdm_utils_ops { uint32_t (*cdm_get_cmd_header_size)(unsigned int command); Loading @@ -134,6 +144,7 @@ uint32_t (*cdm_required_size_genirq)(void); uint32_t (*cdm_required_size_wait_event)(void); uint32_t (*cdm_required_size_changebase)(void); uint32_t (*cdm_required_size_comp_wait)(void); uint32_t (*cdm_required_size_clear_comp_event)(void); uint32_t (*cdm_required_size_prefetch_disable)(void); uint32_t (*cdm_offsetof_dmi_addr)(void); uint32_t (*cdm_offsetof_indirect_addr)(void); Loading Loading @@ -176,6 +187,10 @@ uint32_t *(*cdm_write_wait_comp_event)( uint32_t *pCmdBuffer, uint32_t mask1, uint32_t mask2); uint32_t *(*cdm_write_clear_comp_event)( uint32_t *pCmdBuffer, uint32_t mask1, uint32_t mask2); uint32_t *(*cdm_write_wait_prefetch_disable)( uint32_t *pCmdBuffer, uint32_t id, Loading