Jelajahi Sumber

Merge 7049c53fc24457b8d6a97b5785bd075f2fa74592 on remote branch

Change-Id: Ic447a7e8cf9c932d46b2f2dfe70a2a32debe2ad9
Linux Build Service Account 2 tahun lalu
induk
melakukan
b44da4cb65
4 mengubah file dengan 772 tambahan dan 145 penghapusan
  1. 2 2
      ubwcp/include/kernel/ubwcp.h
  2. 34 1
      ubwcp/include/uapi/ubwcp_ioctl.h
  3. 473 142
      ubwcp/ubwcp_main.c
  4. 263 0
      ubwcp/ubwcp_trace.h

+ 2 - 2
ubwcp/include/kernel/ubwcp.h

@@ -99,7 +99,7 @@ struct ubwcp_smmu_fault_err_info {
 	int iommu_fault_flags;
 };
 
-struct unwcp_err_info {
+struct ubwcp_err_info {
 	enum ubwcp_error err_code;
 	union {
 		struct ubwcp_enc_err_info enc_err;
@@ -109,7 +109,7 @@ struct unwcp_err_info {
 	};
 };
 
-typedef void (*ubwcp_error_handler_t)(struct unwcp_err_info *err, void *data);
+typedef void (*ubwcp_error_handler_t)(struct ubwcp_err_info *err, void *data);
 
 /*
  * Register an error handler

+ 34 - 1
ubwcp/include/uapi/ubwcp_ioctl.h

@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
 /*
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #ifndef __UBWCP_IOCTL_H_
@@ -11,6 +11,8 @@
 
 #define UBWCP_IOCTL_SET_BUF_ATTR _IOW('U', 1, struct ubwcp_ioctl_buffer_attrs)
 #define UBWCP_IOCTL_GET_HW_VER   _IOR('U', 2, struct ubwcp_ioctl_hw_version)
+#define UBWCP_IOCTL_GET_STRIDE_ALIGN  _IOWR('U', 3, struct ubwcp_ioctl_stride_align)
+#define UBWCP_IOCTL_VALIDATE_STRIDE _IOWR('U', 4, struct ubwcp_ioctl_validate_stride)
 
 
 enum ubwcp_image_format {
@@ -115,4 +117,35 @@ struct ubwcp_ioctl_hw_version {
 	__u32 minor;
 };
 
+/**
+ * Stride alignment for given format
+ *  @image_format: image format
+ *  @stride_align: stride alignment
+ *  @unused: must be set to 0
+ *  IOCTL will fail for linear image format
+ */
+struct ubwcp_ioctl_stride_align {
+	__u16 image_format;
+	__u16 stride_align;
+	__u32 unused;
+};
+
+/**
+ * validate stride
+ *  @image_format: image format
+ *  @width: image width in pixels
+ *  @stride: image stride in bytes
+ *  @valid: returns 0 (not valid), 1 (valid)
+ *  @unusedX: must be set to 0
+ *  IOCTL will fail for linear image format
+ */
+struct ubwcp_ioctl_validate_stride {
+	__u16 image_format;
+	__u32 width;
+	__u32 stride;
+	__u16 valid;
+	__u16 unused1;
+	__u16 unused2;
+};
+
 #endif /* __UBWCP_IOCTL_H_ */

File diff ditekan karena terlalu besar
+ 473 - 142
ubwcp/ubwcp_main.c


+ 263 - 0
ubwcp/ubwcp_trace.h

@@ -0,0 +1,263 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#if !defined(TRACE_UBWCP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define TRACE_UBWCP_H
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM ubwcp
+
+/* Path must be relative to location of 'define_trace.h' header in kernel */
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/mm-sys-kernel/ubwcp
+
+/* Name of trace header file */
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE ubwcp_trace
+
+#include <linux/tracepoint.h>
+
+struct dma_buf;
+struct platform_device;
+
+DECLARE_EVENT_CLASS(ubwcp_platform_device_event,
+
+	TP_PROTO(struct platform_device *pdev),
+
+	TP_ARGS(pdev),
+
+	TP_STRUCT__entry(
+		__field(struct platform_device *, pdev)
+	),
+
+	TP_fast_assign(
+		__entry->pdev = pdev;
+	),
+
+	TP_printk("platform_device:0x%lx",
+		__entry->pdev)
+);
+
+DEFINE_EVENT(ubwcp_platform_device_event, ubwcp_probe,
+
+	TP_PROTO(struct platform_device *pdev),
+
+	TP_ARGS(pdev)
+);
+
+DEFINE_EVENT(ubwcp_platform_device_event, ubwcp_remove,
+
+	TP_PROTO(struct platform_device *pdev),
+
+	TP_ARGS(pdev)
+);
+
+DECLARE_EVENT_CLASS(ubwcp_dmabuf_event,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr),
+
+	TP_STRUCT__entry(
+		__field(struct dma_buf *, dbuf_addr)
+	),
+
+	TP_fast_assign(
+		__entry->dbuf_addr = dbuf_addr;
+	),
+
+	TP_printk("dma-buf:0x%lx",
+		__entry->dbuf_addr)
+);
+
+DECLARE_EVENT_CLASS(ubwcp_size_event,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size),
+
+	TP_STRUCT__entry(
+		__field(size_t, size)
+	),
+
+	TP_fast_assign(
+		__entry->size = size;
+	),
+
+	TP_printk("size:%zu", __entry->size)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_init_buffer_start,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_init_buffer_end,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_add_memory_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_add_memory_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_set_buf_attrs_start,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_set_buf_attrs_end,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_lock_start,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_lock_end,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_unlock_start,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_unlock_end,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_offline_sync_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_offline_sync_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_dma_sync_single_for_device_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_dma_sync_single_for_device_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_dma_sync_single_for_cpu_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_dma_sync_single_for_cpu_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_hw_flush_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_hw_flush_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_offline_and_remove_memory_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_offline_and_remove_memory_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_set_direct_map_range_uncached_start,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_size_event, ubwcp_set_direct_map_range_uncached_end,
+
+	TP_PROTO(size_t size),
+
+	TP_ARGS(size)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_free_buffer_start,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+DEFINE_EVENT(ubwcp_dmabuf_event, ubwcp_free_buffer_end,
+
+	TP_PROTO(struct dma_buf *dbuf_addr),
+
+	TP_ARGS(dbuf_addr)
+);
+
+#endif
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini