WIFI: systemd: add suspend/resume service

For supporting suspend/resume with wifi activate,
brcmfmac MUST be unbinding before each suspend.

Signed-off-by: Christophe Priouzeau <christophe.priouzeau@st.com>
This commit is contained in:
Christophe Priouzeau 2019-02-04 15:51:17 +01:00
parent 0e99b96fa6
commit 9bd86c65c7
3 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,28 @@
# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
DESCRIPTION = "Systemd service to suspend/resume correctly the wifi"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = " \
file://wifi_brcmfmac_driver.sh \
file://wifi-brcmfmac-sleep.service \
"
inherit systemd
SYSTEMD_PACKAGES += "${PN}"
SYSTEMD_SERVICE_${PN} = "wifi-brcmfmac-sleep.service"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/wifi_brcmfmac_driver.sh ${D}${bindir}/
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/wifi-brcmfmac-sleep.service ${D}${systemd_unitdir}/system/
fi
}
ALLOW_EMPTY_${PN} = "1"

View File

@ -0,0 +1,13 @@
[Unit]
Description=Wifi brcmfmac sleep hook
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/usr/bin/wifi_brcmfmac_driver.sh unbind
ExecStop=-/usr/bin/wifi_brcmfmac_driver.sh bind
[Install]
WantedBy=sleep.target

View File

@ -0,0 +1,29 @@
#!/bin/sh
SDMMC_PATH=/sys/bus/amba/drivers/mmci-pl18x
if [ -d $SDMMC_PATH ];
then
if [ ! -d /sys/bus/sdio/drivers/brcmfmac ];
then
exit 1;
fi
case $1 in
bind)
echo "bind driver brcmfmac/sdmmc";
echo "bind driver brcmfmac/sdmmc" > /dev/kmsg
echo 58007000.sdmmc > $SDMMC_PATH/bind
;;
unbind)
echo "unbind driver brcmfmac/sdmmc";
echo "unbind driver brcmfmac/sdmmc" > /dev/kmsg
echo 58007000.sdmmc > $SDMMC_PATH/unbind
;;
*)
echo "$0 [bind|unbind]"
echo "Bind/Unbind wifi driver brcmfmac."
;;
esac
fi