Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_mem_mgr.c +60 −1 Original line number Diff line number Diff line /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading @@ -25,6 +25,7 @@ #include "cam_debug_util.h" static struct cam_mem_table tbl; static atomic_t cam_mem_mgr_state = ATOMIC_INIT(CAM_MEM_MGR_UNINITIALIZED); static int cam_mem_util_get_dma_dir(uint32_t flags) { Loading Loading @@ -146,6 +147,8 @@ int cam_mem_mgr_init(void) } mutex_init(&tbl.m_lock); atomic_set(&cam_mem_mgr_state, CAM_MEM_MGR_INITIALIZED); return 0; } Loading Loading @@ -186,6 +189,11 @@ int cam_mem_get_io_buf(int32_t buf_handle, int32_t mmu_handle, *len_ptr = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } idx = CAM_MEM_MGR_GET_HDL_IDX(buf_handle); if (idx >= CAM_MEM_BUFQ_MAX || idx <= 0) return -EINVAL; Loading Loading @@ -231,6 +239,11 @@ int cam_mem_get_cpu_buf(int32_t buf_handle, uintptr_t *vaddr_ptr, size_t *len) int idx; struct dma_buf *dmabuf = NULL; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!buf_handle || !vaddr_ptr || !len) return -EINVAL; Loading Loading @@ -275,6 +288,11 @@ int cam_mem_put_cpu_buf(int32_t buf_handle) int idx; struct dma_buf *dmabuf = NULL; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!buf_handle) return -EINVAL; Loading Loading @@ -316,6 +334,11 @@ int cam_mem_mgr_cache_ops(struct cam_mem_cache_ops_cmd *cmd) uint32_t cache_dir; unsigned long dmabuf_flag = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd) return -EINVAL; Loading Loading @@ -605,6 +628,11 @@ int cam_mem_mgr_alloc_and_map(struct cam_mem_mgr_alloc_cmd *cmd) uintptr_t kvaddr = 0; size_t klen; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd) { CAM_ERR(CAM_MEM, " Invalid argument"); return -EINVAL; Loading Loading @@ -722,6 +750,11 @@ int cam_mem_mgr_map(struct cam_mem_mgr_map_cmd *cmd) dma_addr_t hw_vaddr = 0; size_t len = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd || (cmd->fd < 0)) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading Loading @@ -929,6 +962,7 @@ static int cam_mem_mgr_cleanup_table(void) void cam_mem_mgr_deinit(void) { atomic_set(&cam_mem_mgr_state, CAM_MEM_MGR_UNINITIALIZED); cam_mem_mgr_cleanup_table(); mutex_lock(&tbl.m_lock); bitmap_zero(tbl.bitmap, tbl.bits); Loading Loading @@ -1025,6 +1059,11 @@ int cam_mem_mgr_release(struct cam_mem_mgr_release_cmd *cmd) int idx; int rc; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading Loading @@ -1073,6 +1112,11 @@ int cam_mem_mgr_request_mem(struct cam_mem_mgr_request_desc *inp, enum cam_smmu_region_id region = CAM_SMMU_REGION_SHARED; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp || !out) { CAM_ERR(CAM_MEM, "Invalid params"); return -EINVAL; Loading Loading @@ -1193,6 +1237,11 @@ int cam_mem_mgr_release_mem(struct cam_mem_mgr_memory_desc *inp) int32_t idx; int rc; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading Loading @@ -1241,6 +1290,11 @@ int cam_mem_mgr_reserve_memory_region(struct cam_mem_mgr_request_desc *inp, int32_t smmu_hdl = 0; int32_t num_hdl = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp || !out) { CAM_ERR(CAM_MEM, "Invalid param(s)"); return -EINVAL; Loading Loading @@ -1330,6 +1384,11 @@ int cam_mem_mgr_free_memory_region(struct cam_mem_mgr_memory_desc *inp) int rc; int32_t smmu_hdl; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_mem_mgr.h +7 −1 Original line number Diff line number Diff line /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading @@ -20,6 +20,12 @@ #define CAM_MEM_BUFQ_MAX 1024 /* Enum for possible mem mgr states */ enum cam_mem_mgr_state { CAM_MEM_MGR_UNINITIALIZED, CAM_MEM_MGR_INITIALIZED, }; /*Enum for possible SMMU operations */ enum cam_smmu_mapping_client { CAM_SMMU_MAPPING_USER, Loading Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_mem_mgr.c +60 −1 Original line number Diff line number Diff line /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading @@ -25,6 +25,7 @@ #include "cam_debug_util.h" static struct cam_mem_table tbl; static atomic_t cam_mem_mgr_state = ATOMIC_INIT(CAM_MEM_MGR_UNINITIALIZED); static int cam_mem_util_get_dma_dir(uint32_t flags) { Loading Loading @@ -146,6 +147,8 @@ int cam_mem_mgr_init(void) } mutex_init(&tbl.m_lock); atomic_set(&cam_mem_mgr_state, CAM_MEM_MGR_INITIALIZED); return 0; } Loading Loading @@ -186,6 +189,11 @@ int cam_mem_get_io_buf(int32_t buf_handle, int32_t mmu_handle, *len_ptr = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } idx = CAM_MEM_MGR_GET_HDL_IDX(buf_handle); if (idx >= CAM_MEM_BUFQ_MAX || idx <= 0) return -EINVAL; Loading Loading @@ -231,6 +239,11 @@ int cam_mem_get_cpu_buf(int32_t buf_handle, uintptr_t *vaddr_ptr, size_t *len) int idx; struct dma_buf *dmabuf = NULL; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!buf_handle || !vaddr_ptr || !len) return -EINVAL; Loading Loading @@ -275,6 +288,11 @@ int cam_mem_put_cpu_buf(int32_t buf_handle) int idx; struct dma_buf *dmabuf = NULL; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!buf_handle) return -EINVAL; Loading Loading @@ -316,6 +334,11 @@ int cam_mem_mgr_cache_ops(struct cam_mem_cache_ops_cmd *cmd) uint32_t cache_dir; unsigned long dmabuf_flag = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd) return -EINVAL; Loading Loading @@ -605,6 +628,11 @@ int cam_mem_mgr_alloc_and_map(struct cam_mem_mgr_alloc_cmd *cmd) uintptr_t kvaddr = 0; size_t klen; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd) { CAM_ERR(CAM_MEM, " Invalid argument"); return -EINVAL; Loading Loading @@ -722,6 +750,11 @@ int cam_mem_mgr_map(struct cam_mem_mgr_map_cmd *cmd) dma_addr_t hw_vaddr = 0; size_t len = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd || (cmd->fd < 0)) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading Loading @@ -929,6 +962,7 @@ static int cam_mem_mgr_cleanup_table(void) void cam_mem_mgr_deinit(void) { atomic_set(&cam_mem_mgr_state, CAM_MEM_MGR_UNINITIALIZED); cam_mem_mgr_cleanup_table(); mutex_lock(&tbl.m_lock); bitmap_zero(tbl.bitmap, tbl.bits); Loading Loading @@ -1025,6 +1059,11 @@ int cam_mem_mgr_release(struct cam_mem_mgr_release_cmd *cmd) int idx; int rc; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!cmd) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading Loading @@ -1073,6 +1112,11 @@ int cam_mem_mgr_request_mem(struct cam_mem_mgr_request_desc *inp, enum cam_smmu_region_id region = CAM_SMMU_REGION_SHARED; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp || !out) { CAM_ERR(CAM_MEM, "Invalid params"); return -EINVAL; Loading Loading @@ -1193,6 +1237,11 @@ int cam_mem_mgr_release_mem(struct cam_mem_mgr_memory_desc *inp) int32_t idx; int rc; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading Loading @@ -1241,6 +1290,11 @@ int cam_mem_mgr_reserve_memory_region(struct cam_mem_mgr_request_desc *inp, int32_t smmu_hdl = 0; int32_t num_hdl = 0; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp || !out) { CAM_ERR(CAM_MEM, "Invalid param(s)"); return -EINVAL; Loading Loading @@ -1330,6 +1384,11 @@ int cam_mem_mgr_free_memory_region(struct cam_mem_mgr_memory_desc *inp) int rc; int32_t smmu_hdl; if (!atomic_read(&cam_mem_mgr_state)) { CAM_ERR(CAM_MEM, "failed. mem_mgr not initialized"); return -EINVAL; } if (!inp) { CAM_ERR(CAM_MEM, "Invalid argument"); return -EINVAL; Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_mem_mgr.h +7 −1 Original line number Diff line number Diff line /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading @@ -20,6 +20,12 @@ #define CAM_MEM_BUFQ_MAX 1024 /* Enum for possible mem mgr states */ enum cam_mem_mgr_state { CAM_MEM_MGR_UNINITIALIZED, CAM_MEM_MGR_INITIALIZED, }; /*Enum for possible SMMU operations */ enum cam_smmu_mapping_client { CAM_SMMU_MAPPING_USER, Loading