Elly Jones | ea9975e | 2011-03-29 17:28:15 -0400 | [diff] [blame] | 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | |
| 4 | # Original Author: The Chromium OS Authors <chromium-os-dev@chromium.org> |
| 5 | # Purpose: Install Gobi firmware for Chromium OS |
| 6 | # See: |
| 7 | # https://sites.google.com/a/google.com/chromeos/for-team-members/systems/gobi3kfirmwaretarball |
| 8 | |
| 9 | inherit cros-binary |
| 10 | |
| 11 | # @ECLASS-VARIABLE: GOBI_FIRMWARE_VID |
| 12 | # @DESCRIPTION: |
| 13 | # OEM Vendor ID |
| 14 | : ${GOBI_FIRMWARE_VID:=} |
| 15 | |
| 16 | # @ECLASS-VARIABLE: GOBI_FIRMWARE_PID |
| 17 | # @DESCRIPTION: |
| 18 | # OEM Product ID |
| 19 | : ${GOBI_FIRMWARE_PID:=} |
| 20 | |
| 21 | # @ECLASS-VARIABLE: GOBI_FIRMWARE_HASH |
| 22 | # @DESCRIPTION: |
| 23 | # Tarball hash |
| 24 | : ${GOBI_FIRMWARE_HASH:=} |
| 25 | |
| 26 | # @ECLASS-VARIABLE: GOBI_FIRMWARE_CARRIERS |
| 27 | # @DESCRIPTION: |
| 28 | # Install firmware for this list of carrier names. |
| 29 | : ${GOBI_FIRMWARE_CARRIERS:=} |
| 30 | |
| 31 | # Check for EAPI 2 or 3 |
| 32 | case "${EAPI:-0}" in |
| 33 | 3|2) ;; |
| 34 | 1|0|:) DEPEND="EAPI-UNSUPPORTED" ;; |
| 35 | esac |
| 36 | |
| 37 | gobi3k-firmware_src_unpack() { |
| 38 | mkdir -p ${S} |
| 39 | local fn="${PN}-${GOBI_FIRMWARE_VID}:${GOBI_FIRMWARE_PID}" |
| 40 | fn="${fn}-${GOBI_FIRMWARE_HASH}.tar.bz2" |
| 41 | CROS_BINARY_URI="${URI_BASE}/${fn}" |
| 42 | cros-binary_src_unpack |
| 43 | local target="${CROS_BINARY_STORE_DIR}/${fn}" |
| 44 | cp $target "${S}" |
| 45 | } |
| 46 | |
| 47 | gobi3k-firmware_install_firmware_files() { |
| 48 | local vid=${GOBI_FIRMWARE_VID} |
| 49 | local pid=${GOBI_FIRMWARE_PID} |
| 50 | local hash=${GOBI_FIRMWARE_HASH} |
| 51 | local fwid=${vid}:${pid} |
| 52 | local firmware_install_dir=${D}/opt/Qualcomm/firmware/${fwid} |
| 53 | |
| 54 | mkdir -p firmware |
| 55 | # tar rudely interprets x:y as a host:path specifier (!?) and tries to ssh |
| 56 | # to it on your behalf (!!), so... |
| 57 | tar -C firmware -xvj < gobi3k-firmware-${fwid}-${hash}.tar.bz2 |
| 58 | local base_firmware=firmware/${fwid} |
| 59 | |
| 60 | install -d ${firmware_install_dir} ${udev_rules_install_dir} |
| 61 | |
| 62 | for carrier in ${GOBI_FIRMWARE_CARRIERS} UMTS ; do |
| 63 | cp -af ${base_firmware}/${carrier} ${firmware_install_dir} |
| 64 | done |
| 65 | |
| 66 | find ${firmware_install_dir}/${oem} -type f -exec chmod 444 {} \; |
| 67 | find ${firmware_install_dir}/${oem} -type d -exec chmod 555 {} \; |
| 68 | } |
| 69 | |
| 70 | gobi3k-firmware_src_install() { |
| 71 | # Verify that eclass variables are set |
| 72 | [ -z "${GOBI_FIRMWARE_VID}" ] && die "Must specify GOBI_FIRMWARE_VID" |
| 73 | [ -z "${GOBI_FIRMWARE_PID}" ] && die "Must specify GOBI_FIRMWARE_PID" |
| 74 | [ -z "${GOBI_FIRMWARE_HASH}" ] && die "Must specify GOBI_FIRMWARE_HASH" |
| 75 | [ -z "${GOBI_FIRMWARE_CARRIERS}" ] && |
| 76 | die "Must specify GOBI_FIRMWARE_CARRIERS" |
| 77 | |
| 78 | gobi3k-firmware_install_firmware_files |
| 79 | } |
| 80 | |
| 81 | EXPORT_FUNCTIONS src_unpack src_install |