Browse Source

msm: camera: custom: Add uapi for custom HW

This change adds uapi for custom HW block.

CRs-Fixed: 2515662
Change-Id: Id4284594746a313ab09dad5c290cedc2b9edb62c
Signed-off-by: Karthik Anantha Ram <[email protected]>
Karthik Anantha Ram 5 years ago
parent
commit
02f7646413
2 changed files with 199 additions and 0 deletions
  1. 198 0
      include/uapi/media/cam_custom.h
  2. 1 0
      include/uapi/media/cam_req_mgr.h

+ 198 - 0
include/uapi/media/cam_custom.h

@@ -0,0 +1,198 @@
+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
+/*
+ * Copyright (c) 2019, The Linux Foundation. All rights reserved.
+ */
+
+#ifndef __UAPI_CAM_CUSTOM_H__
+#define __UAPI_CAM_CUSTOM_H__
+
+#include "cam_defs.h"
+
+/* Custom driver name */
+#define CAM_CUSTOM_DEV_NAME                    "cam-custom"
+
+#define CAM_CUSTOM_NUM_SUB_DEVICES             2
+
+/* HW type */
+#define CAM_CUSTOM_HW1                         0
+#define CAM_CUSTOM_HW2                         1
+
+/* output path resource id's */
+#define CAM_CUSTOM_OUT_RES_UDI_0               1
+#define CAM_CUSTOM_OUT_RES_UDI_1               2
+#define CAM_CUSTOM_OUT_RES_UDI_2               3
+
+/* input resource for custom hw */
+#define CAM_CUSTOM_IN_RES_UDI_0                1
+
+/* Resource ID */
+#define CAM_CUSTOM_RES_ID_PORT                 0
+
+/* Packet opcode for Custom */
+#define CAM_CUSTOM_PACKET_OP_BASE              0
+#define CAM_CUSTOM_PACKET_INIT_DEV             1
+#define CAM_CUSTOM_PACKET_UPDATE_DEV           2
+#define CAM_CUSTOM_PACKET_OP_MAX               3
+
+/* max number of vc-dt cfg for a given input */
+#define CAM_CUSTOM_VC_DT_CFG_MAX               4
+
+/* phy input resource types */
+#define CAM_CUSTOM_IN_RES_BASE                0x5000
+#define CAM_CUSTOM_IN_RES_PHY_0               (CAM_CUSTOM_IN_RES_BASE + 1)
+#define CAM_CUSTOM_IN_RES_PHY_1               (CAM_CUSTOM_IN_RES_BASE + 2)
+#define CAM_CUSTOM_IN_RES_PHY_2               (CAM_CUSTOM_IN_RES_BASE + 3)
+#define CAM_CUSTOM_IN_RES_PHY_3               (CAM_CUSTOM_IN_RES_BASE + 4)
+
+/* Query devices */
+/**
+ * struct cam_custom_dev_cap_info - A cap info for particular hw type
+ *
+ * @hw_type:            Custom HW type
+ * @hw_version:         Hardware version
+ *
+ */
+struct cam_custom_dev_cap_info {
+	uint32_t              hw_type;
+	uint32_t              hw_version;
+};
+
+/**
+ * struct cam_custom_query_cap_cmd - Custom HW query device capability payload
+ *
+ * @device_iommu:               returned iommu handles for device
+ * @cdm_iommu:                  returned iommu handles for cdm
+ * @num_dev:                    returned number of device capabilities
+ * @reserved:                   reserved field for alignment
+ * @dev_caps:                   returned device capability array
+ *
+ */
+struct cam_custom_query_cap_cmd {
+	struct cam_iommu_handle         device_iommu;
+	struct cam_iommu_handle         cdm_iommu;
+	int32_t                         num_dev;
+	uint32_t                        reserved;
+	struct cam_custom_dev_cap_info  dev_caps[CAM_CUSTOM_NUM_SUB_DEVICES];
+};
+
+/* Acquire Device */
+/**
+ * struct cam_custom_out_port_info - An output port resource info
+ *
+ * @res_type:              output resource type
+ * @format:                output format of the resource
+ * @custom_info 1-3:       custom params
+ * @reserved:              reserved field for alignment
+ *
+ */
+struct cam_custom_out_port_info {
+	uint32_t                res_type;
+	uint32_t                format;
+	uint32_t                custom_info1;
+	uint32_t                custom_info2;
+	uint32_t                custom_info3;
+	uint32_t                reserved;
+};
+
+/**
+ * struct cam_custom_in_port_info - An input port resource info
+ *
+ * @res_type:                   input resource type
+ * @lane_type:                  lane type: c-phy or d-phy.
+ * @lane_num:                   active lane number
+ * @lane_cfg:                   lane configurations: 4 bits per lane
+ * @vc:                         input virtual channel number
+ * @dt:                         input data type number
+ * @num_valid_vc_dt:            number of valid vc-dt
+ * @format:                     input format
+ * @test_pattern:               test pattern for the testgen
+ * @usage_type:                 whether dual vfe is required
+ * @left_start:                 left input start offset in pixels
+ * @left_stop:                  left input stop offset in pixels
+ * @left_width:                 left input width in pixels
+ * @right_start:                right input start offset in pixels.
+ * @right_stop:                 right input stop offset in pixels.
+ * @right_width:                right input width in pixels.
+ * @line_start:                 top of the line number
+ * @line_stop:                  bottome of the line number
+ * @height:                     input height in lines
+ * @pixel_clk;                  sensor output clock
+ * @num_out_byte:               number of valid output bytes per cycle
+ * @custom_info1:               custom_info1
+ * @custom_info2:               custom info 2
+ * @num_out_res:                number of the output resource associated
+ * @data:                       payload that contains the output resources
+ *
+ */
+struct cam_custom_in_port_info {
+	uint32_t                        res_type;
+	uint32_t                        lane_type;
+	uint32_t                        lane_num;
+	uint32_t                        lane_cfg;
+	uint32_t                        vc[CAM_CUSTOM_VC_DT_CFG_MAX];
+	uint32_t                        dt[CAM_CUSTOM_VC_DT_CFG_MAX];
+	uint32_t                        num_valid_vc_dt;
+	uint32_t                        format;
+	uint32_t                        test_pattern;
+	uint32_t                        usage_type;
+	uint32_t                        left_start;
+	uint32_t                        left_stop;
+	uint32_t                        left_width;
+	uint32_t                        right_start;
+	uint32_t                        right_stop;
+	uint32_t                        right_width;
+	uint32_t                        line_start;
+	uint32_t                        line_stop;
+	uint32_t                        height;
+	uint32_t                        pixel_clk;
+	uint32_t                        num_bytes_out;
+	uint32_t                        custom_info1;
+	uint32_t                        custom_info2;
+	uint32_t                        num_out_res;
+	struct cam_custom_out_port_info data[1];
+};
+
+/**
+ * struct cam_custom_resource - A resource bundle
+ *
+ * @resoruce_id:                resource id for the resource bundle
+ * @length:                     length of the while resource blob
+ * @handle_type:                type of the resource handle
+ * @reserved:                   reserved field for alignment
+ * @res_hdl:                    resource handle that points to the
+ *                              resource array;
+ */
+struct cam_custom_resource {
+	uint32_t                       resource_id;
+	uint32_t                       length;
+	uint32_t                       handle_type;
+	uint32_t                       reserved;
+	uint64_t                       res_hdl;
+};
+
+/**
+ * struct cam_custom_cmd_buf_type_1 - cmd buf type 1
+ *
+ * @custom_info:                custom info
+ * @reserved:                   reserved
+ */
+struct cam_custom_cmd_buf_type_1 {
+	uint32_t                       custom_info;
+	uint32_t                       reserved;
+};
+
+/**
+ * struct cam_custom_cmd_buf_type_2 - cmd buf type 2
+ *
+ * @custom_info1:               Custom info 1
+ * @custom_info2:               Custom info 2
+ * @custom_info3:               Custom info 3
+ * @reserved:                   reserved
+ */
+struct cam_custom_cmd_buf_type_2 {
+	uint32_t                       custom_info1;
+	uint32_t                       custom_info2;
+	uint32_t                       custom_info3;
+	uint32_t                       reserved;
+};
+#endif /* __UAPI_CAM_CUSTOM_H__ */

+ 1 - 0
include/uapi/media/cam_req_mgr.h

@@ -29,6 +29,7 @@
 #define CAM_FLASH_DEVICE_TYPE     (CAM_DEVICE_TYPE_BASE + 11)
 #define CAM_FLASH_DEVICE_TYPE     (CAM_DEVICE_TYPE_BASE + 11)
 #define CAM_EEPROM_DEVICE_TYPE    (CAM_DEVICE_TYPE_BASE + 12)
 #define CAM_EEPROM_DEVICE_TYPE    (CAM_DEVICE_TYPE_BASE + 12)
 #define CAM_OIS_DEVICE_TYPE       (CAM_DEVICE_TYPE_BASE + 13)
 #define CAM_OIS_DEVICE_TYPE       (CAM_DEVICE_TYPE_BASE + 13)
+#define CAM_CUSTOM_DEVICE_TYPE    (CAM_DEVICE_TYPE_BASE + 14)
 
 
 /* cam_req_mgr hdl info */
 /* cam_req_mgr hdl info */
 #define CAM_REQ_MGR_HDL_IDX_POS           8
 #define CAM_REQ_MGR_HDL_IDX_POS           8