Move common display dump to gs-common
Bug: 269212897
Test: adb bugreport
Change-Id: I6739aec7a432e55e829bbd4a69fec50e0d4050ac
diff --git a/display/Android.bp b/display/Android.bp
index 4ca3636..c3b346b 100644
--- a/display/Android.bp
+++ b/display/Android.bp
@@ -8,3 +8,20 @@
vendor: true,
sub_dir: "dump",
}
+
+cc_binary {
+ name: "dump_display",
+ srcs: ["dump_display.cpp"],
+ cflags: [
+ "-Wall",
+ "-Wextra",
+ "-Werror",
+ ],
+ shared_libs: [
+ "libbase",
+ "libdump",
+ ],
+ vendor: true,
+ relative_install_path: "dump",
+}
+
diff --git a/display/dump.mk b/display/dump.mk
index a1519c3..2af14da 100644
--- a/display/dump.mk
+++ b/display/dump.mk
@@ -1,3 +1,4 @@
BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy
PRODUCT_PACKAGES_DEBUG += dump_display_userdebug.sh
+PRODUCT_PACKAGES += dump_display
diff --git a/display/dump_display.cpp b/display/dump_display.cpp
new file mode 100644
index 0000000..d78a91a
--- /dev/null
+++ b/display/dump_display.cpp
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <dump/pixel_dump.h>
+#include <android-base/file.h>
+
+
+int main() {
+ setbuf(stdout, NULL);
+ dumpFileContent("DECON-0 counters /sys/class/drm/card0/device/decon0/counters", "/sys/class/drm/card0/device/decon0/counters");
+ dumpFileContent("CRTC-0 event log", "/sys/kernel/debug/dri/0/crtc-0/event");
+ runCommand("libdisplaycolor", "/vendor/bin/dumpsys displaycolor -v");
+ dumpFileContent("Primary panel name", "/sys/devices/platform/exynos-drm/primary-panel/panel_name");
+ dumpFileContent("Primary panel extra info", "/sys/devices/platform/exynos-drm/primary-panel/panel_extinfo");
+ return 0;
+}
+
diff --git a/display/sepolicy/dump_display.te b/display/sepolicy/dump_display.te
new file mode 100644
index 0000000..b8fd1b8
--- /dev/null
+++ b/display/sepolicy/dump_display.te
@@ -0,0 +1,14 @@
+pixel_bugreport(dump_display)
+
+allow dump_display sysfs_display:file r_file_perms;
+allow dump_display vendor_displaycolor_service:service_manager find;
+binder_call(dump_display, hal_graphics_composer_default)
+allow dump_display vendor_dumpsys:file execute_no_trans;
+allow dump_display vendor_shell_exec:file execute_no_trans;
+
+userdebug_or_eng(`
+ allow dump_display vendor_dri_debugfs:dir r_dir_perms;
+ allow dump_display vendor_dri_debugfs:file r_file_perms;
+')
+vndbinder_use(dump_display)
+
diff --git a/display/sepolicy/file.te b/display/sepolicy/file.te
index bc43f3a..e3f2382 100644
--- a/display/sepolicy/file.te
+++ b/display/sepolicy/file.te
@@ -1 +1,3 @@
type vendor_hwc_log_file, file_type, data_file_type;
+type vendor_dri_debugfs, fs_type, debugfs_type;
+
diff --git a/display/sepolicy/file_contexts b/display/sepolicy/file_contexts
index bd9bb34..66118d0 100644
--- a/display/sepolicy/file_contexts
+++ b/display/sepolicy/file_contexts
@@ -1,4 +1,5 @@
/vendor/bin/dump/dump_display_userdebug\.sh u:object_r:dump_display_userdebug_exec:s0
+/vendor/bin/dump/dump_display u:object_r:dump_display_exec:s0
/data/vendor/log/hwc(/.*)? u:object_r:vendor_hwc_log_file:s0
diff --git a/display/sepolicy/genfs_contexts b/display/sepolicy/genfs_contexts
new file mode 100644
index 0000000..9eaf5fb
--- /dev/null
+++ b/display/sepolicy/genfs_contexts
@@ -0,0 +1,3 @@
+
+genfscon debugfs /dri/0/crtc- u:object_r:vendor_dri_debugfs:s0
+
diff --git a/display/sepolicy/hal_graphics_composer_default.te b/display/sepolicy/hal_graphics_composer_default.te
new file mode 100644
index 0000000..c644559
--- /dev/null
+++ b/display/sepolicy/hal_graphics_composer_default.te
@@ -0,0 +1,3 @@
+allow hal_graphics_composer_default dump_display:fifo_file { append write };
+allow hal_graphics_composer_default dump_display:fd use;
+
diff --git a/display/sepolicy/vndservice.te b/display/sepolicy/vndservice.te
new file mode 100644
index 0000000..5c3693b
--- /dev/null
+++ b/display/sepolicy/vndservice.te
@@ -0,0 +1,2 @@
+type vendor_displaycolor_service, vndservice_manager_type;
+
diff --git a/display/sepolicy/vndservice_contexts b/display/sepolicy/vndservice_contexts
new file mode 100644
index 0000000..9276f97
--- /dev/null
+++ b/display/sepolicy/vndservice_contexts
@@ -0,0 +1,2 @@
+displaycolor u:object_r:vendor_displaycolor_service:s0
+