1*ed1e8cacSPotin LaiFILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
2*ed1e8cacSPotin Lai
3*ed1e8cacSPotin Lai#===============================================================================
4*ed1e8cacSPotin Lai# TODO: need to be removed once patch merged.
5*ed1e8cacSPotin Lai# meta-facebook: phosphor-state-manager: refactor targets and relationships
6*ed1e8cacSPotin Lai# https://gerrit.openbmc.org/c/openbmc/openbmc/+/69903
7*ed1e8cacSPotin Lai
8*ed1e8cacSPotin LaiPACKAGECONFIG:remove = "only-run-apr-on-power-loss"
9*ed1e8cacSPotin Lai
10*ed1e8cacSPotin Lai# The host-graceful-poweroff service replaces the `pldmSoftPowerOff` and
11*ed1e8cacSPotin Lai# `xyz.openbmc_project.Ipmi.Internal.SoftPowerOff` services to gracefully
12*ed1e8cacSPotin Lai# shutdown the host.
13*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:append = " \
14*ed1e8cacSPotin Lai    obmc-host-shutdown@{}.target.requires/host-graceful-poweroff@{}.service \
15*ed1e8cacSPotin Lai    obmc-host-warm-reboot@{}.target.requires/host-graceful-poweroff@{}.service \
16*ed1e8cacSPotin Lai    "
17*ed1e8cacSPotin Lai
18*ed1e8cacSPotin Lai# The "warm-reboot" is what does the graceful shutdown operation and the
19*ed1e8cacSPotin Lai# normal "reboot" is suppose to do a forced reboot.  `host-shutdown` is used
20*ed1e8cacSPotin Lai# as part of the graceful shutdown path, which we want to skip in a normal
21*ed1e8cacSPotin Lai# reboot, so remove the dependency.  The `phosphor-reboot-host@.service` does
22*ed1e8cacSPotin Lai# continue to be in `obmc-host-reboot` requirements and it depends on
23*ed1e8cacSPotin Lai# `obmc-host-stop`, which will initiate a `host-force-poweroff`.
24*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:remove = " \
25*ed1e8cacSPotin Lai    obmc-host-reboot@{}.target.requires/obmc-host-shutdown@{}.service \
26*ed1e8cacSPotin Lai    "
27*ed1e8cacSPotin Lai
28*ed1e8cacSPotin Lai# The host-poweron service is the equivalent to the start_host@ service
29*ed1e8cacSPotin Lai# from meta-openpower.
30*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:append = " \
31*ed1e8cacSPotin Lai    obmc-host-startmin@{}.target.requires/host-poweron@{}.service \
32*ed1e8cacSPotin Lai    "
33*ed1e8cacSPotin Lai
34*ed1e8cacSPotin Lai# The host-stop service is called as a side-effect of force-warm-reboot and is
35*ed1e8cacSPotin Lai# expected to force-stop the processors.  They will be restarted in the
36*ed1e8cacSPotin Lai# subsequent `obmc-host-reboot` (which calls `host-startmin`)
37*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:append = " \
38*ed1e8cacSPotin Lai    obmc-host-stop@{}.target.requires/host-force-poweroff@{}.service \
39*ed1e8cacSPotin Lai    "
40*ed1e8cacSPotin Lai
41*ed1e8cacSPotin Lai# Add services for the chassis power operations.
42*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:append = " \
43*ed1e8cacSPotin Lai    obmc-chassis-poweron@{}.target.requires/chassis-poweron@{}.service \
44*ed1e8cacSPotin Lai    obmc-chassis-hard-poweroff@{}.target.requires/chassis-poweroff@{}.service \
45*ed1e8cacSPotin Lai    obmc-chassis-powercycle@{}.target.requires/chassis-powercycle@{}.service \
46*ed1e8cacSPotin Lai    "
47*ed1e8cacSPotin Lai
48*ed1e8cacSPotin Lai# We don't use the obmc-power-start or obmc-power-stop, which use the
49*ed1e8cacSPotin Lai# `org.openbmc` interface but instead install our own chassis-poweron and
50*ed1e8cacSPotin Lai# chassis-poweroff.
51*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \
52*ed1e8cacSPotin Lai    obmc-chassis-poweron@{}.target.requires/obmc-power-start@{}.service \
53*ed1e8cacSPotin Lai    obmc-chassis-poweroff@{}.target.requires/obmc-power-stop@{}.service \
54*ed1e8cacSPotin Lai    "
55*ed1e8cacSPotin Lai
56*ed1e8cacSPotin Lai# The obmc-chassis-powerreset target is used to determine the state of the host
57*ed1e8cacSPotin Lai# when the BMC resets (to handle cases where the BMC reset while the host is
58*ed1e8cacSPotin Lai# running).  The default implementation of these relies on `org.openbmc`
59*ed1e8cacSPotin Lai# interfaces we do not implement, so we need to remove them.
60*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \
61*ed1e8cacSPotin Lai    obmc-chassis-powerreset@{}.target.requires/phosphor-reset-chassis-on@{}.service \
62*ed1e8cacSPotin Lai    obmc-chassis-powerreset@{}.target.requires/phosphor-reset-chassis-running@{}.service \
63*ed1e8cacSPotin Lai    "
64*ed1e8cacSPotin Lai
65*ed1e8cacSPotin LaiRDEPENDS:${PN}:append = " bash"
66*ed1e8cacSPotin Lai
67*ed1e8cacSPotin LaiFILES:${PN} += "${systemd_system_unitdir}/*.service"
68*ed1e8cacSPotin LaiFILES:${PN} += "${libexecdir}/${PN}"
69*ed1e8cacSPotin Lai
70*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \
71*ed1e8cacSPotin Lai    obmc-chassis-poweron@{}.target.wants/chassis-poweron@{}.service \
72*ed1e8cacSPotin Lai    obmc-chassis-hard-poweroff@{}.target.wants/chassis-poweroff@{}.service \
73*ed1e8cacSPotin Lai    obmc-chassis-powercycle@{}.target.wants/chassis-powercycle@{}.service \
74*ed1e8cacSPotin Lai"
75*ed1e8cacSPotin Lai
76*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:remove = " \
77*ed1e8cacSPotin Lai    obmc-host-shutdown@{}.target.wants/host-poweroff@{}.service \
78*ed1e8cacSPotin Lai    obmc-host-start@{}.target.wants/host-poweron@{}.service \
79*ed1e8cacSPotin Lai    obmc-host-reboot@{}.target.wants/host-powercycle@{}.service \
80*ed1e8cacSPotin Lai    obmc-host-force-warm-reboot@{}.target.wants/host-powerreset@{}.service \
81*ed1e8cacSPotin Lai"
82*ed1e8cacSPotin Lai#===============================================================================
83*ed1e8cacSPotin Lai
84*ed1e8cacSPotin LaiRDEPENDS:${PN}:append = " bash"
85*ed1e8cacSPotin LaiPACKAGECONFIG:append = " host-gpio"
86*ed1e8cacSPotin Lai
87*ed1e8cacSPotin LaiSRC_URI:append = " \
88*ed1e8cacSPotin Lai    file://chassis-power-state-init \
89*ed1e8cacSPotin Lai    file://chassis-power-state-init.conf \
90*ed1e8cacSPotin Lai    file://chassis-powercycle \
91*ed1e8cacSPotin Lai    file://chassis-powercycle@.service \
92*ed1e8cacSPotin Lai    file://chassis-poweron \
93*ed1e8cacSPotin Lai    file://chassis-poweron@.service \
94*ed1e8cacSPotin Lai    file://host-force-poweroff \
95*ed1e8cacSPotin Lai    file://host-force-poweroff@.service \
96*ed1e8cacSPotin Lai    file://host-graceful-poweroff \
97*ed1e8cacSPotin Lai    file://host-graceful-poweroff@.service \
98*ed1e8cacSPotin Lai    file://host-poweron \
99*ed1e8cacSPotin Lai    file://host-poweron@.service \
100*ed1e8cacSPotin Lai    file://power-cmd \
101*ed1e8cacSPotin Lai    file://phosphor-wait-power-off@.service \
102*ed1e8cacSPotin Lai    "
103*ed1e8cacSPotin Lai
104*ed1e8cacSPotin Lai# Catalina chassis off is host force off
105*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \
106*ed1e8cacSPotin Lai    obmc-chassis-hard-poweroff@{}.target.requires/chassis-poweroff@{}.service \
107*ed1e8cacSPotin Lai    "
108*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:append = " \
109*ed1e8cacSPotin Lai    obmc-chassis-hard-poweroff@{}.target.requires/host-force-poweroff@{}.service \
110*ed1e8cacSPotin Lai    "
111*ed1e8cacSPotin Lai
112*ed1e8cacSPotin Lai#We need to ensure that the chassis power is always on.
113*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \
114*ed1e8cacSPotin Lai    obmc-host-shutdown@{}.target.requires/obmc-chassis-poweroff@{}.target \
115*ed1e8cacSPotin Lai    "
116*ed1e8cacSPotin LaiHARD_OFF_TMPL_CTRL=""
117*ed1e8cacSPotin LaiHARD_OFF_TGTFMT_CTRL=""
118*ed1e8cacSPotin LaiHARD_OFF_FMT_CTRL=""
119*ed1e8cacSPotin LaiHARD_OFF_INSTFMT_CTRL=""
120*ed1e8cacSPotin Lai
121*ed1e8cacSPotin Laido_install:append() {
122*ed1e8cacSPotin Lai    install -d ${D}${systemd_system_unitdir}
123*ed1e8cacSPotin Lai    install -m 0644 ${WORKDIR}/*.service ${D}${systemd_system_unitdir}/
124*ed1e8cacSPotin Lai
125*ed1e8cacSPotin Lai    install -d ${D}${libexecdir}/${PN}
126*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/chassis-power-state-init ${D}${libexecdir}/${PN}/
127*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/chassis-poweron ${D}${libexecdir}/${PN}/
128*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/chassis-powercycle ${D}${libexecdir}/${PN}/
129*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/host-force-poweroff ${D}${libexecdir}/${PN}/
130*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/host-graceful-poweroff ${D}${libexecdir}/${PN}/
131*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/host-poweron ${D}${libexecdir}/${PN}/
132*ed1e8cacSPotin Lai    install -m 0755 ${WORKDIR}/power-cmd ${D}${libexecdir}/${PN}/
133*ed1e8cacSPotin Lai}
134*ed1e8cacSPotin Lai
135*ed1e8cacSPotin LaiSYSTEMD_OVERRIDE:${PN}-host += "chassis-power-state-init.conf:xyz.openbmc_project.State.Host@0.service.d/chassis-power-state-init.conf"
136