meta-ampere: refactor drivers binder services

Use obmc-power-already-on target to trigger
ampere-power-on-driver-binder scripts instead of intergrating code to
ampere-host-check service.
Use obmc-host-already-running target to trigger
ampere-host-on-driver-binder scripts.
Add ampere-power-on-driver-binder service.

Tested:
1. ampere-power-on-driver-binder scripst should be called when the
chassis-power-control pin is triggered and only when the drivers are
not bound.
2. ampere-host-on-driver-binder scripts will be called when the host
is already on, right after host0-ready.

Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>
Change-Id: I02f83d60a603dbc8d214534a13162f504c8c7deb
diff --git a/meta-ampere/meta-common/recipes-ampere/platform/ampere-driver-binder.bb b/meta-ampere/meta-common/recipes-ampere/platform/ampere-driver-binder.bb
new file mode 100644
index 0000000..498ed50
--- /dev/null
+++ b/meta-ampere/meta-common/recipes-ampere/platform/ampere-driver-binder.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Ampere Driver Binder Implementation"
+DESCRIPTION = "The driver binder for Ampere Computing LLC's systems"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+RDEPENDS:${PN} = "bash"
+S = "${WORKDIR}"
+
+SRC_URI = " \
+           file://ampere-power-on-driver-binder@.service \
+           file://ampere-host-on-driver-binder@.service \
+          "
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = " \
+                         ampere-power-on-driver-binder@.service \
+                         ampere-host-on-driver-binder@.service \
+                        "
+# bind driver after the power is on
+POWER_ON_DRIVER_BINDER_TGT = "ampere-power-on-driver-binder@.service"
+POWER_ON_DRIVER_BINDER_INSTMPL = "ampere-power-on-driver-binder@{0}.service"
+AMPER_POWER_ON = "obmc-power-already-on@{0}.target"
+POWER_ON_DRIVER_BINDER_TARGET_FMT = "../${POWER_ON_DRIVER_BINDER_TGT}:${AMPER_POWER_ON}.wants/${POWER_ON_DRIVER_BINDER_INSTMPL}"
+SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'POWER_ON_DRIVER_BINDER_TARGET_FMT', 'OBMC_HOST_INSTANCES')}"
+
+# bind driver after the host is on
+HOST_ON_DRIVER_BINDER_TGT = "ampere-host-on-driver-binder@.service"
+HOST_ON_DRIVER_BINDER_INSTMPL = "ampere-host-on-driver-binder@{0}.service"
+AMPER_HOST_RUNNING = "obmc-host-already-on@{0}.target"
+HOST_ON_DRIVER_BINDER_TARGET_FMT = "../${HOST_ON_DRIVER_BINDER_TGT}:${AMPER_HOST_RUNNING}.wants/${HOST_ON_DRIVER_BINDER_INSTMPL}"
+SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'HOST_ON_DRIVER_BINDER_TARGET_FMT', 'OBMC_HOST_INSTANCES')}"