diff options
Diffstat (limited to 'recipes-kernel/rs9113/rs9113.inc')
-rw-r--r-- | recipes-kernel/rs9113/rs9113.inc | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/recipes-kernel/rs9113/rs9113.inc b/recipes-kernel/rs9113/rs9113.inc new file mode 100644 index 0000000..7e9accd --- /dev/null +++ b/recipes-kernel/rs9113/rs9113.inc @@ -0,0 +1,206 @@ +inherit update-rc.d +inherit module +PACKAGE_ARCH = "${MACHINE_ARCH}" + +# utils-extra picks up ELF executables we don't want on most images. +# misc picks up non-ELF's we don't want on most images. +# kernel-module-rs9113 picks up the *.ko files. +# util contains the onebox utility for creating the VAP. +# noarch contains the init script and configuration for the driver and +# the firmware file (firmware/*.rps). +PACKAGES = " \ + ${PN}-utils-extra \ + ${PN}-rm \ + ${PN}-misc \ + kernel-module-${PN} \ + ${PN}-util \ + ${PN}-dbg \ + ${PN}-autostart \ + ${PN}-btclonly \ + ${PN}-noarch \ + " + +ALLOW_EMPTY_${PN}-autostart = "1" + +# MD: PACKAGE_ARCH_${PN} doesn't work for some reason +#PACKAGE_ARCH_${PN}-rm = "all" +#PACKAGE_ARCH_${PN}-noarch = "all" +#PACKAGE_ARCH_${PN}-misc = "all" +#PACKAGE_ARCH_${PN}-autostart = "all" +#PACKAGE_ARCH_${PN}-util = "${TUNE_PKGARCH}" +#PACKAGE_ARCH_${PN}-utils-extra = "${TUNE_PKGARCH}" +#PACKAGE_ARCH_${PN}-dbg = "${TUNE_PKGARCH}" +#PACKAGE_ARCH_${PN}-btclonly = "all" +RDEPENDS_${PN}-noarch = "bash" +RDEPENDS_${PN}-misc = "bash" +RDEPENDS_${PN}-btclonly = "${PN}-noarch" + +ALLOW_EMPTY_${PN}-btclonly = "1" + +DR = "${DL_DIR}/rs9113-ipk" +FILESEXTRAPATHS_append := "${DR}:" + +INITSCRIPT_PACKAGES = "${PN}-autostart ${PN}-rm" +INITSCRIPT_NAME_${PN}-autostart = "rs9113" +INITSCRIPT_PARAMS_${PN}-autostart = "start 50 S ." + +# ${PN}-rm must start after mts-io driver is loaded. +INITSCRIPT_NAME_${PN}-rm = "mts-rm-rs9113" +INITSCRIPT_PARAMS_${PN}-rm = "start 39 S ." + +RDEPENDS_${PN}-autostart = "${PN}-noarch" + +BB_STRICT_CHECKSUM = "0" + +# Avoid QA Issue: No GNU_HASH in the elf binary +INSANE_SKIP_${PN} = "ldflags" +INSANE_SKIP_${PN}-dev = "ldflags" + +python do_fetch_prepend () { + # d.setVar('BB_STRICT_CHECKSUM',False) + DR = d.getVar("DR",True) + bb.note("DR is " + DR) + + ARCH = d.getVar("PACKAGE_ARCH",True) + + try: + os.mkdir(DR,0o755) + except OSError: + pass + try: + ex = "export SSH_AUTH_SOCK=" + d.getVar("SSH_AUTH_SOCK",True) + except TypeError: + ex=":" + bb.note("SSH_AUTH_SOCK not set. SSH keys must not use a pass phrase") + bb.note("export is " + ex) + + gt = "git archive -v --remote=git@" + + + gitversion = d.getVar("PV",True) + + PV = gitversion + "-" + try: + PV += d.getVar("PR",True) + except TypeError: + bb.fatal("PR is missing from recipe") + + bb.note("PV is " + PV) + + ipkn = "rs9113-from-src_" + PV + ".0_" + ARCH + ".ipk" + bb.note("ipkname is " + ipkn) + bb.note ("ipk path is " + DR + "/" + ipkn) + + try: + gt += d.getVar("MTS_INTERNAL_GIT",True) + except TypeError: + if os.path.isfile(DR + "/" + ipkn): + return + bb.fatal("Need " + DR + "/" + ipkn + " or set MTS_INTERNAL_GIT and add it to BB_ENV_EXTRAWHITE") + + gt += ":mlinux/ipk.git " + gitversion + bb.note("git is " + gt) + tar = "tar -vx --strip-components 1 -C " + DR + " rs9113/" + ipkn + bb.note("tar is " + tar) + os.system(ex + ";" + gt + "|" + tar) +} + +FILES_${PN}-rm = "${sysconfdir}/init.d/mts-rm-rs9113" + +# Required drivers for Bluetooth and WiFi +FILES_kernel-module-${PN} = " \ + /opt/rs9113/*.ko \ + " + +# Required utility +FILES_${PN}-util = "/opt/rs9113/onebox_util" + +FILES_${PN}-dbg = "/opt/rs9113/.debug/bt_bbp_utils \ + /opt/rs9113/.debug \ + " + +# ELF files here are not normally installed on images. +FILES_${PN}-utils-extra = " \ + /opt/rs9113/zb* \ + /opt/rs9113/bt_transmit \ + /opt/rs9113/zb_transmit \ + /opt/rs9113/transmit \ + /opt/rs9113/transmit_packet \ + /opt/rs9113/bt_receive \ + /opt/rs9113/receive \ + /opt/rs9113/zb_util \ + /opt/rs9113/bt_util \ + /opt/rs9113/bbp_util \ + /opt/rs9113/zb_bbp_util \ + /opt/rs9113/bt_receive \ + /opt/rs9113/bt_bbp_utils \ + /opt/rs9113/sniffer_app \ + /opt/rs9113/START_RS9116_NBZ_D0N \ + " + +# pmemdata is for upgrading rs9113 non-volatile firmware +# *.rps are firmware files for various modes of +# rs9113 or rs9116 operation. +# MODE_PER is for certification testing. +# ZIGBEE is not supported. +# Files here are not normally installed on images. +FILES_${PN}-misc = " \ + /opt/rs9113/firmware/RS9113_WLAN_BT_DUAL_MODE_PER.rps \ + /opt/rs9113/firmware/RS9113_ZIGBEE_ROUTER.rps \ + /opt/rs9113/firmware/RS9113_ZIGBEE_COORDINATOR.rps \ + /opt/rs9113/firmware/RS9113_WLAN_ZIGBEE.rps \ + /opt/rs9113/firmware/pmemdata* \ + /opt/rs9113/firmware/flash_content \ + /opt/rs9113/*RS9116* \ + /opt/rs9113/*.orig \ + /opt/rs9113/*.txt \ + /opt/rs9113/*.sh \ + /opt/rs9113/*.conf \ + /opt/rs9113/p2pcommands.pl \ + /opt/rs9113/*reg \ + /opt/rs9113/afe_spi \ + /opt/rs9113/init.d \ + " + +CONFFILES_${PN}-noarch = "${sysconfdir}/default/" + +# noarch gets what is left to package. +FILES_${PN}-noarch = " \ + /opt/ \ + ${sysconfdir}/init.d/ \ + ${sysconfdir}/default/ \ + ${prefix}/ \ + " +do_compile() { + : Nothing to do +} +MR = "${WORKDIR}/rs9113" +do_install () { + bbnote "pwd,ls: $(pwd) $(ls) WORKDIR is ${WORKDIR}" + ( + cd ${WORKDIR} + find etc -print0 | cpio --owner root:root -0 -pdum ${D} + find usr -print0 | cpio --owner root:root -0 -pdum ${D} + find opt -print0 | cpio --owner root:root -0 -pdum ${D} + ) + install -d ${D}/opt/rs9113/init.d + install -d ${D}${sysconfdir}/init.d/ + install -d ${D}${sysconfdir}/default/ + install -m 0755 ${MR}/wpa_supplicant ${D}/opt/rs9113/init.d + install -m 0755 ${MR}/rs9113.init ${D}${sysconfdir}/init.d/rs9113 + install -m 0644 ${MR}/rs9113.default ${D}${sysconfdir}/default/rs9113 + install -m 0755 ${MR}/mts-rm-rs9113 ${D}${sysconfdir}/init.d/mts-rm-rs9113 +} + +python do_cleanall_prepend () { + bb.note("In do_clean_prepend") + DR = d.getVar("DR",True) + bb.note("About to delete " + DR) + os.system("/bin/rm -rf " + DR) +} + +# btclonly package sets Bluetooth Classic mode +pkg_postinst_${PN}-btclonly() { + sed -i 's/^COEX_MODE=.*/COEX_MODE=4/' $D${sysconfdir}/default/rs9113 +} + |