move soc dump to gs-common

Bug: 248428203
Test: adb bugreport
Change-Id: Iaf8b48d5062536bbece1562618f965947dea22f0
diff --git a/soc/Android.bp b/soc/Android.bp
new file mode 100644
index 0000000..4f31fb9
--- /dev/null
+++ b/soc/Android.bp
@@ -0,0 +1,12 @@
+cc_binary {
+    name: "dump_soc",
+    srcs: ["dump_soc.cpp"],
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+    ],
+    shared_libs: ["libbase"],
+    vendor: true,
+    relative_install_path: "dump",
+}
diff --git a/soc/dump_soc.cpp b/soc/dump_soc.cpp
new file mode 100644
index 0000000..cf7fcd9
--- /dev/null
+++ b/soc/dump_soc.cpp
@@ -0,0 +1,41 @@
+/*
+ * 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 <stdio.h>
+#include <string>
+#include <android-base/file.h>
+
+// Format title and content output.
+void dumpFileContent(const char* title, const char* file_path) {
+    std::string content;
+    printf("------ %s (%s) ------\n", title, file_path);
+    if (android::base::ReadFileToString(file_path, &content)) {
+        printf("%s\n", content.c_str());
+    } else {
+        printf("Unable to read %s\n", file_path);
+    }
+    return;
+}
+
+// Dump chip ID.
+int main() {
+    dumpFileContent("AP HW TUNE", "/sys/devices/system/chip-id/ap_hw_tune_str");
+    dumpFileContent("EVT VERSION", "/sys/devices/system/chip-id/evt_ver");
+    dumpFileContent("LOT ID", "/sys/devices/system/chip-id/lot_id");
+    dumpFileContent("PRODUCT ID", "/sys/devices/system/chip-id/product_id");
+    dumpFileContent("REVISION", "/sys/devices/system/chip-id/revision");
+    dumpFileContent("RAW STR", "/sys/devices/system/chip-id/raw_str");
+    return 0;
+}
diff --git a/soc/sepolicy/dump_soc.te b/soc/sepolicy/dump_soc.te
new file mode 100644
index 0000000..b103de4
--- /dev/null
+++ b/soc/sepolicy/dump_soc.te
@@ -0,0 +1,2 @@
+pixel_bugreport(dump_soc)
+allow dump_soc sysfs_chip_id:file r_file_perms;
diff --git a/soc/sepolicy/file_contexts b/soc/sepolicy/file_contexts
new file mode 100644
index 0000000..81b1e68
--- /dev/null
+++ b/soc/sepolicy/file_contexts
@@ -0,0 +1 @@
+/vendor/bin/dump/dump_soc      u:object_r:dump_soc_exec:s0
diff --git a/soc/sepolicy/genfs_contexts b/soc/sepolicy/genfs_contexts
new file mode 100644
index 0000000..07ae4b8
--- /dev/null
+++ b/soc/sepolicy/genfs_contexts
@@ -0,0 +1,7 @@
+genfscon sysfs /devices/system/chip-id/ap_hw_tune_str  u:object_r:sysfs_chip_id:s0
+genfscon sysfs /devices/system/chip-id/evt_ver         u:object_r:sysfs_chip_id:s0
+genfscon sysfs /devices/system/chip-id/lot_id          u:object_r:sysfs_chip_id:s0
+genfscon sysfs /devices/system/chip-id/product_id      u:object_r:sysfs_chip_id:s0
+genfscon sysfs /devices/system/chip-id/revision        u:object_r:sysfs_chip_id:s0
+genfscon sysfs /devices/system/chip-id/raw_str         u:object_r:sysfs_chip_id:s0
+
diff --git a/soc/soc.mk b/soc/soc.mk
new file mode 100644
index 0000000..75b134e
--- /dev/null
+++ b/soc/soc.mk
@@ -0,0 +1,3 @@
+BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/soc/sepolicy
+
+PRODUCT_PACKAGES += dump_soc