Atlas: Sync dptf settings with master

This is squash of the following CLs
CL:1633912 Atlas: Override dptf profile based on internal component
CL:1681986 Atlas: Update dptf tuning from new revision
CL:1796573 Atlas: Update dptf config for Advance dptf
CL:1810626 Atlas: Update dptf setting
CL:1819987 Atlas: Update dptf setting

BUG=b:141875560
TEST=trybot

Change-Id: I2c2d21527481395af448d77c2af969323ab5f6ff
Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/overlays/board-overlays/+/1835201
Reviewed-by: Wei-Han Chen <stimim@chromium.org>
Reviewed-by: Bob Moragues <moragues@chromium.org>
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1-r19.ebuild b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1-r20.ebuild
similarity index 100%
rename from overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1-r19.ebuild
rename to overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1-r20.ebuild
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1.ebuild b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1.ebuild
index f488031..5161693 100644
--- a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1.ebuild
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/chromeos-bsp-atlas-0.0.1.ebuild
@@ -53,4 +53,8 @@
 	# Install device-specific automatic brightness model parameters.
 	insinto "/usr/share/chromeos-assets/autobrightness"
 	doins "${FILESDIR}/autobrightness/model_params.json"
+
+	# Install device-specific custom dptf profile.
+	insinto "/etc/dptf"
+	doins "${FILESDIR}"/dptf/*
 }
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/0987_8765.bin b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/0987_8765.bin
new file mode 100644
index 0000000..1ed669a
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/0987_8765.bin
Binary files differ
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1098_0987.bin b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1098_0987.bin
new file mode 100644
index 0000000..81b301d
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1098_0987.bin
Binary files differ
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1098_9876.bin b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1098_9876.bin
new file mode 100644
index 0000000..8c64f64
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1098_9876.bin
Binary files differ
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1199_0886.bin b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1199_0886.bin
new file mode 100644
index 0000000..c1739a9
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1199_0886.bin
Binary files differ
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1199_1098.bin b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1199_1098.bin
new file mode 100644
index 0000000..151bb47
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/1199_1098.bin
Binary files differ
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/2200_0987.bin b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/2200_0987.bin
new file mode 100644
index 0000000..6e930c5
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/2200_0987.bin
Binary files differ
diff --git a/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/dptf_override.sh b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/dptf_override.sh
new file mode 100644
index 0000000..7633303
--- /dev/null
+++ b/overlay-atlas/chromeos-base/chromeos-bsp-atlas/files/dptf/dptf_override.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Select dptf configuration based on the following criteria.
+# - CPU model name
+# - DRAM part number prefix
+# - DRAM capacity
+#
+# Documentation: http://go/atlas-dptf-override
+#
+
+dptf_get_override() {
+  local dram_part=
+  local cpu_model=
+  local memtotal_kib=
+  local memtotal_gib=
+  local dptf_file=
+
+  cpu_model="$(uname -p | grep -o "[im][357]")"
+  dram_part="$(mosys memory spd print id -s part_number | grep -om1 ^..)"
+  memtotal_kib="$(grep '^MemTotal:' /proc/meminfo | grep -oE '[0-9]+')"
+  # Atlas should have even GiB of RAM.  Round up to nearest even number.
+  memtotal_gib="$(( (((memtotal_kib >> 20) + 1) / 2) * 2 ))"
+
+  cpu_dram="$(echo "${cpu_model}-${dram_part}-${memtotal_gib}")"
+
+  case "${cpu_dram}" in
+    m3-K4-8)  dptf_file="0987_8765.bin" ;;
+    m3-MT-8)  dptf_file="1098_0987.bin" ;;
+    i5-K4-8)  dptf_file="1098_9876.bin" ;;
+    i5-MT-8)  dptf_file="1098_0987.bin" ;;
+    i5-K4-16) dptf_file="1098_0987.bin" ;;
+    i5-MT-16) dptf_file="1199_0886.bin" ;;
+    i7-K4-16) dptf_file="2200_0987.bin" ;;
+    i7-MT-16) dptf_file="1199_1098.bin" ;;
+  esac
+
+  echo "${dptf_file}"
+}