Loading drivers/media/platform/msm/cvp/cvp_core_hfi.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -8,14 +8,14 @@ #include "cvp_hfi_api.h" #include "cvp_hfi_api.h" #include "cvp_core_hfi.h" #include "cvp_core_hfi.h" struct hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type, struct cvp_hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type, u32 device_id, struct msm_cvp_platform_resources *res, u32 device_id, struct msm_cvp_platform_resources *res, hfi_cmd_response_callback callback) hfi_cmd_response_callback callback) { { struct hfi_device *hdev = NULL; struct cvp_hfi_device *hdev = NULL; int rc = 0; int rc = 0; hdev = kzalloc(sizeof(struct hfi_device), GFP_KERNEL); hdev = kzalloc(sizeof(struct cvp_hfi_device), GFP_KERNEL); if (!hdev) { if (!hdev) { dprintk(CVP_ERR, "%s: failed to allocate hdev\n", __func__); dprintk(CVP_ERR, "%s: failed to allocate hdev\n", __func__); return NULL; return NULL; Loading Loading @@ -45,7 +45,7 @@ struct hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type, } } void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type, void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type, struct hfi_device *hdev) struct cvp_hfi_device *hdev) { { if (!hdev) { if (!hdev) { dprintk(CVP_ERR, "%s invalid device %pK", __func__, hdev); dprintk(CVP_ERR, "%s invalid device %pK", __func__, hdev); Loading drivers/media/platform/msm/cvp/cvp_core_hfi.h +26 −26 Original line number Original line Diff line number Diff line Loading @@ -42,7 +42,7 @@ #define CVP_MAX_SUBCACHES 4 #define CVP_MAX_SUBCACHES 4 #define CVP_MAX_SUBCACHE_SIZE 52 #define CVP_MAX_SUBCACHE_SIZE 52 struct hfi_queue_table_header { struct cvp_hfi_queue_table_header { u32 qtbl_version; u32 qtbl_version; u32 qtbl_size; u32 qtbl_size; u32 qtbl_qhdr0_offset; u32 qtbl_qhdr0_offset; Loading @@ -53,7 +53,7 @@ struct hfi_queue_table_header { char name[256]; char name[256]; }; }; struct hfi_queue_header { struct cvp_hfi_queue_header { u32 qhdr_status; u32 qhdr_status; u32 qhdr_start_addr; u32 qhdr_start_addr; u32 qhdr_type; u32 qhdr_type; Loading @@ -70,27 +70,27 @@ struct hfi_queue_header { u32 qhdr_write_idx; u32 qhdr_write_idx; }; }; struct hfi_mem_map_table { struct cvp_hfi_mem_map_table { u32 mem_map_num_entries; u32 mem_map_num_entries; u32 mem_map_table_base_addr; u32 mem_map_table_base_addr; }; }; struct hfi_mem_map { struct cvp_hfi_mem_map { u32 virtual_addr; u32 virtual_addr; u32 physical_addr; u32 physical_addr; u32 size; u32 size; u32 attr; u32 attr; }; }; #define CVP_IFACEQ_TABLE_SIZE (sizeof(struct hfi_queue_table_header) \ #define CVP_IFACEQ_TABLE_SIZE (sizeof(struct cvp_hfi_queue_table_header) \ + sizeof(struct hfi_queue_header) * CVP_IFACEQ_NUMQ) + sizeof(struct cvp_hfi_queue_header) * CVP_IFACEQ_NUMQ) #define CVP_IFACEQ_QUEUE_SIZE (CVP_IFACEQ_MAX_PKT_SIZE * \ #define CVP_IFACEQ_QUEUE_SIZE (CVP_IFACEQ_MAX_PKT_SIZE * \ CVP_IFACEQ_MAX_BUF_COUNT * CVP_IFACE_MAX_PARALLEL_CLNTS) CVP_IFACEQ_MAX_BUF_COUNT * CVP_IFACE_MAX_PARALLEL_CLNTS) #define CVP_IFACEQ_GET_QHDR_START_ADDR(ptr, i) \ #define CVP_IFACEQ_GET_QHDR_START_ADDR(ptr, i) \ (void *)((ptr + sizeof(struct hfi_queue_table_header)) + \ (void *)((ptr + sizeof(struct cvp_hfi_queue_table_header)) + \ (i * sizeof(struct hfi_queue_header))) (i * sizeof(struct cvp_hfi_queue_header))) #define QDSS_SIZE 4096 #define QDSS_SIZE 4096 #define SFR_SIZE 4096 #define SFR_SIZE 4096 Loading Loading @@ -121,7 +121,7 @@ struct cvp_mem_addr { u32 align_device_addr; u32 align_device_addr; u8 *align_virtual_addr; u8 *align_virtual_addr; u32 mem_size; u32 mem_size; struct msm_smem mem_data; struct msm_cvp_smem mem_data; }; }; struct cvp_iface_q_info { struct cvp_iface_q_info { Loading @@ -132,7 +132,7 @@ struct cvp_iface_q_info { /* /* * These are helper macros to iterate over various lists within * These are helper macros to iterate over various lists within * venus_hfi_device->res. The intention is to cut down on a lot of boiler-plate * iris_hfi_device->res. The intention is to cut down on a lot of boiler-plate * code * code */ */ Loading Loading @@ -204,7 +204,7 @@ struct cvp_iface_q_info { ((d)->vpu_ops->op(args)):0) ((d)->vpu_ops->op(args)):0) /* Internal data used in vidc_hal not exposed to msm_vidc*/ /* Internal data used in vidc_hal not exposed to msm_vidc*/ struct hal_data { struct cvp_hal_data { u32 irq; u32 irq; phys_addr_t firmware_base; phys_addr_t firmware_base; u8 __iomem *register_base; u8 __iomem *register_base; Loading @@ -213,7 +213,7 @@ struct hal_data { u32 gcc_reg_size; u32 gcc_reg_size; }; }; struct venus_resources { struct iris_resources { struct msm_cvp_fw fw; struct msm_cvp_fw fw; }; }; Loading @@ -233,18 +233,18 @@ enum reset_state { DEASSERT, DEASSERT, }; }; struct venus_hfi_device; struct iris_hfi_device; struct venus_hfi_vpu_ops { struct iris_hfi_vpu_ops { void (*interrupt_init)(struct venus_hfi_device *ptr); void (*interrupt_init)(struct iris_hfi_device *ptr); void (*setup_dsp_uc_memmap)(struct venus_hfi_device *device); void (*setup_dsp_uc_memmap)(struct iris_hfi_device *device); void (*clock_config_on_enable)(struct venus_hfi_device *device); void (*clock_config_on_enable)(struct iris_hfi_device *device); int (*reset_ahb2axi_bridge)(struct venus_hfi_device *device); int (*reset_ahb2axi_bridge)(struct iris_hfi_device *device); void (*power_off)(struct venus_hfi_device *device); void (*power_off)(struct iris_hfi_device *device); void (*noc_error_info)(struct venus_hfi_device *device); void (*noc_error_info)(struct iris_hfi_device *device); }; }; struct venus_hfi_device { struct iris_hfi_device { struct list_head list; struct list_head list; struct list_head sess_head; struct list_head sess_head; u32 intr_status; u32 intr_status; Loading @@ -265,27 +265,27 @@ struct venus_hfi_device { struct cvp_iface_q_info iface_queues[CVP_IFACEQ_NUMQ]; struct cvp_iface_q_info iface_queues[CVP_IFACEQ_NUMQ]; struct cvp_iface_q_info dsp_iface_queues[CVP_IFACEQ_NUMQ]; struct cvp_iface_q_info dsp_iface_queues[CVP_IFACEQ_NUMQ]; u32 dsp_flags; u32 dsp_flags; struct hal_data *hal_data; struct cvp_hal_data *cvp_hal_data; struct workqueue_struct *cvp_workq; struct workqueue_struct *cvp_workq; struct workqueue_struct *venus_pm_workq; struct workqueue_struct *venus_pm_workq; int spur_count; int spur_count; int reg_count; int reg_count; struct venus_resources resources; struct iris_resources resources; struct msm_cvp_platform_resources *res; struct msm_cvp_platform_resources *res; enum venus_hfi_state state; enum venus_hfi_state state; struct hfi_packetization_ops *pkt_ops; struct cvp_hfi_packetization_ops *pkt_ops; enum hfi_packetization_type packetization_type; enum hfi_packetization_type packetization_type; struct msm_cvp_cb_info *response_pkt; struct msm_cvp_cb_info *response_pkt; u8 *raw_packet; u8 *raw_packet; struct pm_qos_request qos; struct pm_qos_request qos; unsigned int skip_pc_count; unsigned int skip_pc_count; struct msm_cvp_capability *sys_init_capabilities; struct msm_cvp_capability *sys_init_capabilities; struct venus_hfi_vpu_ops *vpu_ops; struct iris_hfi_vpu_ops *vpu_ops; }; }; void cvp_venus_hfi_delete_device(void *device); void cvp_venus_hfi_delete_device(void *device); int cvp_venus_hfi_initialize(struct hfi_device *hdev, u32 device_id, int cvp_venus_hfi_initialize(struct cvp_hfi_device *hdev, u32 device_id, struct msm_cvp_platform_resources *res, struct msm_cvp_platform_resources *res, hfi_cmd_response_callback callback); hfi_cmd_response_callback callback); Loading Loading
drivers/media/platform/msm/cvp/cvp_core_hfi.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -8,14 +8,14 @@ #include "cvp_hfi_api.h" #include "cvp_hfi_api.h" #include "cvp_core_hfi.h" #include "cvp_core_hfi.h" struct hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type, struct cvp_hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type, u32 device_id, struct msm_cvp_platform_resources *res, u32 device_id, struct msm_cvp_platform_resources *res, hfi_cmd_response_callback callback) hfi_cmd_response_callback callback) { { struct hfi_device *hdev = NULL; struct cvp_hfi_device *hdev = NULL; int rc = 0; int rc = 0; hdev = kzalloc(sizeof(struct hfi_device), GFP_KERNEL); hdev = kzalloc(sizeof(struct cvp_hfi_device), GFP_KERNEL); if (!hdev) { if (!hdev) { dprintk(CVP_ERR, "%s: failed to allocate hdev\n", __func__); dprintk(CVP_ERR, "%s: failed to allocate hdev\n", __func__); return NULL; return NULL; Loading Loading @@ -45,7 +45,7 @@ struct hfi_device *cvp_hfi_initialize(enum msm_cvp_hfi_type hfi_type, } } void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type, void cvp_hfi_deinitialize(enum msm_cvp_hfi_type hfi_type, struct hfi_device *hdev) struct cvp_hfi_device *hdev) { { if (!hdev) { if (!hdev) { dprintk(CVP_ERR, "%s invalid device %pK", __func__, hdev); dprintk(CVP_ERR, "%s invalid device %pK", __func__, hdev); Loading
drivers/media/platform/msm/cvp/cvp_core_hfi.h +26 −26 Original line number Original line Diff line number Diff line Loading @@ -42,7 +42,7 @@ #define CVP_MAX_SUBCACHES 4 #define CVP_MAX_SUBCACHES 4 #define CVP_MAX_SUBCACHE_SIZE 52 #define CVP_MAX_SUBCACHE_SIZE 52 struct hfi_queue_table_header { struct cvp_hfi_queue_table_header { u32 qtbl_version; u32 qtbl_version; u32 qtbl_size; u32 qtbl_size; u32 qtbl_qhdr0_offset; u32 qtbl_qhdr0_offset; Loading @@ -53,7 +53,7 @@ struct hfi_queue_table_header { char name[256]; char name[256]; }; }; struct hfi_queue_header { struct cvp_hfi_queue_header { u32 qhdr_status; u32 qhdr_status; u32 qhdr_start_addr; u32 qhdr_start_addr; u32 qhdr_type; u32 qhdr_type; Loading @@ -70,27 +70,27 @@ struct hfi_queue_header { u32 qhdr_write_idx; u32 qhdr_write_idx; }; }; struct hfi_mem_map_table { struct cvp_hfi_mem_map_table { u32 mem_map_num_entries; u32 mem_map_num_entries; u32 mem_map_table_base_addr; u32 mem_map_table_base_addr; }; }; struct hfi_mem_map { struct cvp_hfi_mem_map { u32 virtual_addr; u32 virtual_addr; u32 physical_addr; u32 physical_addr; u32 size; u32 size; u32 attr; u32 attr; }; }; #define CVP_IFACEQ_TABLE_SIZE (sizeof(struct hfi_queue_table_header) \ #define CVP_IFACEQ_TABLE_SIZE (sizeof(struct cvp_hfi_queue_table_header) \ + sizeof(struct hfi_queue_header) * CVP_IFACEQ_NUMQ) + sizeof(struct cvp_hfi_queue_header) * CVP_IFACEQ_NUMQ) #define CVP_IFACEQ_QUEUE_SIZE (CVP_IFACEQ_MAX_PKT_SIZE * \ #define CVP_IFACEQ_QUEUE_SIZE (CVP_IFACEQ_MAX_PKT_SIZE * \ CVP_IFACEQ_MAX_BUF_COUNT * CVP_IFACE_MAX_PARALLEL_CLNTS) CVP_IFACEQ_MAX_BUF_COUNT * CVP_IFACE_MAX_PARALLEL_CLNTS) #define CVP_IFACEQ_GET_QHDR_START_ADDR(ptr, i) \ #define CVP_IFACEQ_GET_QHDR_START_ADDR(ptr, i) \ (void *)((ptr + sizeof(struct hfi_queue_table_header)) + \ (void *)((ptr + sizeof(struct cvp_hfi_queue_table_header)) + \ (i * sizeof(struct hfi_queue_header))) (i * sizeof(struct cvp_hfi_queue_header))) #define QDSS_SIZE 4096 #define QDSS_SIZE 4096 #define SFR_SIZE 4096 #define SFR_SIZE 4096 Loading Loading @@ -121,7 +121,7 @@ struct cvp_mem_addr { u32 align_device_addr; u32 align_device_addr; u8 *align_virtual_addr; u8 *align_virtual_addr; u32 mem_size; u32 mem_size; struct msm_smem mem_data; struct msm_cvp_smem mem_data; }; }; struct cvp_iface_q_info { struct cvp_iface_q_info { Loading @@ -132,7 +132,7 @@ struct cvp_iface_q_info { /* /* * These are helper macros to iterate over various lists within * These are helper macros to iterate over various lists within * venus_hfi_device->res. The intention is to cut down on a lot of boiler-plate * iris_hfi_device->res. The intention is to cut down on a lot of boiler-plate * code * code */ */ Loading Loading @@ -204,7 +204,7 @@ struct cvp_iface_q_info { ((d)->vpu_ops->op(args)):0) ((d)->vpu_ops->op(args)):0) /* Internal data used in vidc_hal not exposed to msm_vidc*/ /* Internal data used in vidc_hal not exposed to msm_vidc*/ struct hal_data { struct cvp_hal_data { u32 irq; u32 irq; phys_addr_t firmware_base; phys_addr_t firmware_base; u8 __iomem *register_base; u8 __iomem *register_base; Loading @@ -213,7 +213,7 @@ struct hal_data { u32 gcc_reg_size; u32 gcc_reg_size; }; }; struct venus_resources { struct iris_resources { struct msm_cvp_fw fw; struct msm_cvp_fw fw; }; }; Loading @@ -233,18 +233,18 @@ enum reset_state { DEASSERT, DEASSERT, }; }; struct venus_hfi_device; struct iris_hfi_device; struct venus_hfi_vpu_ops { struct iris_hfi_vpu_ops { void (*interrupt_init)(struct venus_hfi_device *ptr); void (*interrupt_init)(struct iris_hfi_device *ptr); void (*setup_dsp_uc_memmap)(struct venus_hfi_device *device); void (*setup_dsp_uc_memmap)(struct iris_hfi_device *device); void (*clock_config_on_enable)(struct venus_hfi_device *device); void (*clock_config_on_enable)(struct iris_hfi_device *device); int (*reset_ahb2axi_bridge)(struct venus_hfi_device *device); int (*reset_ahb2axi_bridge)(struct iris_hfi_device *device); void (*power_off)(struct venus_hfi_device *device); void (*power_off)(struct iris_hfi_device *device); void (*noc_error_info)(struct venus_hfi_device *device); void (*noc_error_info)(struct iris_hfi_device *device); }; }; struct venus_hfi_device { struct iris_hfi_device { struct list_head list; struct list_head list; struct list_head sess_head; struct list_head sess_head; u32 intr_status; u32 intr_status; Loading @@ -265,27 +265,27 @@ struct venus_hfi_device { struct cvp_iface_q_info iface_queues[CVP_IFACEQ_NUMQ]; struct cvp_iface_q_info iface_queues[CVP_IFACEQ_NUMQ]; struct cvp_iface_q_info dsp_iface_queues[CVP_IFACEQ_NUMQ]; struct cvp_iface_q_info dsp_iface_queues[CVP_IFACEQ_NUMQ]; u32 dsp_flags; u32 dsp_flags; struct hal_data *hal_data; struct cvp_hal_data *cvp_hal_data; struct workqueue_struct *cvp_workq; struct workqueue_struct *cvp_workq; struct workqueue_struct *venus_pm_workq; struct workqueue_struct *venus_pm_workq; int spur_count; int spur_count; int reg_count; int reg_count; struct venus_resources resources; struct iris_resources resources; struct msm_cvp_platform_resources *res; struct msm_cvp_platform_resources *res; enum venus_hfi_state state; enum venus_hfi_state state; struct hfi_packetization_ops *pkt_ops; struct cvp_hfi_packetization_ops *pkt_ops; enum hfi_packetization_type packetization_type; enum hfi_packetization_type packetization_type; struct msm_cvp_cb_info *response_pkt; struct msm_cvp_cb_info *response_pkt; u8 *raw_packet; u8 *raw_packet; struct pm_qos_request qos; struct pm_qos_request qos; unsigned int skip_pc_count; unsigned int skip_pc_count; struct msm_cvp_capability *sys_init_capabilities; struct msm_cvp_capability *sys_init_capabilities; struct venus_hfi_vpu_ops *vpu_ops; struct iris_hfi_vpu_ops *vpu_ops; }; }; void cvp_venus_hfi_delete_device(void *device); void cvp_venus_hfi_delete_device(void *device); int cvp_venus_hfi_initialize(struct hfi_device *hdev, u32 device_id, int cvp_venus_hfi_initialize(struct cvp_hfi_device *hdev, u32 device_id, struct msm_cvp_platform_resources *res, struct msm_cvp_platform_resources *res, hfi_cmd_response_callback callback); hfi_cmd_response_callback callback); Loading