Loading Documentation/devicetree/bindings/media/video/msm-cam-jpeg.txt 0 → 100644 +187 −0 Original line number Diff line number Diff line * Qualcomm Technologies, Inc. MSM Camera JPEG The MSM camera JPEG devices are implemented multiple device nodes. The root JPEG device node has properties defined to hint the driver about the number of Encoder and DMA nodes available during the probe sequence. Each node has multiple properties defined for interrupts, clocks and regulators. ======================= Required Node Structure ======================= JPEG root interface node takes care of the handling account for number of Encoder and DMA devices present on the hardware. - compatible Usage: required Value type: <string> Definition: Should be "qcom,cam-jpeg". - compat-hw-name Usage: required Value type: <string> Definition: Should be "qcom,jpegenc" or "qcom,jpegdma". - num-jpeg-enc Usage: required Value type: <u32> Definition: Number of supported Encoder HW blocks. - num-jpeg-dma Usage: required Value type: <u32> Definition: Number of supported DMA HW blocks. Example: qcom,cam-jpeg { compatible = "qcom,cam-jpeg"; compat-hw-name = "qcom,jpegenc", "qcom,jpegdma"; num-jpeg-enc = <1>; num-jpeg-dma = <1>; status = "ok"; }; ======================= Required Node Structure ======================= Encoder/DMA Nodes provide interface for JPEG driver about the device register map, interrupt map, clocks and regulators. - cell-index Usage: required Value type: <u32> Definition: Node instance number. - compatible Usage: required Value type: <string> Definition: Should be "qcom,cam_jpeg_enc". - reg-names Usage: optional Value type: <string> Definition: Name of the register resources. - reg Usage: optional Value type: <u32> Definition: Register values. - reg-cam-base Usage: optional Value type: <u32> Definition: Offset of the register space compared to to Camera base register space. - interrupt-names Usage: optional Value type: <string> Definition: Name of the interrupt. - interrupts Usage: optional Value type: <u32> Definition: Interrupt associated with JPEG HW. - regulator-names Usage: required Value type: <string> Definition: Name of the regulator resources for JPEG HW. - camss-vdd-supply Usage: required Value type: <phandle> Definition: Regulator reference corresponding to the names listed in "regulator-names". - clock-names Usage: required Value type: <string> Definition: List of clock names required for JPEG HW. - clocks Usage: required Value type: <phandle> Definition: List of clocks used for JPEG HW. - clock-rates Usage: required Value type: <u32> Definition: List of clocks rates. - src-clock-name Usage: required Value type: <string> Definition: Source clock name. - clock-cntl-level Usage: required Value type: <string> Definition: List of strings corresponds clock-rates levels. Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo. Examples: cam_jpeg_enc: qcom,jpegenc@ac4e000 { cell-index = <0>; compatible = "qcom,cam_jpeg_enc"; reg-names = "jpege_hw"; reg = <0xac4e000 0x4000>; reg-cam-base = <0x4e000>; interrupt-names = "jpeg"; interrupts = <0 474 0>; regulator-names = "camss-vdd"; camss-vdd-supply = <&titan_top_gdsc>; clock-names = "camera_ahb", "camera_axi", "soc_ahb_clk", "cpas_ahb_clk", "camnoc_axi_clk", "jpegenc_clk_src", "jpegenc_clk"; clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>, <&clock_gcc GCC_CAMERA_AXI_CLK>, <&clock_camcc CAM_CC_SOC_AHB_CLK>, <&clock_camcc CAM_CC_CPAS_AHB_CLK>, <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>, <&clock_camcc CAM_CC_JPEG_CLK_SRC>, <&clock_camcc CAM_CC_JPEG_CLK>; clock-rates = <0 0 0 0 0 600000000 0>; src-clock-name = "jpegenc_clk_src"; clock-cntl-level = "nominal"; status = "ok"; }; cam_jpeg_dma: qcom,jpegdma@0xac52000{ cell-index = <0>; compatible = "qcom,cam_jpeg_dma"; reg-names = "jpegdma_hw"; reg = <0xac52000 0x4000>; reg-cam-base = <0x52000>; interrupt-names = "jpegdma"; interrupts = <0 475 0>; regulator-names = "camss-vdd"; camss-vdd-supply = <&titan_top_gdsc>; clock-names = "camera_ahb", "camera_axi", "soc_ahb_clk", "cpas_ahb_clk", "camnoc_axi_clk", "jpegdma_clk_src", "jpegdma_clk"; clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>, <&clock_gcc GCC_CAMERA_AXI_CLK>, <&clock_camcc CAM_CC_SOC_AHB_CLK>, <&clock_camcc CAM_CC_CPAS_AHB_CLK>, <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>, <&clock_camcc CAM_CC_JPEG_CLK_SRC>, <&clock_camcc CAM_CC_JPEG_CLK>; clock-rates = <0 0 0 0 0 600000000 0>; src-clock-name = "jpegdma_clk_src"; clock-cntl-level = "nominal"; status = "ok"; }; drivers/media/platform/msm/camera/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,4 @@ obj-$(CONFIG_SPECTRA_CAMERA) += cam_cdm/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_isp/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_sensor_module/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_icp/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_jpeg/ drivers/media/platform/msm/camera/cam_jpeg/Makefile 0 → 100644 +11 −0 Original line number Diff line number Diff line ccflags-y += -Idrivers/media/platform/msm/camera/cam_req_mgr ccflags-y += -Idrivers/media/platform/msm/camera/cam_utils ccflags-y += -Idrivers/media/platform/msm/camera/cam_sync ccflags-y += -Idrivers/media/platform/msm/camera/cam_core ccflags-y += -Idrivers/media/platform/msm/camera/cam_smmu ccflags-y += -Idrivers/media/platform/msm/camera/cam_jpeg/jpeg_hw/ ccflags-y += -Idrivers/media/platform/msm/camera/cam_jpeg/jpeg_hw/include ccflags-y += -Idrivers/media/platform/msm/camera/cam_cpas/include/ obj-$(CONFIG_SPECTRA_CAMERA) += jpeg_hw/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_jpeg_dev.o cam_jpeg_context.o drivers/media/platform/msm/camera/cam_jpeg/cam_jpeg_context.c 0 → 100644 +138 −0 Original line number Diff line number Diff line /* Copyright (c) 2017, 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 * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <linux/debugfs.h> #include <linux/videodev2.h> #include <linux/slab.h> #include <linux/uaccess.h> #include "cam_mem_mgr.h" #include "cam_sync_api.h" #include "cam_jpeg_context.h" #include "cam_context_utils.h" #include "cam_debug_util.h" static int __cam_jpeg_ctx_acquire_dev_in_available(struct cam_context *ctx, struct cam_acquire_dev_cmd *cmd) { int rc; rc = cam_context_acquire_dev_to_hw(ctx, cmd); if (rc) CAM_ERR(CAM_JPEG, "Unable to Acquire device %d", rc); else ctx->state = CAM_CTX_ACQUIRED; return rc; } static int __cam_jpeg_ctx_release_dev_in_acquired(struct cam_context *ctx, struct cam_release_dev_cmd *cmd) { int rc; rc = cam_context_release_dev_to_hw(ctx, cmd); if (rc) CAM_ERR(CAM_JPEG, "Unable to release device %d", rc); ctx->state = CAM_CTX_AVAILABLE; return rc; } static int __cam_jpeg_ctx_config_dev_in_acquired(struct cam_context *ctx, struct cam_config_dev_cmd *cmd) { return cam_context_prepare_dev_to_hw(ctx, cmd); } static int __cam_jpeg_ctx_handle_buf_done_in_acquired(void *ctx, uint32_t evt_id, void *done) { return cam_context_buf_done_from_hw(ctx, done, evt_id); } /* top state machine */ static struct cam_ctx_ops cam_jpeg_ctx_state_machine[CAM_CTX_STATE_MAX] = { /* Uninit */ { .ioctl_ops = { }, .crm_ops = { }, .irq_ops = NULL, }, /* Available */ { .ioctl_ops = { .acquire_dev = __cam_jpeg_ctx_acquire_dev_in_available, }, .crm_ops = { }, .irq_ops = NULL, }, /* Acquired */ { .ioctl_ops = { .release_dev = __cam_jpeg_ctx_release_dev_in_acquired, .config_dev = __cam_jpeg_ctx_config_dev_in_acquired, }, .crm_ops = { }, .irq_ops = __cam_jpeg_ctx_handle_buf_done_in_acquired, }, }; int cam_jpeg_context_init(struct cam_jpeg_context *ctx, struct cam_context *ctx_base, struct cam_hw_mgr_intf *hw_intf) { int rc; int i; if (!ctx || !ctx_base) { CAM_ERR(CAM_JPEG, "Invalid Context"); rc = -EFAULT; goto err; } memset(ctx, 0, sizeof(*ctx)); ctx->base = ctx_base; for (i = 0; i < CAM_CTX_REQ_MAX; i++) ctx->req_base[i].req_priv = ctx; rc = cam_context_init(ctx_base, NULL, hw_intf, ctx->req_base, CAM_CTX_REQ_MAX); if (rc) { CAM_ERR(CAM_JPEG, "Camera Context Base init failed"); goto err; } ctx_base->state_machine = cam_jpeg_ctx_state_machine; ctx_base->ctx_priv = ctx; err: return rc; } int cam_jpeg_context_deinit(struct cam_jpeg_context *ctx) { if (!ctx || !ctx->base) { CAM_ERR(CAM_JPEG, "Invalid params: %pK", ctx); return -EINVAL; } cam_context_deinit(ctx->base); memset(ctx, 0, sizeof(*ctx)); return 0; } drivers/media/platform/msm/camera/cam_jpeg/cam_jpeg_context.h 0 → 100644 +72 −0 Original line number Diff line number Diff line /* Copyright (c) 2017, 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 * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _CAM_JPEG_CONTEXT_H_ #define _CAM_JPEG_CONTEXT_H_ #include <uapi/media/cam_jpeg.h> #include "cam_context.h" #include "cam_jpeg_hw_mgr_intf.h" #define CAM_JPEG_HW_EVENT_MAX 20 /** * struct cam_jpeg_context - Jpeg context * @base: Base jpeg cam context object * @req_base: Common request structure */ struct cam_jpeg_context { struct cam_context *base; struct cam_ctx_request req_base[CAM_CTX_REQ_MAX]; }; /* cam jpeg context irq handling function type */ typedef int (*cam_jpeg_hw_event_cb_func)( struct cam_jpeg_context *ctx_jpeg, void *evt_data); /** * struct cam_jpeg_ctx_irq_ops - Function table for handling IRQ callbacks * * @irq_ops: Array of handle function pointers. * */ struct cam_jpeg_ctx_irq_ops { cam_jpeg_hw_event_cb_func irq_ops[CAM_JPEG_HW_EVENT_MAX]; }; /** * cam_jpeg_context_init() * * @brief: Initialization function for the JPEG context * * @ctx: JPEG context obj to be initialized * @ctx_base: Context base from cam_context * @hw_intf: JPEG hw manager interface * */ int cam_jpeg_context_init(struct cam_jpeg_context *ctx, struct cam_context *ctx_base, struct cam_hw_mgr_intf *hw_intf); /** * cam_jpeg_context_deinit() * * @brief: Deinitialize function for the JPEG context * * @ctx: JPEG context obj to be deinitialized * */ int cam_jpeg_context_deinit(struct cam_jpeg_context *ctx); #endif /* __CAM_JPEG_CONTEXT_H__ */ Loading
Documentation/devicetree/bindings/media/video/msm-cam-jpeg.txt 0 → 100644 +187 −0 Original line number Diff line number Diff line * Qualcomm Technologies, Inc. MSM Camera JPEG The MSM camera JPEG devices are implemented multiple device nodes. The root JPEG device node has properties defined to hint the driver about the number of Encoder and DMA nodes available during the probe sequence. Each node has multiple properties defined for interrupts, clocks and regulators. ======================= Required Node Structure ======================= JPEG root interface node takes care of the handling account for number of Encoder and DMA devices present on the hardware. - compatible Usage: required Value type: <string> Definition: Should be "qcom,cam-jpeg". - compat-hw-name Usage: required Value type: <string> Definition: Should be "qcom,jpegenc" or "qcom,jpegdma". - num-jpeg-enc Usage: required Value type: <u32> Definition: Number of supported Encoder HW blocks. - num-jpeg-dma Usage: required Value type: <u32> Definition: Number of supported DMA HW blocks. Example: qcom,cam-jpeg { compatible = "qcom,cam-jpeg"; compat-hw-name = "qcom,jpegenc", "qcom,jpegdma"; num-jpeg-enc = <1>; num-jpeg-dma = <1>; status = "ok"; }; ======================= Required Node Structure ======================= Encoder/DMA Nodes provide interface for JPEG driver about the device register map, interrupt map, clocks and regulators. - cell-index Usage: required Value type: <u32> Definition: Node instance number. - compatible Usage: required Value type: <string> Definition: Should be "qcom,cam_jpeg_enc". - reg-names Usage: optional Value type: <string> Definition: Name of the register resources. - reg Usage: optional Value type: <u32> Definition: Register values. - reg-cam-base Usage: optional Value type: <u32> Definition: Offset of the register space compared to to Camera base register space. - interrupt-names Usage: optional Value type: <string> Definition: Name of the interrupt. - interrupts Usage: optional Value type: <u32> Definition: Interrupt associated with JPEG HW. - regulator-names Usage: required Value type: <string> Definition: Name of the regulator resources for JPEG HW. - camss-vdd-supply Usage: required Value type: <phandle> Definition: Regulator reference corresponding to the names listed in "regulator-names". - clock-names Usage: required Value type: <string> Definition: List of clock names required for JPEG HW. - clocks Usage: required Value type: <phandle> Definition: List of clocks used for JPEG HW. - clock-rates Usage: required Value type: <u32> Definition: List of clocks rates. - src-clock-name Usage: required Value type: <string> Definition: Source clock name. - clock-cntl-level Usage: required Value type: <string> Definition: List of strings corresponds clock-rates levels. Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo. Examples: cam_jpeg_enc: qcom,jpegenc@ac4e000 { cell-index = <0>; compatible = "qcom,cam_jpeg_enc"; reg-names = "jpege_hw"; reg = <0xac4e000 0x4000>; reg-cam-base = <0x4e000>; interrupt-names = "jpeg"; interrupts = <0 474 0>; regulator-names = "camss-vdd"; camss-vdd-supply = <&titan_top_gdsc>; clock-names = "camera_ahb", "camera_axi", "soc_ahb_clk", "cpas_ahb_clk", "camnoc_axi_clk", "jpegenc_clk_src", "jpegenc_clk"; clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>, <&clock_gcc GCC_CAMERA_AXI_CLK>, <&clock_camcc CAM_CC_SOC_AHB_CLK>, <&clock_camcc CAM_CC_CPAS_AHB_CLK>, <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>, <&clock_camcc CAM_CC_JPEG_CLK_SRC>, <&clock_camcc CAM_CC_JPEG_CLK>; clock-rates = <0 0 0 0 0 600000000 0>; src-clock-name = "jpegenc_clk_src"; clock-cntl-level = "nominal"; status = "ok"; }; cam_jpeg_dma: qcom,jpegdma@0xac52000{ cell-index = <0>; compatible = "qcom,cam_jpeg_dma"; reg-names = "jpegdma_hw"; reg = <0xac52000 0x4000>; reg-cam-base = <0x52000>; interrupt-names = "jpegdma"; interrupts = <0 475 0>; regulator-names = "camss-vdd"; camss-vdd-supply = <&titan_top_gdsc>; clock-names = "camera_ahb", "camera_axi", "soc_ahb_clk", "cpas_ahb_clk", "camnoc_axi_clk", "jpegdma_clk_src", "jpegdma_clk"; clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>, <&clock_gcc GCC_CAMERA_AXI_CLK>, <&clock_camcc CAM_CC_SOC_AHB_CLK>, <&clock_camcc CAM_CC_CPAS_AHB_CLK>, <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>, <&clock_camcc CAM_CC_JPEG_CLK_SRC>, <&clock_camcc CAM_CC_JPEG_CLK>; clock-rates = <0 0 0 0 0 600000000 0>; src-clock-name = "jpegdma_clk_src"; clock-cntl-level = "nominal"; status = "ok"; };
drivers/media/platform/msm/camera/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,4 @@ obj-$(CONFIG_SPECTRA_CAMERA) += cam_cdm/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_isp/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_sensor_module/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_icp/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_jpeg/
drivers/media/platform/msm/camera/cam_jpeg/Makefile 0 → 100644 +11 −0 Original line number Diff line number Diff line ccflags-y += -Idrivers/media/platform/msm/camera/cam_req_mgr ccflags-y += -Idrivers/media/platform/msm/camera/cam_utils ccflags-y += -Idrivers/media/platform/msm/camera/cam_sync ccflags-y += -Idrivers/media/platform/msm/camera/cam_core ccflags-y += -Idrivers/media/platform/msm/camera/cam_smmu ccflags-y += -Idrivers/media/platform/msm/camera/cam_jpeg/jpeg_hw/ ccflags-y += -Idrivers/media/platform/msm/camera/cam_jpeg/jpeg_hw/include ccflags-y += -Idrivers/media/platform/msm/camera/cam_cpas/include/ obj-$(CONFIG_SPECTRA_CAMERA) += jpeg_hw/ obj-$(CONFIG_SPECTRA_CAMERA) += cam_jpeg_dev.o cam_jpeg_context.o
drivers/media/platform/msm/camera/cam_jpeg/cam_jpeg_context.c 0 → 100644 +138 −0 Original line number Diff line number Diff line /* Copyright (c) 2017, 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 * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <linux/debugfs.h> #include <linux/videodev2.h> #include <linux/slab.h> #include <linux/uaccess.h> #include "cam_mem_mgr.h" #include "cam_sync_api.h" #include "cam_jpeg_context.h" #include "cam_context_utils.h" #include "cam_debug_util.h" static int __cam_jpeg_ctx_acquire_dev_in_available(struct cam_context *ctx, struct cam_acquire_dev_cmd *cmd) { int rc; rc = cam_context_acquire_dev_to_hw(ctx, cmd); if (rc) CAM_ERR(CAM_JPEG, "Unable to Acquire device %d", rc); else ctx->state = CAM_CTX_ACQUIRED; return rc; } static int __cam_jpeg_ctx_release_dev_in_acquired(struct cam_context *ctx, struct cam_release_dev_cmd *cmd) { int rc; rc = cam_context_release_dev_to_hw(ctx, cmd); if (rc) CAM_ERR(CAM_JPEG, "Unable to release device %d", rc); ctx->state = CAM_CTX_AVAILABLE; return rc; } static int __cam_jpeg_ctx_config_dev_in_acquired(struct cam_context *ctx, struct cam_config_dev_cmd *cmd) { return cam_context_prepare_dev_to_hw(ctx, cmd); } static int __cam_jpeg_ctx_handle_buf_done_in_acquired(void *ctx, uint32_t evt_id, void *done) { return cam_context_buf_done_from_hw(ctx, done, evt_id); } /* top state machine */ static struct cam_ctx_ops cam_jpeg_ctx_state_machine[CAM_CTX_STATE_MAX] = { /* Uninit */ { .ioctl_ops = { }, .crm_ops = { }, .irq_ops = NULL, }, /* Available */ { .ioctl_ops = { .acquire_dev = __cam_jpeg_ctx_acquire_dev_in_available, }, .crm_ops = { }, .irq_ops = NULL, }, /* Acquired */ { .ioctl_ops = { .release_dev = __cam_jpeg_ctx_release_dev_in_acquired, .config_dev = __cam_jpeg_ctx_config_dev_in_acquired, }, .crm_ops = { }, .irq_ops = __cam_jpeg_ctx_handle_buf_done_in_acquired, }, }; int cam_jpeg_context_init(struct cam_jpeg_context *ctx, struct cam_context *ctx_base, struct cam_hw_mgr_intf *hw_intf) { int rc; int i; if (!ctx || !ctx_base) { CAM_ERR(CAM_JPEG, "Invalid Context"); rc = -EFAULT; goto err; } memset(ctx, 0, sizeof(*ctx)); ctx->base = ctx_base; for (i = 0; i < CAM_CTX_REQ_MAX; i++) ctx->req_base[i].req_priv = ctx; rc = cam_context_init(ctx_base, NULL, hw_intf, ctx->req_base, CAM_CTX_REQ_MAX); if (rc) { CAM_ERR(CAM_JPEG, "Camera Context Base init failed"); goto err; } ctx_base->state_machine = cam_jpeg_ctx_state_machine; ctx_base->ctx_priv = ctx; err: return rc; } int cam_jpeg_context_deinit(struct cam_jpeg_context *ctx) { if (!ctx || !ctx->base) { CAM_ERR(CAM_JPEG, "Invalid params: %pK", ctx); return -EINVAL; } cam_context_deinit(ctx->base); memset(ctx, 0, sizeof(*ctx)); return 0; }
drivers/media/platform/msm/camera/cam_jpeg/cam_jpeg_context.h 0 → 100644 +72 −0 Original line number Diff line number Diff line /* Copyright (c) 2017, 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 * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _CAM_JPEG_CONTEXT_H_ #define _CAM_JPEG_CONTEXT_H_ #include <uapi/media/cam_jpeg.h> #include "cam_context.h" #include "cam_jpeg_hw_mgr_intf.h" #define CAM_JPEG_HW_EVENT_MAX 20 /** * struct cam_jpeg_context - Jpeg context * @base: Base jpeg cam context object * @req_base: Common request structure */ struct cam_jpeg_context { struct cam_context *base; struct cam_ctx_request req_base[CAM_CTX_REQ_MAX]; }; /* cam jpeg context irq handling function type */ typedef int (*cam_jpeg_hw_event_cb_func)( struct cam_jpeg_context *ctx_jpeg, void *evt_data); /** * struct cam_jpeg_ctx_irq_ops - Function table for handling IRQ callbacks * * @irq_ops: Array of handle function pointers. * */ struct cam_jpeg_ctx_irq_ops { cam_jpeg_hw_event_cb_func irq_ops[CAM_JPEG_HW_EVENT_MAX]; }; /** * cam_jpeg_context_init() * * @brief: Initialization function for the JPEG context * * @ctx: JPEG context obj to be initialized * @ctx_base: Context base from cam_context * @hw_intf: JPEG hw manager interface * */ int cam_jpeg_context_init(struct cam_jpeg_context *ctx, struct cam_context *ctx_base, struct cam_hw_mgr_intf *hw_intf); /** * cam_jpeg_context_deinit() * * @brief: Deinitialize function for the JPEG context * * @ctx: JPEG context obj to be deinitialized * */ int cam_jpeg_context_deinit(struct cam_jpeg_context *ctx); #endif /* __CAM_JPEG_CONTEXT_H__ */