summaryrefslogtreecommitdiff
path: root/recipes/pvrusb2-mci
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/pvrusb2-mci')
-rwxr-xr-xrecipes/pvrusb2-mci/files/firmware.hotplug61
-rwxr-xr-xrecipes/pvrusb2-mci/files/hotplug.functions193
-rw-r--r--recipes/pvrusb2-mci/pvrusb2-mci-20060903/Makefile.patch25
-rw-r--r--recipes/pvrusb2-mci/pvrusb2-mci-20080210/Makefile.patch25
-rw-r--r--recipes/pvrusb2-mci/pvrusb2-mci.inc6
-rw-r--r--recipes/pvrusb2-mci/pvrusb2-mci2.inc4
-rw-r--r--recipes/pvrusb2-mci/pvrusb2-mci_20060903.bb43
-rw-r--r--recipes/pvrusb2-mci/pvrusb2-mci_20080210.bb43
8 files changed, 400 insertions, 0 deletions
diff --git a/recipes/pvrusb2-mci/files/firmware.hotplug b/recipes/pvrusb2-mci/files/firmware.hotplug
new file mode 100755
index 0000000000..40673a7b74
--- /dev/null
+++ b/recipes/pvrusb2-mci/files/firmware.hotplug
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# Firmware-specific hotplug policy agent.
+#
+# Kernel firmware hotplug params include:
+#
+# ACTION=%s [add or remove]
+# DEVPATH=%s [in 2.5 kernels, /sys/$DEVPATH]
+# FIRMWARE=%s
+#
+# HISTORY:
+#
+# 24-Jul-2003 Initial version of "new" hotplug agent.
+#
+# $Id: firmware.agent,v 1.3 2004/03/14 15:52:56 ukai Exp $
+#
+
+cd /etc/hotplug.d/firmware
+. ./hotplug.functions
+# DEBUG=yes export DEBUG
+
+# directory of the firmware files
+FIRMWARE_DIR=/lib/firmware
+
+# mountpoint of sysfs
+SYSFS=$(sed -n 's/^.* \([^ ]*\) sysfs .*$/\1/p' /proc/mounts)
+
+# use /proc for 2.4 kernels
+if [ "$SYSFS" = "" ]; then
+ SYSFS=/proc
+fi
+
+#
+# What to do with this firmware hotplug event?
+#
+case "$ACTION" in
+
+add)
+ if [ ! -e $SYSFS/$DEVPATH/loading ]; then
+ sleep 1
+ fi
+
+ if [ -f "$FIRMWARE_DIR/$FIRMWARE" ]; then
+ echo 1 > $SYSFS/$DEVPATH/loading
+ cp "$FIRMWARE_DIR/$FIRMWARE" $SYSFS/$DEVPATH/data
+ echo 0 > $SYSFS/$DEVPATH/loading
+ else
+ echo -1 > $SYSFS/$DEVPATH/loading
+ fi
+
+ ;;
+
+remove)
+ ;;
+
+*)
+ mesg "Firmware '$ACTION' event not supported"
+ exit 1
+ ;;
+
+esac
diff --git a/recipes/pvrusb2-mci/files/hotplug.functions b/recipes/pvrusb2-mci/files/hotplug.functions
new file mode 100755
index 0000000000..e3cc7e6e7a
--- /dev/null
+++ b/recipes/pvrusb2-mci/files/hotplug.functions
@@ -0,0 +1,193 @@
+#
+# Setup and BASH utility functions for use in hotplug agents
+#
+# Most essential parameters are passed from the kernel using
+# environment variables. For more information, see the docs
+# on-line at http://linux-hotplug.sourceforge.net or the
+# sources for each hotplug-aware kernel subsystem.
+#
+# $Id: hotplug.functions,v 1.26 2004/04/01 07:33:32 kroah Exp $
+#
+#
+
+# DEBUG=yes; export DEBUG
+PATH=/bin:/sbin:/usr/sbin:/usr/bin
+
+KERNEL=`uname -r`
+MODULE_DIR=/lib/modules/$KERNEL
+
+HOTPLUG_DIR=/etc/hotplug
+
+if [ -f /etc/sysconfig/hotplug ]; then
+ . /etc/sysconfig/hotplug
+fi
+
+if [ -x /usr/bin/logger ]; then
+ LOGGER=/usr/bin/logger
+elif [ -x /bin/logger ]; then
+ LOGGER=/bin/logger
+else
+ unset LOGGER
+fi
+#
+# for diagnostics
+#
+if [ -t 1 -o -z "$LOGGER" ]; then
+ mesg () {
+ echo "$@"
+ }
+else
+ mesg () {
+ $LOGGER -t $(basename $0)"[$$]" "$@"
+ }
+fi
+
+debug_mesg () {
+ test "$DEBUG" = "" -o "$DEBUG" = no && return
+ mesg "$@"
+}
+
+
+#
+# Not "modprobe --autoclean" ... one driver module can handle many
+# devices. Unloading should be done when no devices are present.
+# Autocleaning happens if none of the devices are open, once any of
+# them gets opened; wrong timing.
+#
+MODPROBE="/sbin/modprobe -s -q"
+#MODPROBE="/sbin/modprobe -vs"
+
+
+####################################################################
+#
+# usage: load_driver type filename description
+#
+# modprobes driver module(s) if appropriate, and optionally
+# invokes a driver-specific setup script (or user-mode driver).
+#
+# the "modules.*map" format file is guaranteed to exist
+#
+load_drivers ()
+{
+ local LOADED TYPE FILENAME DESCRIPTION LISTER
+ DRIVERS=""
+
+ # make this routine more readable
+ TYPE=$1
+ FILENAME=$2
+ DESCRIPTION=$3
+
+ # should we use usbmodules, pcimodules? not on 2.5+, because sysfs
+ # ought to expose the data we need to find all candidate drivers.
+ # (on 2.5.48 it does for usb; but maybe not yet for pci.)
+ case "$KERNEL" in
+ 2.2*|2.3*|2.4*) LISTER=`which ${TYPE}modules` ;;
+ *) LISTER="" ;;
+ esac
+
+ if [ "$LISTER" != "" ]; then
+ # lister programs MIGHT be preferable to parsing from shell scripts:
+ # - usbmodules used for (a) multi-interface devices, (b) coldplug
+ # - pcimodules used only for coldplug
+ case $TYPE in
+ usb)
+ # "usbutils-0.8" (or later) is needed in $PATH
+ # only works if we have usbfs
+ # ... reads more descriptors than are passed in env
+ # ... doesn't handle comment syntax either
+ if [ "$DEVICE" = "" -o ! -f "$DEVICE" ]; then
+ LISTER=
+ else
+ DRIVERS=`$LISTER --mapfile $FILENAME --device $DEVICE`
+ fi ;;
+
+ pci)
+ debug_mesg "pcimodules is scanning more than $PCI_SLOT ..."
+ DRIVERS=`$LISTER`
+ ;;
+ esac
+ fi
+
+ # try parsing by shell scripts if no luck yet
+ if [ "$DRIVERS" = "" ]; then
+ ${TYPE}_map_modules < $FILENAME
+ fi
+
+ # FIXME remove dups and blacklisted modules from $DRIVERS here
+
+ if [ "$DRIVERS" = "" ]; then
+ return
+ fi
+
+ # Note that DRIVERS aren't all going to be modules.
+ # For USB, some user-mode drivers or setup scripts may be listed.
+ debug_mesg Setup $DRIVERS for $DESCRIPTION
+
+ # either kernel or user mode drivers may need to be set up
+ for MODULE in $DRIVERS
+ do
+ # maybe driver modules need loading
+ LOADED=false
+ if ! lsmod | grep -q "^$(echo $MODULE|sed -e 's/-/_/g') " > /dev/null 2>&1; then
+ if grep -q "^$MODULE\$" $HOTPLUG_DIR/blacklist \
+ >/dev/null 2>&1; then
+ debug_mesg "... blacklisted module: $MODULE"
+ continue
+ fi
+
+ # statically linked modules aren't shown by 'lsmod',
+ # and user mode drivers will ONLY have a setup script;
+ # it's not an error if a module doesn't exist or won't load.
+ if $MODPROBE -n $MODULE >/dev/null 2>&1 &&
+ ! $MODPROBE $MODULE >/dev/null 2>&1 ; then
+ mesg "... can't load module $MODULE"
+ else
+ # /etc/modules.conf may have set non-default module
+ # parameters ... handle per-device parameters in apps
+ # (ioctls etc) not in setup scripts or modules.conf
+ LOADED=true
+ fi
+ else
+ # This module is already loaded
+ LOADED=true
+ fi
+
+ # always run setup scripts after any matching kernel code has had
+ # a chance to do its thing, no matter whether it was dynamically
+ # or statically linked, or if there is only a user mode driver.
+ # the script might re-enumerate usb devices after firmware download,
+ # giving kernel code another chance.
+ if [ -x $HOTPLUG_DIR/$TYPE/$MODULE ]; then
+ debug_mesg Module setup $MODULE for $DESCRIPTION
+ $HOTPLUG_DIR/$TYPE/$MODULE
+ LOADED=true
+ fi
+
+ if [ "$LOADED" = "false" ]; then
+ mesg "missing kernel or user mode driver $MODULE "
+ fi
+ if echo "$MODULE" | grep -q "usb-storage" > /dev/null 2>&1 ; then
+ [ -x /usr/sbin/updfstab ] && /usr/sbin/updfstab
+ fi
+ done
+}
+
+####################################################################
+#
+# usage: log_to_stdout filename
+#
+# writes a copy of the current hotplug event to stdout.
+# add buffering, to avoid interleaving reports!
+#
+log_to_stdout ()
+{
+ if [ -x /bin/date ]; then
+ echo "HOTPLUG_TIME='$(/bin/date)'"
+ fi
+
+ env | egrep -v '^PATH=|^PWD=|^_=|^OLDPWD=|^SHLVL=|^HOME='
+ echo ''
+ # empty line terminates events
+}
+
+# vim:syntax=sh
diff --git a/recipes/pvrusb2-mci/pvrusb2-mci-20060903/Makefile.patch b/recipes/pvrusb2-mci/pvrusb2-mci-20060903/Makefile.patch
new file mode 100644
index 0000000000..3db0b2c9d6
--- /dev/null
+++ b/recipes/pvrusb2-mci/pvrusb2-mci-20060903/Makefile.patch
@@ -0,0 +1,25 @@
+*** driver/Makefile.orig 2006-04-02 03:40:31.000000000 +0200
+--- driver/Makefile 2006-04-26 21:56:46.000000000 +0200
+***************
+*** 57,66 ****
+ CONFIG_VARS+= CONFIG_VIDEO_PVRUSB2_DEBUGIFC=y
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) $(CONFIG_VARS) $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) $(CONFIG_VARS) modules_install
+
+ else
+
+--- 57,66 ----
+ CONFIG_VARS+= CONFIG_VIDEO_PVRUSB2_DEBUGIFC=y
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) $(CONFIG_VARS) $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) $(CONFIG_VARS) modules_install
+
+ else
+
diff --git a/recipes/pvrusb2-mci/pvrusb2-mci-20080210/Makefile.patch b/recipes/pvrusb2-mci/pvrusb2-mci-20080210/Makefile.patch
new file mode 100644
index 0000000000..3db0b2c9d6
--- /dev/null
+++ b/recipes/pvrusb2-mci/pvrusb2-mci-20080210/Makefile.patch
@@ -0,0 +1,25 @@
+*** driver/Makefile.orig 2006-04-02 03:40:31.000000000 +0200
+--- driver/Makefile 2006-04-26 21:56:46.000000000 +0200
+***************
+*** 57,66 ****
+ CONFIG_VARS+= CONFIG_VIDEO_PVRUSB2_DEBUGIFC=y
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) $(CONFIG_VARS) $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) $(CONFIG_VARS) modules_install
+
+ else
+
+--- 57,66 ----
+ CONFIG_VARS+= CONFIG_VIDEO_PVRUSB2_DEBUGIFC=y
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) $(CONFIG_VARS) $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) $(CONFIG_VARS) modules_install
+
+ else
+
diff --git a/recipes/pvrusb2-mci/pvrusb2-mci.inc b/recipes/pvrusb2-mci/pvrusb2-mci.inc
new file mode 100644
index 0000000000..2e1fdac02d
--- /dev/null
+++ b/recipes/pvrusb2-mci/pvrusb2-mci.inc
@@ -0,0 +1,6 @@
+DESCRIPTION = "Driver for the Hauppauge WinTV PVR USB2"
+AUTHOR = "Mike Isely"
+HOMEPAGE = "http://www.isely.net/pvrusb2.html"
+SECTION = "kernel/modules"
+PRIORITY = "optional"
+LICENSE = "GPL"
diff --git a/recipes/pvrusb2-mci/pvrusb2-mci2.inc b/recipes/pvrusb2-mci/pvrusb2-mci2.inc
new file mode 100644
index 0000000000..f916880cf4
--- /dev/null
+++ b/recipes/pvrusb2-mci/pvrusb2-mci2.inc
@@ -0,0 +1,4 @@
+require pvrusb2-mci.inc
+
+export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${layout_libdir} \
+ -Wl,-rpath-link,${STAGING_DIR_TARGET}${layout_libdir}"
diff --git a/recipes/pvrusb2-mci/pvrusb2-mci_20060903.bb b/recipes/pvrusb2-mci/pvrusb2-mci_20060903.bb
new file mode 100644
index 0000000000..afd24025d9
--- /dev/null
+++ b/recipes/pvrusb2-mci/pvrusb2-mci_20060903.bb
@@ -0,0 +1,43 @@
+# FIXME, consider using kernel staging directory instead of KERNEL_SOURCE which is
+# located in the work directory. see module.bbclass
+
+require pvrusb2-mci2.inc
+
+RRECOMMENDS = "kernel-module-tveeprom \
+ kernel-module-firmware-class \
+ kernel-module-tuner \
+ kernel-module-msp3400 \
+ kernel-module-saa7115 \
+ kernel-module-tda9887 \
+ kernel-module-v4l1-compat \
+ kernel-module-v4l2-common \
+ kernel-module-videodev"
+
+SRC_URI = "http://www.isely.net/downloads/pvrusb2-mci-${PV}.tar.bz2 \
+ file://hotplug.functions \
+ file://firmware.hotplug \
+ file://Makefile.patch;patch=1"
+
+S = "${WORKDIR}/pvrusb2-mci-${PV}/driver"
+
+inherit module
+
+CFLAGS = "'-I${KERNEL_SOURCE}/include' \
+ '-I${KERNEL_SOURCE}/drivers/media/video' "
+
+CFLAGS_append_arm = " '-D__LINUX_ARM_ARCH__=5' "
+
+CFLAGS_append_armeb = " '-D__LINUX_ARM_ARCH__=5' "
+
+EXTRA_OEMAKE = "'V=1' 'CFLAGS=${CFLAGS}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}' \
+ 'KDIR=${STAGING_KERNEL_DIR}'"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ mkdir -p ${D}/etc/hotplug.d/firmware
+ cp ${WORKDIR}/hotplug.functions ${D}/etc/hotplug.d/firmware
+ cp ${WORKDIR}/firmware.hotplug ${D}/etc/hotplug.d/firmware
+}
diff --git a/recipes/pvrusb2-mci/pvrusb2-mci_20080210.bb b/recipes/pvrusb2-mci/pvrusb2-mci_20080210.bb
new file mode 100644
index 0000000000..afd24025d9
--- /dev/null
+++ b/recipes/pvrusb2-mci/pvrusb2-mci_20080210.bb
@@ -0,0 +1,43 @@
+# FIXME, consider using kernel staging directory instead of KERNEL_SOURCE which is
+# located in the work directory. see module.bbclass
+
+require pvrusb2-mci2.inc
+
+RRECOMMENDS = "kernel-module-tveeprom \
+ kernel-module-firmware-class \
+ kernel-module-tuner \
+ kernel-module-msp3400 \
+ kernel-module-saa7115 \
+ kernel-module-tda9887 \
+ kernel-module-v4l1-compat \
+ kernel-module-v4l2-common \
+ kernel-module-videodev"
+
+SRC_URI = "http://www.isely.net/downloads/pvrusb2-mci-${PV}.tar.bz2 \
+ file://hotplug.functions \
+ file://firmware.hotplug \
+ file://Makefile.patch;patch=1"
+
+S = "${WORKDIR}/pvrusb2-mci-${PV}/driver"
+
+inherit module
+
+CFLAGS = "'-I${KERNEL_SOURCE}/include' \
+ '-I${KERNEL_SOURCE}/drivers/media/video' "
+
+CFLAGS_append_arm = " '-D__LINUX_ARM_ARCH__=5' "
+
+CFLAGS_append_armeb = " '-D__LINUX_ARM_ARCH__=5' "
+
+EXTRA_OEMAKE = "'V=1' 'CFLAGS=${CFLAGS}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}' \
+ 'KDIR=${STAGING_KERNEL_DIR}'"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ mkdir -p ${D}/etc/hotplug.d/firmware
+ cp ${WORKDIR}/hotplug.functions ${D}/etc/hotplug.d/firmware
+ cp ${WORKDIR}/firmware.hotplug ${D}/etc/hotplug.d/firmware
+}