Add hmp-usb-dvb-t2-c driver.
authorhschang <chang@dev3>
Thu, 2 Jul 2020 01:21:36 +0000 (10:21 +0900)
committerhschang <chang@dev3>
Fri, 3 Jul 2020 07:31:35 +0000 (16:31 +0900)
44 files changed:
meta-bsp/conf/machine/vuzero4k.conf
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_141106.bb [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_160430.bb [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/defconfig [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/fix-strip.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/localversion.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/rename_dvb-usb-v2.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/sit2_op.o_150322_arm [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_adapter_adjustment.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_backport.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_keep_compatibility.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_no_v4l_firmwares_install.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/defconfig [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/sit2_op.o_150322_arm [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/vu_kernel_4.1.20.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c.bb [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/defconfig [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/fix-strip.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/localversion.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/rename_dvb-usb-v2.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/sit2_op.o_141106 [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_adapter_adjustment.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_keep_compatibility.patch [new file with mode: 0644]
meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_no_v4l_firmwares_install.patch [new file with mode: 0644]
meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5.inc
meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuduo2/vuduo2_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolo2/vusolo2_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolose/vusolose_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuzero/vuzero_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28.inc
meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vusolo4k/vusolo4k_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuultimo4k/vuultimo4k_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuuno4k/vuuno4k_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6.inc
meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/bm750/bm750_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vusolo/vusolo_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuultimo/vuultimo_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuuno/vuuno_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20.inc
meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuuno4kse/vuuno4kse_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuzero4k/vuzero4k_defconfig
meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45.inc
meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45/vuduo4k/vuduo4k_defconfig
meta-openvuplus/recipes-vuplus/packagegroups/packagegroup-vuplus-essential.bb

index d0748d9..fb8c324 100644 (file)
@@ -31,4 +31,5 @@ LINUXLIBCVERSION = "4.1.20"
 VUPLUS_KERNEL_VERSION = "4.1.20"
 
 PREFERRED_VERSION_vuplus-tuner-turbo = "4.1.20-1.5"
+PREFERRED_VERSION_hmp-usb-dvb-t2-c-arm = "V160430"
 
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_141106.bb b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_141106.bb
new file mode 100644 (file)
index 0000000..57ce827
--- /dev/null
@@ -0,0 +1,96 @@
+SUMMARY = "media tree drivers for hmp-usb-dvb-t2-c"
+HOMEPAGE = "http://linuxtv.org/"
+SECTION = "kernel/modules"
+LICENSE = "GPLv2"
+
+SRC_URI[md5sum] = "8073a7921a6f1e154083d71bc2ef5b46"
+SRC_URI[sha256sum] = "b0a32dc6efb5cb62c0572938de10cd3d718d94191fe4648a9722b7fdddcad2d5"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+DEPENDS = "virtual/kernel module-init-tools perl"
+KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
+
+do_fetch[depends] += "virtual/kernel:do_package_write_ipk"
+
+inherit module
+
+PROVIDES += "hmp-usb-dvb-t2-c-arm"
+RPROVIDES_${PN} = "kernel-module-dvb-usb-dvbsky \
+                   kernel-module-dvbsky-m88rs6000 \
+                   kernel-module-dvbsky-m88ds3103 \
+                   kernel-module-sit2fe \
+                   kernel-module-dvb-usb-v2-media-tree \
+                    "
+SRCDATE = "141106"
+SRCDATE_VER = "${SRCDATE}"
+SRCDATE_BIN = "150322"
+
+PV = "V${SRCDATE_VER}"
+PR = "r0"
+
+PACKAGES = "${PN} \
+            ${PN}-dev \
+            ${PN}-dbg \
+            "
+FILES_${PN} = " \
+       /lib/firmware/dvb-fe-ds300x.fw \
+       /lib/firmware/dvb-fe-ds3103.fw \
+       /lib/firmware/dvb-fe-rs6000.fw \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/dvbsky_m88rs6000.ko \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/sit2fe.ko \
+       /lib/modules/*/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2_media_tree.ko \
+       /lib/modules/*/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko \
+       "
+
+FILES_${PN}-dev = " \
+       /lib/modules/*/modules.* \
+       /lib/firmware/* \
+       "
+
+SRC_URI = "http://dvbsky.net/download/linux/media_build-bst-14-${SRCDATE}.tar.gz \
+           file://fix-strip.patch;patch=1 \
+           file://rename_dvb-usb-v2.patch \
+           file://vu_adapter_adjustment.patch \
+           file://vu_keep_compatibility.patch \
+           file://vu_no_v4l_firmwares_install.patch \
+           file://vu_backport.patch \
+           file://defconfig \
+           file://sit2_op.o_${SRCDATE_BIN}_arm \
+"
+
+S = "${WORKDIR}/media_build-bst-14"
+
+EXTRA_OEMAKE = "LINUX_SRC=${STAGING_KERNEL_DIR} OUTDIR=${STAGING_KERNEL_BUILDDIR}"
+
+do_configure_prepend() {
+       CUR=`pwd`
+       cp ${WORKDIR}/sit2_op.o_${SRCDATE_BIN}_arm ${S}/v4l/sit2_op.o
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake DIR=${STAGING_KERNEL_BUILDDIR} allyesconfig
+       cd $CUR
+}
+
+do_configure() {
+       install -m 0644 ${WORKDIR}/defconfig ${S}/v4l/.config
+}
+
+do_compile() {
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake KDIR="${STAGING_KERNEL_DIR}" DIR="${STAGING_KERNEL_DIR}" ${MAKE_TARGETS}
+       arm-oe-linux-gnueabi-strip --strip-debug ${S}/v4l/sit2fe.ko
+}
+
+do_install() {
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake DIR="${STAGING_KERNEL_BUILDDIR}" DESTDIR="${D}" install
+       install -m 0644 ${S}/v4l/sit2fe.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/media/dvb-frontends/
+       install -d 0644 ${D}${base_libdir}/firmware
+       install -m 0644 ${S}/dvbsky-firmware/*.fw ${D}${base_libdir}/firmware/
+}
+
+pkg_postinst_${PN} () {
+       depmod -a
+}
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/hmp-usb-dvb-t2-c-v03arm:"
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_160430.bb b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_160430.bb
new file mode 100644 (file)
index 0000000..2b9fb61
--- /dev/null
@@ -0,0 +1,96 @@
+SUMMARY = "media tree drivers for hmp-usb-dvb-t2-c"
+HOMEPAGE = "http://linuxtv.org/"
+SECTION = "kernel/modules"
+LICENSE = "GPLv2"
+
+SRC_URI[md5sum] = "66990bd8b8aa3759d764552a7ccac013"
+SRC_URI[sha256sum] = "b3c612d792834d14c981c400022ec923c154e10161121cf730a09b4ed4e35b04"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+DEPENDS = "virtual/kernel module-init-tools perl"
+KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
+
+do_fetch[depends] += "virtual/kernel:do_package_write_ipk"
+
+inherit module
+
+PROVIDES += "hmp-usb-dvb-t2-c-arm"
+RPROVIDES_${PN} = "kernel-module-dvb-usb-dvbsky \
+                   kernel-module-dvbsky-m88rs6000 \
+                   kernel-module-dvbsky-m88ds3103 \
+                   kernel-module-sit2fe \
+                   kernel-module-dvb-usb-v2-media-tree \
+                    "
+SRCDATE = "160430"
+SRCDATE_VER = "${SRCDATE}"
+SRCDATE_BIN = "150322"
+
+PV = "V${SRCDATE_VER}"
+PR = "r0"
+
+PACKAGES = "${PN} \
+            ${PN}-dev \
+            ${PN}-dbg \
+            "
+FILES_${PN} = " \
+       /lib/firmware/dvb-fe-ds300x.fw \
+       /lib/firmware/dvb-fe-ds3103.fw \
+       /lib/firmware/dvb-fe-rs6000.fw \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/dvbsky_m88rs6000.ko \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/sit2fe.ko \
+       /lib/modules/*/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2_media_tree.ko \
+       /lib/modules/*/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko \
+       "
+
+FILES_${PN}-dev = " \
+       /lib/modules/*/modules.* \
+       /lib/firmware/* \
+       "
+SRC_URI = "http://dvbsky.net/download/linux/media_build-bst-${SRCDATE}.tar.gz \
+           file://vu_kernel_4.1.20.patch \
+           file://defconfig \
+           file://sit2_op.o_${SRCDATE_BIN}_arm \
+"
+
+#           file://fix-strip.patch;patch=1 
+
+S = "${WORKDIR}/media_build-bst-${SRCDATE}"
+
+EXTRA_OEMAKE = "LINUX_SRC=${STAGING_KERNEL_DIR} OUTDIR=${STAGING_KERNEL_BUILDDIR}"
+
+do_configure_prepend() {
+       CUR=`pwd`
+       cp ${WORKDIR}/sit2_op.o_${SRCDATE_BIN}_arm ${S}/v4l/sit2_op.o
+       tar -xzf ${S}/dvbsky-firmware.tar.gz
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake DIR=${STAGING_KERNEL_BUILDDIR} allyesconfig
+       cd $CUR
+}
+
+do_configure() {
+       install -m 0644 ${WORKDIR}/defconfig ${S}/v4l/.config
+}
+
+do_compile() {
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake KDIR="${STAGING_KERNEL_DIR}" DIR="${STAGING_KERNEL_DIR}" ${MAKE_TARGETS}
+       arm-oe-linux-gnueabi-strip --strip-debug ${S}/v4l/sit2fe.ko
+}
+
+do_install() {
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake DIR="${STAGING_KERNEL_BUILDDIR}" DESTDIR="${D}" install
+       rm -rf ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/media/pci
+       install -m 0644 ${S}/v4l/sit2fe.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/media/dvb-frontends/
+       install -d 0644 ${D}${base_libdir}/firmware
+       install -m 0644 ${S}/dvbsky-firmware/*.fw ${D}${base_libdir}/firmware/
+}
+
+pkg_postinst_${PN} () {
+       depmod -a
+}
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/hmp-usb-dvb-t2-c-v04arm:"
+
+COMPATIBLE_MACHINE = "^(vuzero4k)$"
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/defconfig b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/defconfig
new file mode 100644 (file)
index 0000000..f5af750
--- /dev/null
@@ -0,0 +1,366 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# V4L/DVB menu
+#
+# CONFIG_SND_MIRO is not set
+CONFIG_INPUT=y
+CONFIG_GPIOLIB=y
+CONFIG_PM_RUNTIME=y
+CONFIG_USB=y
+# CONFIG_ARCH_DAVINCI_DM365 is not set
+# CONFIG_MFD_SYSCON is not set
+CONFIG_NEW_LEDS=y
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_SPARC64 is not set
+# CONFIG_SOC_EXYNOS4412 is not set
+CONFIG_FW_LOADER=y
+# CONFIG_TTY is not set
+# CONFIG_GENERIC_PHY is not set
+CONFIG_SND_SOC=m
+# CONFIG_PLAT_M32700UT is not set
+# CONFIG_ARCH_EXYNOS is not set
+CONFIG_SND_FM801=m
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_STA2X11 is not set
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_PLAT_S5P is not set
+CONFIG_MFD_WL1273_CORE=m
+# CONFIG_ALPHA is not set
+CONFIG_RFKILL=y
+# CONFIG_PLAT_S3C24XX is not set
+# CONFIG_HAVE_CLK is not set
+# CONFIG_COMPILE_TEST is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_FIQ is not set
+CONFIG_DMADEVICES=y
+# CONFIG_OMAP2_DSS is not set
+CONFIG_REGULATOR=y
+CONFIG_SND=m
+# CONFIG_CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_BROKEN is not set
+# CONFIG_ARCH_OMAP2 is not set
+# CONFIG_OF is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUPPORT is not set
+# CONFIG_SPARC32 is not set
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_SND_ISA is not set
+# CONFIG_OMAP_DM_TIMER is not set
+# CONFIG_ARCH_AT91 is not set
+CONFIG_INET=y
+# CONFIG_SOC_IMX27 is not set
+# CONFIG_ARCH_OMAP3 is not set
+CONFIG_CRC32=y
+# CONFIG_CONFIG_SMS_USB_DRV is not set
+CONFIG_SYSFS=y
+CONFIG_MMC=y
+# CONFIG_ARCH_OMAP2PLUS is not set
+# CONFIG_ISA is not set
+# CONFIG_OMAP2_VRFB is not set
+CONFIG_PCI=y
+CONFIG_TI_ST=m
+CONFIG_PARPORT_1284=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_PARPORT=m
+# CONFIG_SOC_EXYNOS4212 is not set
+# CONFIG_PPC_MPC512x is not set
+CONFIG_FB_VIA=m
+CONFIG_FIREWIRE=m
+CONFIG_I2C_GPIO=m
+CONFIG_NET=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_SOC_EXYNOS5250 is not set
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_PXA27x is not set
+# CONFIG_OMAP_IOVMM is not set
+# CONFIG_ARCH_EXYNOS5 is not set
+# CONFIG_SGI_IP22 is not set
+CONFIG_ISA_DMA_API=y
+CONFIG_I2C=y
+CONFIG_TIMB_DMA=m
+CONFIG_REGMAP_I2C=y
+# CONFIG_ARCH_MMP is not set
+CONFIG_MODULES=y
+CONFIG_HAS_IOMEM=y
+CONFIG_DMA_ENGINE=y
+# CONFIG_MACH_MX27 is not set
+# CONFIG_ARCH_MXC is not set
+CONFIG_MFD_CORE=y
+# CONFIG_SND_SOC_SI476X is not set
+CONFIG_MFD_TIMBERDALE=m
+CONFIG_DEBUG_FS=y
+CONFIG_SPI=y
+# CONFIG_ARCH_OMAP4 is not set
+CONFIG_HAS_DMA=y
+# CONFIG_BLACKFIN is not set
+# CONFIG_SRAM is not set
+CONFIG_X86=y
+# CONFIG_SOC_DRA7XX is not set
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_FB=y
+# CONFIG_ARCH_MX1 is not set
+CONFIG_I2C_MUX=m
+# CONFIG_ARCH_MULTIPLATFORM is not set
+CONFIG_SONY_LAPTOP=m
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_PNP=y
+# CONFIG_MX3_IPU is not set
+CONFIG_SND_PCM=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_M32R is not set
+CONFIG_LEDS_CLASS=y
+CONFIG_BITREVERSE=y
+# CONFIG_VIDEO_KERNEL_VERSION is not set
+CONFIG_MEDIA_SUPPORT=y
+
+#
+# Multimedia core support
+#
+# CONFIG_MEDIA_CAMERA_SUPPORT is not set
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_DVB_CORE=y
+CONFIG_DVB_NET=y
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+#
+# Media drivers
+#
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_RC_CORE=y
+CONFIG_RC_MAP=y
+
+#
+# Analog/digital TV USB devices
+#
+# CONFIG_VIDEO_AU0828 is not set
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_V2_MEDIATREE=m
+# CONFIG_DVB_USB_AF9015 is not set
+# CONFIG_DVB_USB_AF9035 is not set
+# CONFIG_DVB_USB_ANYSEE is not set
+# CONFIG_DVB_USB_AU6610 is not set
+# CONFIG_DVB_USB_AZ6007 is not set
+# CONFIG_DVB_USB_CE6230 is not set
+# CONFIG_DVB_USB_EC168 is not set
+# CONFIG_DVB_USB_GL861 is not set
+# CONFIG_DVB_USB_MXL111SF is not set
+# CONFIG_DVB_USB_RTL28XXU is not set
+CONFIG_DVB_USB_DVBSKY=m
+# CONFIG_DVB_TTUSB_BUDGET is not set
+# CONFIG_DVB_TTUSB_DEC is not set
+# CONFIG_SMS_USB_DRV is not set
+# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+# CONFIG_MEDIA_PCI_SUPPORT is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+# CONFIG_SMS_SDIO_DRV is not set
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+# CONFIG_DVB_FIREDTV is not set
+# CONFIG_CYPRESS_FIRMWARE is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
+CONFIG_MEDIA_ATTACH=y
+
+#
+# Customize TV tuners
+#
+# CONFIG_MEDIA_TUNER_SIMPLE is not set
+# CONFIG_MEDIA_TUNER_TDA8290 is not set
+# CONFIG_MEDIA_TUNER_TDA827X is not set
+# CONFIG_MEDIA_TUNER_TDA18271 is not set
+# CONFIG_MEDIA_TUNER_TDA9887 is not set
+# CONFIG_MEDIA_TUNER_TEA5761 is not set
+# CONFIG_MEDIA_TUNER_TEA5767 is not set
+# CONFIG_MEDIA_TUNER_MT20XX is not set
+# CONFIG_MEDIA_TUNER_MT2060 is not set
+# CONFIG_MEDIA_TUNER_MT2063 is not set
+# CONFIG_MEDIA_TUNER_MT2266 is not set
+# CONFIG_MEDIA_TUNER_MT2131 is not set
+# CONFIG_MEDIA_TUNER_QT1010 is not set
+# CONFIG_MEDIA_TUNER_XC2028 is not set
+# CONFIG_MEDIA_TUNER_XC5000 is not set
+# CONFIG_MEDIA_TUNER_XC4000 is not set
+# CONFIG_MEDIA_TUNER_MXL5005S is not set
+# CONFIG_MEDIA_TUNER_MXL5007T is not set
+# CONFIG_MEDIA_TUNER_MC44S803 is not set
+# CONFIG_MEDIA_TUNER_MAX2165 is not set
+# CONFIG_MEDIA_TUNER_TDA18218 is not set
+# CONFIG_MEDIA_TUNER_FC0011 is not set
+# CONFIG_MEDIA_TUNER_FC0012 is not set
+# CONFIG_MEDIA_TUNER_FC0013 is not set
+# CONFIG_MEDIA_TUNER_TDA18212 is not set
+# CONFIG_MEDIA_TUNER_E4000 is not set
+# CONFIG_MEDIA_TUNER_FC2580 is not set
+# CONFIG_MEDIA_TUNER_M88TS2022 is not set
+# CONFIG_MEDIA_TUNER_TUA9001 is not set
+# CONFIG_MEDIA_TUNER_IT913X is not set
+# CONFIG_MEDIA_TUNER_R820T is not set
+
+#
+# Customise DVB Frontends
+#
+
+#
+# Multistandard (satellite) frontends
+#
+# CONFIG_DVB_STB0899 is not set
+# CONFIG_DVB_STB6100 is not set
+# CONFIG_DVB_STV090x is not set
+# CONFIG_DVB_STV6110x is not set
+
+#
+# Multistandard (cable + terrestrial) frontends
+#
+# CONFIG_DVB_DRXK is not set
+# CONFIG_DVB_TDA18271C2DD is not set
+
+#
+# DVB-S (satellite) frontends
+#
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_ZL10036 is not set
+# CONFIG_DVB_ZL10039 is not set
+# CONFIG_DVB_S5H1420 is not set
+# CONFIG_DVB_STV0288 is not set
+# CONFIG_DVB_STB6000 is not set
+# CONFIG_DVB_STV0299 is not set
+# CONFIG_DVB_STV6110 is not set
+# CONFIG_DVB_STV0900 is not set
+# CONFIG_DVB_TDA8083 is not set
+# CONFIG_DVB_TDA10086 is not set
+# CONFIG_DVB_TDA8261 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_TUNER_ITD1000 is not set
+# CONFIG_DVB_TUNER_CX24113 is not set
+# CONFIG_DVB_TDA826X is not set
+# CONFIG_DVB_TUA6100 is not set
+# CONFIG_DVB_CX24116 is not set
+CONFIG_DVB_DVBSKY_M88DS3103=m
+# CONFIG_DVB_M88DC2800 is not set
+CONFIG_DVB_SIT2=m
+CONFIG_DVB_DVBSKY_M88RS6000=m
+# CONFIG_DVB_CX24117 is not set
+# CONFIG_DVB_SI21XX is not set
+# CONFIG_DVB_TS2020 is not set
+# CONFIG_DVB_DS3000 is not set
+# CONFIG_DVB_MB86A16 is not set
+# CONFIG_DVB_TDA10071 is not set
+
+#
+# DVB-T (terrestrial) frontends
+#
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+# CONFIG_DVB_CX22700 is not set
+# CONFIG_DVB_CX22702 is not set
+# CONFIG_DVB_S5H1432 is not set
+# CONFIG_DVB_DRXD is not set
+# CONFIG_DVB_L64781 is not set
+# CONFIG_DVB_TDA1004X is not set
+# CONFIG_DVB_NXT6000 is not set
+# CONFIG_DVB_MT352 is not set
+# CONFIG_DVB_ZL10353 is not set
+# CONFIG_DVB_DIB3000MB is not set
+# CONFIG_DVB_DIB3000MC is not set
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+# CONFIG_DVB_DIB9000 is not set
+# CONFIG_DVB_TDA10048 is not set
+# CONFIG_DVB_AF9013 is not set
+# CONFIG_DVB_EC100 is not set
+# CONFIG_DVB_HD29L2 is not set
+# CONFIG_DVB_STV0367 is not set
+# CONFIG_DVB_CXD2820R is not set
+# CONFIG_DVB_RTL2830 is not set
+# CONFIG_DVB_RTL2832 is not set
+
+#
+# DVB-C (cable) frontends
+#
+# CONFIG_DVB_VES1820 is not set
+# CONFIG_DVB_TDA10021 is not set
+# CONFIG_DVB_TDA10023 is not set
+# CONFIG_DVB_STV0297 is not set
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+# CONFIG_DVB_LGDT330X is not set
+# CONFIG_DVB_LGDT3305 is not set
+# CONFIG_DVB_LG2160 is not set
+# CONFIG_DVB_S5H1409 is not set
+# CONFIG_DVB_AU8522_DTV is not set
+# CONFIG_DVB_S5H1411 is not set
+
+#
+# ISDB-T (terrestrial) frontends
+#
+# CONFIG_DVB_S921 is not set
+# CONFIG_DVB_DIB8000 is not set
+# CONFIG_DVB_MB86A20S is not set
+
+#
+# Digital terrestrial only tuners/PLL
+#
+# CONFIG_DVB_PLL is not set
+# CONFIG_DVB_TUNER_DIB0070 is not set
+# CONFIG_DVB_TUNER_DIB0090 is not set
+
+#
+# SEC control devices for DVB-S
+#
+# CONFIG_DVB_DRX39XYJ is not set
+# CONFIG_DVB_LNBP21 is not set
+# CONFIG_DVB_LNBP22 is not set
+# CONFIG_DVB_ISL6405 is not set
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_ISL6423 is not set
+# CONFIG_DVB_A8293 is not set
+# CONFIG_DVB_LGS8GL5 is not set
+# CONFIG_DVB_LGS8GXX is not set
+# CONFIG_DVB_ATBM8830 is not set
+# CONFIG_DVB_TDA665x is not set
+# CONFIG_DVB_IX2505V is not set
+# CONFIG_DVB_M88RS2000 is not set
+# CONFIG_DVB_AF9033 is not set
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+# CONFIG_AUDIO_SUPPORT is not set
+# CONFIG_MISC_DEVICES is not set
+# CONFIG_STAGING is not set
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/fix-strip.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/fix-strip.patch
new file mode 100644 (file)
index 0000000..277acbf
--- /dev/null
@@ -0,0 +1,19 @@
+changeset:   15145:72aa2db63b3d
+tag:         tip
+user:        Andreas Oberritter <obi@linuxtv.org>
+date:        Tue Oct 12 10:03:53 2010 +0000
+summary:     make_makefile.pl: use $(CROSS_COMPILE)strip
+
+diff --git a/v4l/scripts/make_makefile.pl b/v4l/scripts/make_makefile.pl
+--- a/v4l/scripts/make_makefile.pl
++++ b/v4l/scripts/make_makefile.pl
+@@ -223,7 +223,7 @@
+       print OUT "echo -n \"\$\$i \"; ";
+       print OUT "install -m 644 -c \$\$i \$(DESTDIR)\$(KDIR26)/$dir; fi; done; ";
+       print OUT "if [  \$\$n -ne 0 ]; then echo; ";
+-      print OUT "strip --strip-debug \$(DESTDIR)\$(KDIR26)/$dir/*.ko; ";
++      print OUT "\$(CROSS_COMPILE)strip --strip-debug \$(DESTDIR)\$(KDIR26)/$dir/*.ko; ";
+       print OUT "fi;\n\n";
+ }
+ print OUT "\t@echo\n";
+
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/localversion.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/localversion.patch
new file mode 100644 (file)
index 0000000..23a0bb8
--- /dev/null
@@ -0,0 +1,115 @@
+# HG changeset patch
+# User Andreas Oberritter <obi@linuxtv.org>
+# Date 1284119639 0
+# Node ID 008dba7f69aa8461f3210919fdc2396941241013
+# Parent  558dc662028e9ae5debcfb708da07ab67be8b3d8
+Support CONFIG_LOCALVERSION by parsing UTS_RELEASE
+
+diff --git a/v4l/Makefile b/v4l/Makefile
+--- a/v4l/Makefile
++++ b/v4l/Makefile
+@@ -236,22 +236,8 @@
+ $(obj)/.version:
+ ifneq ($(DIR),)
+       @echo "Searching in $(DIR)/Makefile for kernel version."
+-      @perl \
+-      -e '$$d="$(DIR)"; ' \
+-      -e 'S: open IN,"$$d/Makefile"; ' \
+-      -e 'while (<IN>) {' \
+-      -e '    if (/^VERSION\s*=\s*(\d+)/){ $$version=$$1; }' \
+-      -e '    elsif (/^PATCHLEVEL\s*=\s*(\d+)/){ $$level=$$1; }' \
+-      -e '    elsif (/^SUBLEVEL\s*=\s*(\d+)/){ $$sublevel=$$1; }' \
+-      -e '    elsif (/^EXTRAVERSION\s*=\s*(\S+)\n/){ $$extra=$$1; }' \
+-      -e '    elsif (/^KERNELSRC\s*:=\s*(\S.*)\n/ || /^MAKEARGS\s*:=\s*-C\s*(\S.*)\n/)' \
+-      -e '        { $$o=$$d; $$d=$$1; goto S; }' \
+-      -e '};' \
+-      -e 'printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",' \
+-      -e '    $$version,$$level,$$sublevel,$$version,$$level,$$sublevel,$$extra);' \
+-      -e 'print "OUTDIR:=$$o\n" if($$o);' \
+-      -e 'print "SRCDIR:=$$d\n";' > $(obj)/.version
+-      @cat .version|grep KERNELRELEASE:|sed s,'KERNELRELEASE:=','Forcing compiling to version ',
++      @perl scripts/generate-dot-version.pl "$(DIR)" > $(obj)/.version
++      @grep KERNELRELEASE: $(obj)/.version | sed s,'KERNELRELEASE:=','Forcing compiling to version ',
+       @if [ ! -f $(DIR)/scripts/kallsyms ]; then \
+               echo "*** Warning: You should configure and build kernel before compiling V4L"; \
+diff --git a/v4l/scripts/generate-dot-version.pl b/v4l/scripts/generate-dot-version.pl
+new file mode 100755
+--- /dev/null
++++ b/v4l/scripts/generate-dot-version.pl
+@@ -0,0 +1,75 @@
++#!/usr/bin/perl -w
++
++use strict;
++
++my @headers = (
++      "generated/utsrelease.h",
++      "linux/utsrelease.h",
++      "linux/version.h",
++);
++
++if (@ARGV < 1) {
++      print "Usage: generate-dot-version <srcdir>\n";
++      exit 1;
++}
++
++my $srcdir = $ARGV[0];
++
++if (! -d $srcdir) {
++      print "Not a directory: $srcdir\n";
++      exit 1;
++}
++
++sub print_uts_release($)
++{
++      my $path = shift;
++
++      open IN, "<$path" or die $!;
++
++      while (<IN>) {
++              if (m/#define\s+UTS_RELEASE\s+"(\d+)\.(\d+)\.(\d+)(.*)"/) {
++                      print "VERSION:=$1\n";
++                      print "PATCHLEVEL:=$2\n";
++                      print "SUBLEVEL:=$3\n";
++                      print "KERNELRELEASE:=$1.$2.$3$4\n";
++                      last;
++              }
++      }
++
++      close IN;
++}
++
++sub print_directories($)
++{
++      my $srcdir = shift;
++      my $outdir = undef;
++
++      open IN, "<$srcdir/Makefile" or die $!;
++
++      while (<IN>) {
++              if (m/^KERNELSRC\s*:=\s*(\S.*)\n/ || m/^MAKEARGS\s*:=\s*-C\s*(\S.*)\n/) {
++                      $outdir = $srcdir;
++                      $srcdir = $1;
++                      last;
++              }
++      }
++
++      close IN;
++
++      if (defined $outdir) {
++              print "OUTDIR:=$outdir\n";
++      }
++
++      print "SRCDIR:=$srcdir\n";
++}
++
++for (@headers) {
++      my $path = "$srcdir/include/$_";
++      if (-f $path) {
++              print_uts_release($path);
++              last;
++      }
++}
++
++print_directories($srcdir);
++
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/rename_dvb-usb-v2.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/rename_dvb-usb-v2.patch
new file mode 100644 (file)
index 0000000..f48cfa5
--- /dev/null
@@ -0,0 +1,11 @@
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/Makefile media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/Makefile
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/Makefile        2014-11-25 18:01:41.198281957 +0100
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/Makefile     2014-11-25 18:01:22.578940354 +0100
+@@ -1,5 +1,5 @@
+-dvb_usb_v2-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
+-obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2.o
++dvb_usb_v2_media_tree-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
++obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2_media_tree.o
+ dvb-usb-af9015-objs := af9015.o
+ obj-$(CONFIG_DVB_USB_AF9015) += dvb-usb-af9015.o
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/sit2_op.o_150322_arm b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/sit2_op.o_150322_arm
new file mode 100644 (file)
index 0000000..b021f17
Binary files /dev/null and b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/sit2_op.o_150322_arm differ
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_adapter_adjustment.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_adapter_adjustment.patch
new file mode 100644 (file)
index 0000000..573225e
--- /dev/null
@@ -0,0 +1,45 @@
+diff -Naur media_build-bst-14.orig/linux/drivers/media/dvb-core/dvbdev.c media_build-bst-14/linux/drivers/media/dvb-core/dvbdev.c
+--- media_build-bst-14.orig/linux/drivers/media/dvb-core/dvbdev.c      2014-05-08 07:18:09.000000000 +0200
++++ media_build-bst-14/linux/drivers/media/dvb-core/dvbdev.c   2014-12-13 11:17:16.000000000 +0100
+@@ -296,9 +296,9 @@
+       return 1;
+ }
+-static int dvbdev_get_free_adapter_num (void)
++static int dvbdev_get_free_adapter_num (int start_num)
+ {
+-      int num = 0;
++      int num = start_num;
+       while (num < DVB_MAX_ADAPTERS) {
+               if (dvbdev_check_free_adapter_num(num))
+@@ -316,16 +316,17 @@
+ {
+       int i, num;
++      char *vu_name = strstr(name, "_vuplus_");
+       mutex_lock(&dvbdev_register_lock);
+       for (i = 0; i < DVB_MAX_ADAPTERS; ++i) {
+               num = adapter_nums[i];
+-              if (num >= 0  &&  num < DVB_MAX_ADAPTERS) {
++              if (num >= vu_name? 0:1  &&  num < DVB_MAX_ADAPTERS) {
+               /* use the one the driver asked for */
+                       if (dvbdev_check_free_adapter_num(num))
+                               break;
+               } else {
+-                      num = dvbdev_get_free_adapter_num();
++                      num = dvbdev_get_free_adapter_num(vu_name? 0:1);
+                       break;
+               }
+               num = -1;
+@@ -455,9 +456,6 @@
+ {
+       int retval;
+       dev_t dev = MKDEV(DVB_MAJOR, 0);
+-      /*printk(KERN_ERR "WARNING: You are using an experimental version of the media stack.\n\tAs the driver is backported to an older kernel, it doesn't offer\n\tenough quality for its usage in production.\n\tUse it with care.\nLatest git patches (needed if you report a bug to linux-media@vger.kernel.org):\n\ta83b93a7480441a47856dc9104bea970e84cda87 [media] em28xx-dvb: fix PCTV 461e tuner I2C binding\n\t5eef22031295234990a26d809efb4100c1e60c11 Revert [media] em28xx-dvb: fix PCTV 461e tuner I2C binding\n\t3ec40dcfb413214b2874aec858870502b61c2202 [media] em28xx: fix PCTV 290e LNA oops\n");
+-      */
+-
+       if ((retval = register_chrdev_region(dev, MAX_DVB_MINORS, "DVB")) != 0) {
+               printk(KERN_ERR "dvb-core: unable to get major %d\n", DVB_MAJOR);
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_backport.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_backport.patch
new file mode 100644 (file)
index 0000000..8c36728
--- /dev/null
@@ -0,0 +1,283 @@
+diff -Naur media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_mod.c media_build-bst/linux/drivers/media/dvb-frontends/sit2_mod.c
+--- media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_mod.c  2014-11-06 07:17:41.000000000 +0100
++++ media_build-bst/linux/drivers/media/dvb-frontends/sit2_mod.c       2015-10-21 15:19:44.000000000 +0200
+@@ -1,16 +1,16 @@
+ /*+++ *******************************************************************\ 
+ *     SIT2  - DVB-T2/T/C demodulator and tuner
+ *
+-*     --------------------------------------------------------------- \r
+-*     This software is provided "AS IS" without warranty of any kind, \r
+-*     either expressed or implied, including but not limited to the \r
+-*     implied warranties of noninfringement, merchantability and/or \r
+-*     fitness for a particular purpose.\r
+-*     --------------------------------------------------------------- \r
+-*   \r
++*     --------------------------------------------------------------- 
++*     This software is provided "AS IS" without warranty of any kind, 
++*     either expressed or implied, including but not limited to the 
++*     implied warranties of noninfringement, merchantability and/or 
++*     fitness for a particular purpose.
++*     --------------------------------------------------------------- 
++*   
+ *     Copyright (c) 2013 ShenZhen Bestunar Ltd,Inc.
+ *     All rights reserved. 
+-*     Max Nibble <nibble.max@gmail.com>\r
++*     Max Nibble <nibble.max@gmail.com>
+ *
+ *
+ \******************************************************************* ---*/ 
+@@ -20,9 +20,7 @@
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+ #include <linux/string.h>
+-//#include <linux/slab.h>
+ #include <asm/div64.h>
+-//#include "kmem_func.h"
+ #include "dvb_frontend.h"
+ #include "sit2.h"
+ #include "sit2_op.h"
+@@ -32,11 +30,109 @@
+       struct sit2_state *state = fe->demodulator_priv;
+       kfree(state);
+ }
++static void sit2_mod_release(struct dvb_frontend *fe)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      kfree(m_state);
++}
++
++static int sit2_mod_init(struct dvb_frontend *fe)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_init(state);
++}
++
++static int sit2_mod_sleep(struct dvb_frontend *fe)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_sleep(state);
++}
++
++static int sit2_mod_get_frontend_algo(struct dvb_frontend *fe)
++{
++      return DVBFE_ALGO_HW;
++}
++
++static int sit2_mod_set_frontend(struct dvb_frontend *fe)
++{
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      
++      return sit2_drv_set_frontend(state, c->delivery_system, c->frequency, c->bandwidth_hz,
++      c->symbol_rate, c->modulation, c->stream_id);   
++}
++
++static int sit2_mod_read_status(struct dvb_frontend *fe, fe_status_t *status)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_read_status(state, status);
++}
++
++static int sit2_mod_tune(struct dvb_frontend *fe,
++                      bool re_tune,
++                      unsigned int mode_flags,
++                      unsigned int *delay,
++                      fe_status_t *status)
++{     
++      *delay = HZ / 5;        
++      if (re_tune) {
++              int ret = sit2_mod_set_frontend(fe);
++              if (ret)
++                      return ret;
++      }       
++      return sit2_mod_read_status(fe, status);
++}
++
++static int sit2_mod_get_frontend(struct dvb_frontend *fe)
++{
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++
++      return sit2_drv_get_frontend(state, &c->symbol_rate, &c->modulation, &c->transmission_mode,
++      &c->guard_interval, &c->hierarchy, &c->code_rate_HP, &c->code_rate_LP, &c->inversion, &c->fec_inner);
++}
++
++static int sit2_mod_read_snr(struct dvb_frontend *fe, u16 *snr)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_read_snr(state, snr);
++}
++
++static int sit2_mod_read_ber(struct dvb_frontend *fe, u32 *ber)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_read_ber(state, ber);   
++}
++
++static int sit2_mod_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_read_ucblocks(state, ucblocks);
++}
++
++static int sit2_mod_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
++{
++      struct sit2_mod_state *m_state = fe->demodulator_priv;
++      struct sit2_state *state = &m_state->drv_state;
++      return sit2_drv_read_signal_strength(state, strength);
++}
+ static const struct dvb_frontend_ops sit2_ops = {
++
++      /* DVB-T, DVB-T2 and DVB-C */
+       .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A },
++
++      /* DVB-C only */
+       /*.delsys = { SYS_DVBC_ANNEX_A },*/
+-      /* default: DVB-T/T2 */
++
+       .info = {
+               .name = "Sit2 DVB-T2/C",
+               .frequency_stepsize = 62500,
+@@ -65,43 +161,43 @@
+                       FE_CAN_MULTISTREAM
+               },
+-      .release                = sit2_drv_release,
+-      .init                   = sit2_drv_init,
+-      .sleep                  = sit2_drv_sleep,
+-
+-      .tune                   = sit2_drv_tune,
+-      .set_frontend           = sit2_drv_set_frontend,
+-      .get_frontend           = sit2_drv_get_frontend,
+-      .get_frontend_algo      = sit2_drv_get_frontend_algo,
+-
+-      .read_status            = sit2_drv_read_status,
+-      .read_snr               = sit2_drv_read_snr,
+-      .read_ber               = sit2_drv_read_ber,
+-      .read_ucblocks          = sit2_drv_read_ucblocks,
+-      .read_signal_strength   = sit2_drv_read_signal_strength,
++      .release                = sit2_mod_release,
++      .init                   = sit2_mod_init,
++      .sleep                  = sit2_mod_sleep,
++
++      .tune                   = sit2_mod_tune,
++      .set_frontend           = sit2_mod_set_frontend,
++      .get_frontend           = sit2_mod_get_frontend,
++      .get_frontend_algo      = sit2_mod_get_frontend_algo,
++
++      .read_status            = sit2_mod_read_status,
++      .read_snr               = sit2_mod_read_snr,
++      .read_ber               = sit2_mod_read_ber,
++      .read_ucblocks          = sit2_mod_read_ucblocks,
++      .read_signal_strength   = sit2_mod_read_signal_strength,
+ };
+ struct dvb_frontend *sit2_attach(const struct sit2_config *config,
+               struct i2c_adapter *i2c)
+ {
+-      struct sit2_state *state = NULL;
+-      state = kzalloc(sizeof(struct sit2_state), GFP_KERNEL);
++      struct sit2_mod_state *m_state = NULL;
++      m_state = kzalloc(sizeof(struct sit2_mod_state), GFP_KERNEL);
+       
+-      if (!state) {
++      if (!m_state) {
+ #ifdef _SIT2_DEBUG_
+               dev_err(&i2c->dev, "%s: kzalloc() failed\n",
+                               KBUILD_MODNAME);
+ #endif
+               goto error;
+       }       
+-      sit2_op_attach(state, config, i2c);
++      sit2_op_attach(&m_state->drv_state, i2c, config->ts_bus_mode, config->ts_clock_mode);
+       
+-      memcpy(&state->frontend.ops, &sit2_ops,
++      memcpy(&m_state->frontend.ops, &sit2_ops,
+              sizeof(struct dvb_frontend_ops));
+-      state->frontend.demodulator_priv = state;
+-      return &state->frontend;
++      m_state->frontend.demodulator_priv = m_state;
++      return &m_state->frontend;
+ error:
+-      kfree(state);
++      kfree(m_state);
+       return NULL;
+ }
+ EXPORT_SYMBOL(sit2_attach);
+diff -Naur media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_op.h media_build-bst/linux/drivers/media/dvb-frontends/sit2_op.h
+--- media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_op.h   2014-07-25 17:18:39.000000000 +0200
++++ media_build-bst/linux/drivers/media/dvb-frontends/sit2_op.h        2015-03-20 05:07:37.000000000 +0100
+@@ -36,10 +36,8 @@
+ /*global state*/
+ struct sit2_state {
+-      struct dvb_frontend frontend;
+-      const struct sit2_config *config;
+       struct i2c_adapter *i2c;
+-      
++
+       bool  isInited;
+       u8 demod_addr;
+       u8 tuner_addr;
+@@ -52,25 +50,35 @@
+       int plp_id;
+       u32 stream;
+       u32 dvbc_symrate;
+-      u8 dvbt2_profile;       
++      u8 dvbt2_profile;
++
++      u8 ts_bus_mode; /*1-serial, 2-parallel.*/
++      u8 ts_clock_mode; /*0-auto, 1-manual.*/
++};
++
++struct sit2_mod_state {
++      struct dvb_frontend frontend;
++      const struct sit2_config *config;
++      struct sit2_state drv_state;
+ };
+-int sit2_drv_init(struct dvb_frontend *fe);
+-int sit2_drv_sleep(struct dvb_frontend *fe);
++int sit2_drv_init(struct sit2_state *state);
++int sit2_drv_sleep(struct sit2_state *state);
++
++int sit2_drv_set_frontend(struct sit2_state *state,
++fe_delivery_system_t delivery_system, u32 frequency, u32 bandwidth_hz,
++u32 symbol_rate, fe_modulation_t modulation, u32 stream_id);
++
++int sit2_drv_get_frontend(struct sit2_state *state,
++u32 *symbol_rate, fe_modulation_t *modulation, fe_transmit_mode_t *transmission_mode,
++fe_guard_interval_t *guard_interval, fe_hierarchy_t *hierarchy, fe_code_rate_t *code_rate_HP,
++fe_code_rate_t *code_rate_LP, fe_spectral_inversion_t *inversion, fe_code_rate_t *fec_inner);
+-int sit2_drv_tune(struct dvb_frontend *fe,
+-                      bool re_tune,
+-                      unsigned int mode_flags,
+-                      unsigned int *delay,
+-                      fe_status_t *status);
+-int sit2_drv_set_frontend(struct dvb_frontend *fe);
+-int sit2_drv_get_frontend(struct dvb_frontend *fe);
+-int sit2_drv_get_frontend_algo(struct dvb_frontend *fe);
+-int sit2_drv_read_status(struct dvb_frontend *fe, fe_status_t *status);                       
+-int sit2_drv_read_snr(struct dvb_frontend *fe, u16 *snr);
+-int sit2_drv_read_ber(struct dvb_frontend *fe, u32 *ber);
+-int sit2_drv_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks);
+-int sit2_drv_read_signal_strength(struct dvb_frontend *fe, u16 *strength);
+-void sit2_op_attach(struct sit2_state *state, const struct sit2_config *config, struct i2c_adapter *i2c);
++int sit2_drv_read_status(struct sit2_state *state, fe_status_t *status);                      
++int sit2_drv_read_snr(struct sit2_state *state, u16 *snr);
++int sit2_drv_read_ber(struct sit2_state *state, u32 *ber);
++int sit2_drv_read_ucblocks(struct sit2_state *state, u32 *ucblocks);
++int sit2_drv_read_signal_strength(struct sit2_state *state, u16 *strength);
++void sit2_op_attach(struct sit2_state *state, struct i2c_adapter *i2c, u8 ts_bus_mode, u8 ts_clock_mode);
+ #endif /* SIT2_OP_H */
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_keep_compatibility.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_keep_compatibility.patch
new file mode 100644 (file)
index 0000000..a4a5bb1
--- /dev/null
@@ -0,0 +1,521 @@
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c        2014-10-14 10:05:32.000000000 +0200
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c     2015-05-30 11:26:08.138390315 +0200
+@@ -69,7 +69,7 @@
+       if (wlen != 0)
+               memcpy(state->obuf, wbuf, wlen);
+-      ret = dvb_usbv2_generic_rw_locked(d, state->obuf, wlen,
++      ret = dvb_usbv2_mediatree_generic_rw_locked(d, state->obuf, wlen,
+                       state->ibuf, rlen);
+       if (!ret && (rlen != 0))
+@@ -893,11 +893,11 @@
+ static struct usb_driver dvbsky_usb_driver = {
+       .name = KBUILD_MODNAME,
+       .id_table = dvbsky_id_table,
+-      .probe = dvb_usbv2_probe,
+-      .disconnect = dvb_usbv2_disconnect,
+-      .suspend = dvb_usbv2_suspend,
+-      .resume = dvb_usbv2_resume,
+-      .reset_resume = dvb_usbv2_reset_resume,
++      .probe = dvb_usbv2_mediatree_probe,
++      .disconnect = dvb_usbv2_mediatree_disconnect,
++      .suspend = dvb_usbv2_mediatree_suspend,
++      .resume = dvb_usbv2_mediatree_resume,
++      .reset_resume = dvb_usbv2_mediatree_reset_resume,
+       .no_dynamic_id = 1,
+       .soft_unbind = 1,
+ };
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c  2014-10-14 08:52:04.000000000 +0200
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c       2015-05-30 11:50:42.125378459 +0200
+@@ -21,8 +21,8 @@
+ #include "dvb_usb_common.h"
+-int dvb_usbv2_disable_rc_polling;
+-module_param_named(disable_rc_polling, dvb_usbv2_disable_rc_polling, int, 0644);
++int dvb_usbv2_mediatree_disable_rc_polling;
++module_param_named(disable_rc_polling, dvb_usbv2_mediatree_disable_rc_polling, int, 0644);
+ MODULE_PARM_DESC(disable_rc_polling,
+               "disable remote control polling (default: 0)");
+ static int dvb_usb_force_pid_filter_usage;
+@@ -31,7 +31,7 @@
+ MODULE_PARM_DESC(force_pid_filter_usage,
+               "force all DVB USB devices to use a PID filter, if any (default: 0)");
+-static int dvb_usbv2_download_firmware(struct dvb_usb_device *d,
++static int dvb_usbv2_mediatree_download_firmware(struct dvb_usb_device *d,
+               const char *name)
+ {
+       int ret;
+@@ -65,7 +65,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_i2c_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_i2c_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -92,7 +92,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_i2c_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_i2c_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -113,7 +113,7 @@
+        * When the parameter has been set to 1 via sysfs while the
+        * driver was running, or when bulk mode is enabled after IR init.
+        */
+-      if (dvb_usbv2_disable_rc_polling || d->rc.bulk_mode) {
++      if (dvb_usbv2_mediatree_disable_rc_polling || d->rc.bulk_mode) {
+               d->rc_polling_active = false;
+               return;
+       }
+@@ -130,13 +130,13 @@
+                       msecs_to_jiffies(d->rc.interval));
+ }
+-static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_remote_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       struct rc_dev *dev;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config)
++      if (dvb_usbv2_mediatree_disable_rc_polling || !d->props->get_rc_config)
+               return 0;
+       d->rc.map_name = d->rc_map;
+@@ -199,7 +199,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_remote_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_remote_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -212,8 +212,8 @@
+       return 0;
+ }
+ #else
+-      #define dvb_usbv2_remote_init(args...) 0
+-      #define dvb_usbv2_remote_exit(args...)
++      #define dvb_usbv2_mediatree_remote_init(args...) 0
++      #define dvb_usbv2_mediatree_remote_exit(args...)
+ #endif
+ static void dvb_usb_data_complete(struct usb_data_stream *stream, u8 *buf,
+@@ -237,7 +237,7 @@
+       dvb_dmx_swfilter_raw(&adap->demux, buf, len);
+ }
+-static int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_stream_init(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -249,7 +249,7 @@
+       return usb_urb_initv2(&adap->stream, &adap->props->stream);
+ }
+-static int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_stream_exit(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -419,7 +419,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_dvb_init(struct dvb_usb_adapter *adap)
+ {
+       int ret;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -489,7 +489,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_dvb_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_dvb_exit(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -505,7 +505,7 @@
+       return 0;
+ }
+-static int dvb_usbv2_device_power_ctrl(struct dvb_usb_device *d, int onoff)
++static int dvb_usbv2_mediatree_device_power_ctrl(struct dvb_usb_device *d, int onoff)
+ {
+       int ret;
+@@ -543,7 +543,7 @@
+               set_bit(ADAP_INIT, &adap->state_bits);
+       }
+-      ret = dvb_usbv2_device_power_ctrl(d, 1);
++      ret = dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (ret < 0)
+               goto err;
+@@ -603,7 +603,7 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_device_power_ctrl(d, 0);
++      ret = dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       if (ret < 0)
+               goto err;
+ err:
+@@ -622,7 +622,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_frontend_init(struct dvb_usb_adapter *adap)
+ {
+       int ret, i, count_registered = 0;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -693,7 +693,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_frontend_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_frontend_exit(struct dvb_usb_adapter *adap)
+ {
+       int i;
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+@@ -709,7 +709,7 @@
+       return 0;
+ }
+-static int dvb_usbv2_adapter_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_adapter_init(struct dvb_usb_device *d)
+ {
+       struct dvb_usb_adapter *adap;
+       int ret, i, adapter_count;
+@@ -763,15 +763,15 @@
+                       adap->max_feed_count = adap->props->pid_filter_count;
+               }
+-              ret = dvb_usbv2_adapter_stream_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_stream_init(adap);
+               if (ret)
+                       goto err;
+-              ret = dvb_usbv2_adapter_dvb_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_dvb_init(adap);
+               if (ret)
+                       goto err;
+-              ret = dvb_usbv2_adapter_frontend_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_frontend_init(adap);
+               if (ret)
+                       goto err;
+@@ -786,16 +786,16 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_adapter_exit(struct dvb_usb_device *d)
+ {
+       int i;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+       for (i = MAX_NO_OF_ADAPTER_PER_DEVICE - 1; i >= 0; i--) {
+               if (d->adapter[i].props) {
+-                      dvb_usbv2_adapter_frontend_exit(&d->adapter[i]);
+-                      dvb_usbv2_adapter_dvb_exit(&d->adapter[i]);
+-                      dvb_usbv2_adapter_stream_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_frontend_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_dvb_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_stream_exit(&d->adapter[i]);
+               }
+       }
+@@ -803,25 +803,25 @@
+ }
+ /* general initialization functions */
+-static int dvb_usbv2_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_remote_exit(d);
+-      dvb_usbv2_adapter_exit(d);
+-      dvb_usbv2_i2c_exit(d);
++      dvb_usbv2_mediatree_remote_exit(d);
++      dvb_usbv2_mediatree_adapter_exit(d);
++      dvb_usbv2_mediatree_i2c_exit(d);
+       kfree(d->priv);
+       kfree(d);
+       return 0;
+ }
+-static int dvb_usbv2_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_device_power_ctrl(d, 1);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (d->props->read_config) {
+               ret = d->props->read_config(d);
+@@ -829,11 +829,11 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_i2c_init(d);
++      ret = dvb_usbv2_mediatree_i2c_init(d);
+       if (ret < 0)
+               goto err;
+-      ret = dvb_usbv2_adapter_init(d);
++      ret = dvb_usbv2_mediatree_adapter_init(d);
+       if (ret < 0)
+               goto err;
+@@ -843,20 +843,20 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_remote_init(d);
++      ret = dvb_usbv2_mediatree_remote_init(d);
+       if (ret < 0)
+               goto err;
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       return 0;
+ err:
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       dev_dbg(&d->udev->dev, "%s: failed=%d\n", __func__, ret);
+       return ret;
+ }
+-int dvb_usbv2_probe(struct usb_interface *intf,
++int dvb_usbv2_mediatree_probe(struct usb_interface *intf,
+               const struct usb_device_id *id)
+ {
+       int ret;
+@@ -918,7 +918,7 @@
+                       if (!name)
+                               name = d->props->firmware;
+-                      ret = dvb_usbv2_download_firmware(d, name);
++                      ret = dvb_usbv2_mediatree_download_firmware(d, name);
+                       if (ret == 0) {
+                               /* device is warm, continue initialization */
+                               ;
+@@ -943,7 +943,7 @@
+       dev_info(&d->udev->dev, "%s: found a '%s' in warm state\n",
+                       KBUILD_MODNAME, d->name);
+-      ret = dvb_usbv2_init(d);
++      ret = dvb_usbv2_mediatree_init(d);
+       if (ret < 0)
+               goto err_free_all;
+@@ -955,14 +955,14 @@
+       return 0;
+ err_free_all:
+-      dvb_usbv2_exit(d);
++      dvb_usbv2_mediatree_exit(d);
+ err:
+       dev_dbg(&udev->dev, "%s: failed=%d\n", __func__, ret);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_probe);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_probe);
+-void dvb_usbv2_disconnect(struct usb_interface *intf)
++void dvb_usbv2_mediatree_disconnect(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       const char *name = d->name;
+@@ -973,14 +973,14 @@
+       if (d->props->exit)
+               d->props->exit(d);
+-      dvb_usbv2_exit(d);
++      dvb_usbv2_mediatree_exit(d);
+       dev_info(&dev, "%s: '%s' successfully deinitialized and disconnected\n",
+                       KBUILD_MODNAME, name);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_disconnect);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_disconnect);
+-int dvb_usbv2_suspend(struct usb_interface *intf, pm_message_t msg)
++int dvb_usbv2_mediatree_suspend(struct usb_interface *intf, pm_message_t msg)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       int ret = 0, i, active_fe;
+@@ -1009,9 +1009,9 @@
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_suspend);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_suspend);
+-static int dvb_usbv2_resume_common(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_resume_common(struct dvb_usb_device *d)
+ {
+       int ret = 0, i, active_fe;
+       struct dvb_frontend *fe;
+@@ -1042,33 +1042,33 @@
+       return ret;
+ }
+-int dvb_usbv2_resume(struct usb_interface *intf)
++int dvb_usbv2_mediatree_resume(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      return dvb_usbv2_resume_common(d);
++      return dvb_usbv2_mediatree_resume_common(d);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_resume);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_resume);
+-int dvb_usbv2_reset_resume(struct usb_interface *intf)
++int dvb_usbv2_mediatree_reset_resume(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_device_power_ctrl(d, 1);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (d->props->init)
+               d->props->init(d);
+-      ret = dvb_usbv2_resume_common(d);
++      ret = dvb_usbv2_mediatree_resume_common(d);
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_reset_resume);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_reset_resume);
+ MODULE_VERSION("2.0");
+ MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@desy.de>");
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h       2014-03-11 11:08:46.000000000 +0100
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h    2015-05-30 10:58:06.000000000 +0200
+@@ -388,19 +388,19 @@
+       void *priv;
+ };
+-extern int dvb_usbv2_probe(struct usb_interface *,
++extern int dvb_usbv2_mediatree_probe(struct usb_interface *,
+               const struct usb_device_id *);
+-extern void dvb_usbv2_disconnect(struct usb_interface *);
+-extern int dvb_usbv2_suspend(struct usb_interface *, pm_message_t);
+-extern int dvb_usbv2_resume(struct usb_interface *);
+-extern int dvb_usbv2_reset_resume(struct usb_interface *);
++extern void dvb_usbv2_mediatree_disconnect(struct usb_interface *);
++extern int dvb_usbv2_mediatree_suspend(struct usb_interface *, pm_message_t);
++extern int dvb_usbv2_mediatree_resume(struct usb_interface *);
++extern int dvb_usbv2_mediatree_reset_resume(struct usb_interface *);
+ /* the generic read/write method for device control */
+-extern int dvb_usbv2_generic_rw(struct dvb_usb_device *, u8 *, u16, u8 *, u16);
+-extern int dvb_usbv2_generic_write(struct dvb_usb_device *, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_rw(struct dvb_usb_device *, u8 *, u16, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_write(struct dvb_usb_device *, u8 *, u16);
+ /* caller must hold lock when locked versions are called */
+-extern int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *,
++extern int dvb_usbv2_mediatree_generic_rw_locked(struct dvb_usb_device *,
+               u8 *, u16, u8 *, u16);
+-extern int dvb_usbv2_generic_write_locked(struct dvb_usb_device *, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_write_locked(struct dvb_usb_device *, u8 *, u16);
+ #endif
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c   2014-03-11 11:08:46.000000000 +0100
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c        2015-05-30 11:46:29.894460058 +0200
+@@ -21,7 +21,7 @@
+ #include "dvb_usb_common.h"
+-static int dvb_usb_v2_generic_io(struct dvb_usb_device *d,
++static int dvb_usb_v2_mediatree_generic_io(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+       int ret, actual_length;
+@@ -65,40 +65,40 @@
+       return ret;
+ }
+-int dvb_usbv2_generic_rw(struct dvb_usb_device *d,
++int dvb_usbv2_mediatree_generic_rw(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+       int ret;
+       mutex_lock(&d->usb_mutex);
+-      ret = dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
++      ret = dvb_usb_v2_mediatree_generic_io(d, wbuf, wlen, rbuf, rlen);
+       mutex_unlock(&d->usb_mutex);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_rw);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_rw);
+-int dvb_usbv2_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
++int dvb_usbv2_mediatree_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
+ {
+       int ret;
+       mutex_lock(&d->usb_mutex);
+-      ret = dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
++      ret = dvb_usb_v2_mediatree_generic_io(d, buf, len, NULL, 0);
+       mutex_unlock(&d->usb_mutex);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_write);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_write);
+-int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *d,
++int dvb_usbv2_mediatree_generic_rw_locked(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+-      return dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
++      return dvb_usb_v2_mediatree_generic_io(d, wbuf, wlen, rbuf, rlen);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_rw_locked);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_rw_locked);
+-int dvb_usbv2_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
++int dvb_usbv2_mediatree_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
+ {
+-      return dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
++      return dvb_usb_v2_mediatree_generic_io(d, buf, len, NULL, 0);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_write_locked);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_write_locked);
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_no_v4l_firmwares_install.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_no_v4l_firmwares_install.patch
new file mode 100644 (file)
index 0000000..093a563
--- /dev/null
@@ -0,0 +1,11 @@
+--- media_build-bst-14.orig/v4l/Makefile       2015-08-13 08:52:52.610072524 +0200
++++ media_build-bst-14/v4l/Makefile    2015-08-13 08:54:26.598070068 +0200
+@@ -202,7 +202,7 @@
+ #################################################
+ # installation invocation rules
+-modules_install install:: media-install firmware_install
++modules_install install:: media-install
+ remove rminstall:: media-rminstall
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/defconfig b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/defconfig
new file mode 100644 (file)
index 0000000..f5af750
--- /dev/null
@@ -0,0 +1,366 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# V4L/DVB menu
+#
+# CONFIG_SND_MIRO is not set
+CONFIG_INPUT=y
+CONFIG_GPIOLIB=y
+CONFIG_PM_RUNTIME=y
+CONFIG_USB=y
+# CONFIG_ARCH_DAVINCI_DM365 is not set
+# CONFIG_MFD_SYSCON is not set
+CONFIG_NEW_LEDS=y
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_SPARC64 is not set
+# CONFIG_SOC_EXYNOS4412 is not set
+CONFIG_FW_LOADER=y
+# CONFIG_TTY is not set
+# CONFIG_GENERIC_PHY is not set
+CONFIG_SND_SOC=m
+# CONFIG_PLAT_M32700UT is not set
+# CONFIG_ARCH_EXYNOS is not set
+CONFIG_SND_FM801=m
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_STA2X11 is not set
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_PLAT_S5P is not set
+CONFIG_MFD_WL1273_CORE=m
+# CONFIG_ALPHA is not set
+CONFIG_RFKILL=y
+# CONFIG_PLAT_S3C24XX is not set
+# CONFIG_HAVE_CLK is not set
+# CONFIG_COMPILE_TEST is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_FIQ is not set
+CONFIG_DMADEVICES=y
+# CONFIG_OMAP2_DSS is not set
+CONFIG_REGULATOR=y
+CONFIG_SND=m
+# CONFIG_CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_BROKEN is not set
+# CONFIG_ARCH_OMAP2 is not set
+# CONFIG_OF is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUPPORT is not set
+# CONFIG_SPARC32 is not set
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_SND_ISA is not set
+# CONFIG_OMAP_DM_TIMER is not set
+# CONFIG_ARCH_AT91 is not set
+CONFIG_INET=y
+# CONFIG_SOC_IMX27 is not set
+# CONFIG_ARCH_OMAP3 is not set
+CONFIG_CRC32=y
+# CONFIG_CONFIG_SMS_USB_DRV is not set
+CONFIG_SYSFS=y
+CONFIG_MMC=y
+# CONFIG_ARCH_OMAP2PLUS is not set
+# CONFIG_ISA is not set
+# CONFIG_OMAP2_VRFB is not set
+CONFIG_PCI=y
+CONFIG_TI_ST=m
+CONFIG_PARPORT_1284=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_PARPORT=m
+# CONFIG_SOC_EXYNOS4212 is not set
+# CONFIG_PPC_MPC512x is not set
+CONFIG_FB_VIA=m
+CONFIG_FIREWIRE=m
+CONFIG_I2C_GPIO=m
+CONFIG_NET=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_SOC_EXYNOS5250 is not set
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_PXA27x is not set
+# CONFIG_OMAP_IOVMM is not set
+# CONFIG_ARCH_EXYNOS5 is not set
+# CONFIG_SGI_IP22 is not set
+CONFIG_ISA_DMA_API=y
+CONFIG_I2C=y
+CONFIG_TIMB_DMA=m
+CONFIG_REGMAP_I2C=y
+# CONFIG_ARCH_MMP is not set
+CONFIG_MODULES=y
+CONFIG_HAS_IOMEM=y
+CONFIG_DMA_ENGINE=y
+# CONFIG_MACH_MX27 is not set
+# CONFIG_ARCH_MXC is not set
+CONFIG_MFD_CORE=y
+# CONFIG_SND_SOC_SI476X is not set
+CONFIG_MFD_TIMBERDALE=m
+CONFIG_DEBUG_FS=y
+CONFIG_SPI=y
+# CONFIG_ARCH_OMAP4 is not set
+CONFIG_HAS_DMA=y
+# CONFIG_BLACKFIN is not set
+# CONFIG_SRAM is not set
+CONFIG_X86=y
+# CONFIG_SOC_DRA7XX is not set
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_FB=y
+# CONFIG_ARCH_MX1 is not set
+CONFIG_I2C_MUX=m
+# CONFIG_ARCH_MULTIPLATFORM is not set
+CONFIG_SONY_LAPTOP=m
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_PNP=y
+# CONFIG_MX3_IPU is not set
+CONFIG_SND_PCM=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_M32R is not set
+CONFIG_LEDS_CLASS=y
+CONFIG_BITREVERSE=y
+# CONFIG_VIDEO_KERNEL_VERSION is not set
+CONFIG_MEDIA_SUPPORT=y
+
+#
+# Multimedia core support
+#
+# CONFIG_MEDIA_CAMERA_SUPPORT is not set
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_DVB_CORE=y
+CONFIG_DVB_NET=y
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+#
+# Media drivers
+#
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_RC_CORE=y
+CONFIG_RC_MAP=y
+
+#
+# Analog/digital TV USB devices
+#
+# CONFIG_VIDEO_AU0828 is not set
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_V2_MEDIATREE=m
+# CONFIG_DVB_USB_AF9015 is not set
+# CONFIG_DVB_USB_AF9035 is not set
+# CONFIG_DVB_USB_ANYSEE is not set
+# CONFIG_DVB_USB_AU6610 is not set
+# CONFIG_DVB_USB_AZ6007 is not set
+# CONFIG_DVB_USB_CE6230 is not set
+# CONFIG_DVB_USB_EC168 is not set
+# CONFIG_DVB_USB_GL861 is not set
+# CONFIG_DVB_USB_MXL111SF is not set
+# CONFIG_DVB_USB_RTL28XXU is not set
+CONFIG_DVB_USB_DVBSKY=m
+# CONFIG_DVB_TTUSB_BUDGET is not set
+# CONFIG_DVB_TTUSB_DEC is not set
+# CONFIG_SMS_USB_DRV is not set
+# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+# CONFIG_MEDIA_PCI_SUPPORT is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+# CONFIG_SMS_SDIO_DRV is not set
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+# CONFIG_DVB_FIREDTV is not set
+# CONFIG_CYPRESS_FIRMWARE is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
+CONFIG_MEDIA_ATTACH=y
+
+#
+# Customize TV tuners
+#
+# CONFIG_MEDIA_TUNER_SIMPLE is not set
+# CONFIG_MEDIA_TUNER_TDA8290 is not set
+# CONFIG_MEDIA_TUNER_TDA827X is not set
+# CONFIG_MEDIA_TUNER_TDA18271 is not set
+# CONFIG_MEDIA_TUNER_TDA9887 is not set
+# CONFIG_MEDIA_TUNER_TEA5761 is not set
+# CONFIG_MEDIA_TUNER_TEA5767 is not set
+# CONFIG_MEDIA_TUNER_MT20XX is not set
+# CONFIG_MEDIA_TUNER_MT2060 is not set
+# CONFIG_MEDIA_TUNER_MT2063 is not set
+# CONFIG_MEDIA_TUNER_MT2266 is not set
+# CONFIG_MEDIA_TUNER_MT2131 is not set
+# CONFIG_MEDIA_TUNER_QT1010 is not set
+# CONFIG_MEDIA_TUNER_XC2028 is not set
+# CONFIG_MEDIA_TUNER_XC5000 is not set
+# CONFIG_MEDIA_TUNER_XC4000 is not set
+# CONFIG_MEDIA_TUNER_MXL5005S is not set
+# CONFIG_MEDIA_TUNER_MXL5007T is not set
+# CONFIG_MEDIA_TUNER_MC44S803 is not set
+# CONFIG_MEDIA_TUNER_MAX2165 is not set
+# CONFIG_MEDIA_TUNER_TDA18218 is not set
+# CONFIG_MEDIA_TUNER_FC0011 is not set
+# CONFIG_MEDIA_TUNER_FC0012 is not set
+# CONFIG_MEDIA_TUNER_FC0013 is not set
+# CONFIG_MEDIA_TUNER_TDA18212 is not set
+# CONFIG_MEDIA_TUNER_E4000 is not set
+# CONFIG_MEDIA_TUNER_FC2580 is not set
+# CONFIG_MEDIA_TUNER_M88TS2022 is not set
+# CONFIG_MEDIA_TUNER_TUA9001 is not set
+# CONFIG_MEDIA_TUNER_IT913X is not set
+# CONFIG_MEDIA_TUNER_R820T is not set
+
+#
+# Customise DVB Frontends
+#
+
+#
+# Multistandard (satellite) frontends
+#
+# CONFIG_DVB_STB0899 is not set
+# CONFIG_DVB_STB6100 is not set
+# CONFIG_DVB_STV090x is not set
+# CONFIG_DVB_STV6110x is not set
+
+#
+# Multistandard (cable + terrestrial) frontends
+#
+# CONFIG_DVB_DRXK is not set
+# CONFIG_DVB_TDA18271C2DD is not set
+
+#
+# DVB-S (satellite) frontends
+#
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_ZL10036 is not set
+# CONFIG_DVB_ZL10039 is not set
+# CONFIG_DVB_S5H1420 is not set
+# CONFIG_DVB_STV0288 is not set
+# CONFIG_DVB_STB6000 is not set
+# CONFIG_DVB_STV0299 is not set
+# CONFIG_DVB_STV6110 is not set
+# CONFIG_DVB_STV0900 is not set
+# CONFIG_DVB_TDA8083 is not set
+# CONFIG_DVB_TDA10086 is not set
+# CONFIG_DVB_TDA8261 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_TUNER_ITD1000 is not set
+# CONFIG_DVB_TUNER_CX24113 is not set
+# CONFIG_DVB_TDA826X is not set
+# CONFIG_DVB_TUA6100 is not set
+# CONFIG_DVB_CX24116 is not set
+CONFIG_DVB_DVBSKY_M88DS3103=m
+# CONFIG_DVB_M88DC2800 is not set
+CONFIG_DVB_SIT2=m
+CONFIG_DVB_DVBSKY_M88RS6000=m
+# CONFIG_DVB_CX24117 is not set
+# CONFIG_DVB_SI21XX is not set
+# CONFIG_DVB_TS2020 is not set
+# CONFIG_DVB_DS3000 is not set
+# CONFIG_DVB_MB86A16 is not set
+# CONFIG_DVB_TDA10071 is not set
+
+#
+# DVB-T (terrestrial) frontends
+#
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+# CONFIG_DVB_CX22700 is not set
+# CONFIG_DVB_CX22702 is not set
+# CONFIG_DVB_S5H1432 is not set
+# CONFIG_DVB_DRXD is not set
+# CONFIG_DVB_L64781 is not set
+# CONFIG_DVB_TDA1004X is not set
+# CONFIG_DVB_NXT6000 is not set
+# CONFIG_DVB_MT352 is not set
+# CONFIG_DVB_ZL10353 is not set
+# CONFIG_DVB_DIB3000MB is not set
+# CONFIG_DVB_DIB3000MC is not set
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+# CONFIG_DVB_DIB9000 is not set
+# CONFIG_DVB_TDA10048 is not set
+# CONFIG_DVB_AF9013 is not set
+# CONFIG_DVB_EC100 is not set
+# CONFIG_DVB_HD29L2 is not set
+# CONFIG_DVB_STV0367 is not set
+# CONFIG_DVB_CXD2820R is not set
+# CONFIG_DVB_RTL2830 is not set
+# CONFIG_DVB_RTL2832 is not set
+
+#
+# DVB-C (cable) frontends
+#
+# CONFIG_DVB_VES1820 is not set
+# CONFIG_DVB_TDA10021 is not set
+# CONFIG_DVB_TDA10023 is not set
+# CONFIG_DVB_STV0297 is not set
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+# CONFIG_DVB_LGDT330X is not set
+# CONFIG_DVB_LGDT3305 is not set
+# CONFIG_DVB_LG2160 is not set
+# CONFIG_DVB_S5H1409 is not set
+# CONFIG_DVB_AU8522_DTV is not set
+# CONFIG_DVB_S5H1411 is not set
+
+#
+# ISDB-T (terrestrial) frontends
+#
+# CONFIG_DVB_S921 is not set
+# CONFIG_DVB_DIB8000 is not set
+# CONFIG_DVB_MB86A20S is not set
+
+#
+# Digital terrestrial only tuners/PLL
+#
+# CONFIG_DVB_PLL is not set
+# CONFIG_DVB_TUNER_DIB0070 is not set
+# CONFIG_DVB_TUNER_DIB0090 is not set
+
+#
+# SEC control devices for DVB-S
+#
+# CONFIG_DVB_DRX39XYJ is not set
+# CONFIG_DVB_LNBP21 is not set
+# CONFIG_DVB_LNBP22 is not set
+# CONFIG_DVB_ISL6405 is not set
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_ISL6423 is not set
+# CONFIG_DVB_A8293 is not set
+# CONFIG_DVB_LGS8GL5 is not set
+# CONFIG_DVB_LGS8GXX is not set
+# CONFIG_DVB_ATBM8830 is not set
+# CONFIG_DVB_TDA665x is not set
+# CONFIG_DVB_IX2505V is not set
+# CONFIG_DVB_M88RS2000 is not set
+# CONFIG_DVB_AF9033 is not set
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+# CONFIG_AUDIO_SUPPORT is not set
+# CONFIG_MISC_DEVICES is not set
+# CONFIG_STAGING is not set
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/sit2_op.o_150322_arm b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/sit2_op.o_150322_arm
new file mode 100644 (file)
index 0000000..b021f17
Binary files /dev/null and b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/sit2_op.o_150322_arm differ
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/vu_kernel_4.1.20.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/vu_kernel_4.1.20.patch
new file mode 100644 (file)
index 0000000..4ac8227
--- /dev/null
@@ -0,0 +1,590 @@
+diff -Naur media_build-bst-160430.orig/linux/drivers/media/dvb-core/dvbdev.c media_build-bst-160430/linux/drivers/media/dvb-core/dvbdev.c
+--- media_build-bst-160430.orig/linux/drivers/media/dvb-core/dvbdev.c  2014-12-19 04:09:58.000000000 +0100
++++ media_build-bst-160430/linux/drivers/media/dvb-core/dvbdev.c       2017-07-06 14:59:10.952547108 +0200
+@@ -190,6 +190,7 @@
+       int minor;
+       int id;
++      char *vu_name = strstr(name, "_vuplus_");
+       mutex_lock(&dvbdev_register_lock);
+       if ((id = dvbdev_get_free_id (adap, type)) < 0){
+@@ -296,9 +297,9 @@
+       return 1;
+ }
+-static int dvbdev_get_free_adapter_num (void)
++static int dvbdev_get_free_adapter_num (int start_num)
+ {
+-      int num = 0;
++      int num = start_num;
+       while (num < DVB_MAX_ADAPTERS) {
+               if (dvbdev_check_free_adapter_num(num))
+@@ -320,12 +321,12 @@
+       for (i = 0; i < DVB_MAX_ADAPTERS; ++i) {
+               num = adapter_nums[i];
+-              if (num >= 0  &&  num < DVB_MAX_ADAPTERS) {
++              if (num >= vu_name? 0:1  &&  num < DVB_MAX_ADAPTERS) {
+               /* use the one the driver asked for */
+                       if (dvbdev_check_free_adapter_num(num))
+                               break;
+               } else {
+-                      num = dvbdev_get_free_adapter_num();
++                      num = dvbdev_get_free_adapter_num(vu_name? 0:1);
+                       break;
+               }
+               num = -1;
+@@ -455,7 +456,7 @@
+ {
+       int retval;
+       dev_t dev = MKDEV(DVB_MAJOR, 0);
+-      printk(KERN_ERR "WARNING: You are using an experimental version of the media stack.\n\tAs the driver is backported to an older kernel, it doesn't offer\n\tenough quality for its usage in production.\n\tUse it with care.\nLatest git patches (needed if you report a bug to linux-media@vger.kernel.org):\n\t427ae153c65ad7a08288d86baf99000569627d03 [media] bq/c-qcam, w9966, pms: move to staging in preparation for removal\n\tea2e813e8cc3492c951b9895724fd47187e04a6f [media] tlg2300: move to staging in preparation for removal\n\tc1d9e03d4ef47de60b414fa25f05f9c867f43c5a [media] vino/saa7191: move to staging in preparation for removal\n");
++      //printk(KERN_ERR "WARNING: You are using an experimental version of the media stack.\n\tAs the driver is backported to an older kernel, it doesn't offer\n\tenough quality for its usage in production.\n\tUse it with care.\nLatest git patches (needed if you report a bug to linux-media@vger.kernel.org):\n\t427ae153c65ad7a08288d86baf99000569627d03 [media] bq/c-qcam, w9966, pms: move to staging in preparation for removal\n\tea2e813e8cc3492c951b9895724fd47187e04a6f [media] tlg2300: move to staging in preparation for removal\n\tc1d9e03d4ef47de60b414fa25f05f9c867f43c5a [media] vino/saa7191: move to staging in preparation for removal\n");
+       if ((retval = register_chrdev_region(dev, MAX_DVB_MINORS, "DVB")) != 0) {
+               printk(KERN_ERR "dvb-core: unable to get major %d\n", DVB_MAJOR);
+diff -Naur media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c
+--- media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c    2014-12-19 06:46:31.000000000 +0100
++++ media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c 2017-07-06 15:01:22.810443706 +0200
+@@ -58,7 +58,7 @@
+       if (wlen != 0)
+               memcpy(state->obuf, wbuf, wlen);
+-      ret = dvb_usbv2_generic_rw_locked(d, state->obuf, wlen,
++      ret = dvb_usbv2_mediatree_generic_rw_locked(d, state->obuf, wlen,
+                       state->ibuf, rlen);
+       if (!ret && (rlen != 0))
+@@ -733,11 +733,11 @@
+ static struct usb_driver dvbsky_usb_driver = {
+       .name = KBUILD_MODNAME,
+       .id_table = dvbsky_id_table,
+-      .probe = dvb_usbv2_probe,
+-      .disconnect = dvb_usbv2_disconnect,
+-      .suspend = dvb_usbv2_suspend,
+-      .resume = dvb_usbv2_resume,
+-      .reset_resume = dvb_usbv2_reset_resume,
++      .probe = dvb_usbv2_mediatree_probe,
++      .disconnect = dvb_usbv2_mediatree_disconnect,
++      .suspend = dvb_usbv2_mediatree_suspend,
++      .resume = dvb_usbv2_mediatree_resume,
++      .reset_resume = dvb_usbv2_mediatree_reset_resume,
+       .no_dynamic_id = 1,
+       .soft_unbind = 1,
+ };
+diff -Naur media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
+--- media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c      2014-12-19 08:09:03.000000000 +0100
++++ media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c   2017-07-06 15:10:19.488125119 +0200
+@@ -21,8 +21,8 @@
+ #include "dvb_usb_common.h"
+-static int dvb_usbv2_disable_rc_polling;
+-module_param_named(disable_rc_polling, dvb_usbv2_disable_rc_polling, int, 0644);
++static int dvb_usbv2_mediatree_disable_rc_polling;
++module_param_named(disable_rc_polling, dvb_usbv2_mediatree_disable_rc_polling, int, 0644);
+ MODULE_PARM_DESC(disable_rc_polling,
+               "disable remote control polling (default: 0)");
+ static int dvb_usb_force_pid_filter_usage;
+@@ -31,7 +31,7 @@
+ MODULE_PARM_DESC(force_pid_filter_usage,
+               "force all DVB USB devices to use a PID filter, if any (default: 0)");
+-static int dvb_usbv2_download_firmware(struct dvb_usb_device *d,
++static int dvb_usbv2_mediatree_download_firmware(struct dvb_usb_device *d,
+               const char *name)
+ {
+       int ret;
+@@ -65,7 +65,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_i2c_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_i2c_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -92,7 +92,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_i2c_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_i2c_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -113,7 +113,7 @@
+        * When the parameter has been set to 1 via sysfs while the
+        * driver was running, or when bulk mode is enabled after IR init.
+        */
+-      if (dvb_usbv2_disable_rc_polling || d->rc.bulk_mode) {
++      if (dvb_usbv2_mediatree_disable_rc_polling || d->rc.bulk_mode) {
+               d->rc_polling_active = false;
+               return;
+       }
+@@ -130,13 +130,13 @@
+                       msecs_to_jiffies(d->rc.interval));
+ }
+-static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_remote_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       struct rc_dev *dev;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config)
++      if (dvb_usbv2_mediatree_disable_rc_polling || !d->props->get_rc_config)
+               return 0;
+       d->rc.map_name = d->rc_map;
+@@ -195,7 +195,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_remote_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_remote_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -208,8 +208,8 @@
+       return 0;
+ }
+ #else
+-      #define dvb_usbv2_remote_init(args...) 0
+-      #define dvb_usbv2_remote_exit(args...)
++      #define dvb_usbv2_mediatree_remote_init(args...) 0
++      #define dvb_usbv2_mediatree_remote_exit(args...)
+ #endif
+ static void dvb_usb_data_complete(struct usb_data_stream *stream, u8 *buf,
+@@ -233,7 +233,7 @@
+       dvb_dmx_swfilter_raw(&adap->demux, buf, len);
+ }
+-static int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_stream_init(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -245,7 +245,7 @@
+       return usb_urb_initv2(&adap->stream, &adap->props->stream);
+ }
+-static int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_stream_exit(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -400,7 +400,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_dvb_init(struct dvb_usb_adapter *adap)
+ {
+       int ret;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -470,7 +470,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_dvb_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_dvb_exit(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -486,7 +486,7 @@
+       return 0;
+ }
+-static int dvb_usbv2_device_power_ctrl(struct dvb_usb_device *d, int onoff)
++static int dvb_usbv2_mediatree_device_power_ctrl(struct dvb_usb_device *d, int onoff)
+ {
+       int ret;
+@@ -524,7 +524,7 @@
+               set_bit(ADAP_INIT, &adap->state_bits);
+       }
+-      ret = dvb_usbv2_device_power_ctrl(d, 1);
++      ret = dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (ret < 0)
+               goto err;
+@@ -576,7 +576,7 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_device_power_ctrl(d, 0);
++      ret = dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       if (ret < 0)
+               goto err;
+ err:
+@@ -591,7 +591,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_frontend_init(struct dvb_usb_adapter *adap)
+ {
+       int ret, i, count_registered = 0;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -662,7 +662,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_frontend_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_frontend_exit(struct dvb_usb_adapter *adap)
+ {
+       int ret, i;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -696,7 +696,7 @@
+       return 0;
+ }
+-static int dvb_usbv2_adapter_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_adapter_init(struct dvb_usb_device *d)
+ {
+       struct dvb_usb_adapter *adap;
+       int ret, i, adapter_count;
+@@ -750,15 +750,15 @@
+                       adap->max_feed_count = adap->props->pid_filter_count;
+               }
+-              ret = dvb_usbv2_adapter_stream_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_stream_init(adap);
+               if (ret)
+                       goto err;
+-              ret = dvb_usbv2_adapter_dvb_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_dvb_init(adap);
+               if (ret)
+                       goto err;
+-              ret = dvb_usbv2_adapter_frontend_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_frontend_init(adap);
+               if (ret)
+                       goto err;
+@@ -773,16 +773,16 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_adapter_exit(struct dvb_usb_device *d)
+ {
+       int i;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+       for (i = MAX_NO_OF_ADAPTER_PER_DEVICE - 1; i >= 0; i--) {
+               if (d->adapter[i].props) {
+-                      dvb_usbv2_adapter_dvb_exit(&d->adapter[i]);
+-                      dvb_usbv2_adapter_stream_exit(&d->adapter[i]);
+-                      dvb_usbv2_adapter_frontend_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_dvb_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_stream_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_frontend_exit(&d->adapter[i]);
+               }
+       }
+@@ -790,25 +790,25 @@
+ }
+ /* general initialization functions */
+-static int dvb_usbv2_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_remote_exit(d);
+-      dvb_usbv2_adapter_exit(d);
+-      dvb_usbv2_i2c_exit(d);
++      dvb_usbv2_mediatree_remote_exit(d);
++      dvb_usbv2_mediatree_adapter_exit(d);
++      dvb_usbv2_mediatree_i2c_exit(d);
+       kfree(d->priv);
+       kfree(d);
+       return 0;
+ }
+-static int dvb_usbv2_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_device_power_ctrl(d, 1);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (d->props->read_config) {
+               ret = d->props->read_config(d);
+@@ -816,11 +816,11 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_i2c_init(d);
++      ret = dvb_usbv2_mediatree_i2c_init(d);
+       if (ret < 0)
+               goto err;
+-      ret = dvb_usbv2_adapter_init(d);
++      ret = dvb_usbv2_mediatree_adapter_init(d);
+       if (ret < 0)
+               goto err;
+@@ -830,20 +830,20 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_remote_init(d);
++      ret = dvb_usbv2_mediatree_remote_init(d);
+       if (ret < 0)
+               goto err;
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       return 0;
+ err:
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       dev_dbg(&d->udev->dev, "%s: failed=%d\n", __func__, ret);
+       return ret;
+ }
+-int dvb_usbv2_probe(struct usb_interface *intf,
++int dvb_usbv2_mediatree_probe(struct usb_interface *intf,
+               const struct usb_device_id *id)
+ {
+       int ret;
+@@ -905,7 +905,7 @@
+                       if (!name)
+                               name = d->props->firmware;
+-                      ret = dvb_usbv2_download_firmware(d, name);
++                      ret = dvb_usbv2_mediatree_download_firmware(d, name);
+                       if (ret == 0) {
+                               /* device is warm, continue initialization */
+                               ;
+@@ -930,7 +930,7 @@
+       dev_info(&d->udev->dev, "%s: found a '%s' in warm state\n",
+                       KBUILD_MODNAME, d->name);
+-      ret = dvb_usbv2_init(d);
++      ret = dvb_usbv2_mediatree_init(d);
+       if (ret < 0)
+               goto err_free_all;
+@@ -942,14 +942,14 @@
+       return 0;
+ err_free_all:
+-      dvb_usbv2_exit(d);
++      dvb_usbv2_mediatree_exit(d);
+ err:
+       dev_dbg(&udev->dev, "%s: failed=%d\n", __func__, ret);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_probe);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_probe);
+-void dvb_usbv2_disconnect(struct usb_interface *intf)
++void dvb_usbv2_mediatree_disconnect(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       const char *name = d->name;
+@@ -960,14 +960,14 @@
+       if (d->props->exit)
+               d->props->exit(d);
+-      dvb_usbv2_exit(d);
++      dvb_usbv2_mediatree_exit(d);
+       dev_info(&dev, "%s: '%s' successfully deinitialized and disconnected\n",
+                       KBUILD_MODNAME, name);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_disconnect);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_disconnect);
+-int dvb_usbv2_suspend(struct usb_interface *intf, pm_message_t msg)
++int dvb_usbv2_mediatree_suspend(struct usb_interface *intf, pm_message_t msg)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       int ret = 0, i, active_fe;
+@@ -996,9 +996,9 @@
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_suspend);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_suspend);
+-static int dvb_usbv2_resume_common(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_resume_common(struct dvb_usb_device *d)
+ {
+       int ret = 0, i, active_fe;
+       struct dvb_frontend *fe;
+@@ -1029,33 +1029,33 @@
+       return ret;
+ }
+-int dvb_usbv2_resume(struct usb_interface *intf)
++int dvb_usbv2_mediatree_resume(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      return dvb_usbv2_resume_common(d);
++      return dvb_usbv2_mediatree_resume_common(d);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_resume);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_resume);
+-int dvb_usbv2_reset_resume(struct usb_interface *intf)
++int dvb_usbv2_mediatree_reset_resume(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_device_power_ctrl(d, 1);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (d->props->init)
+               d->props->init(d);
+-      ret = dvb_usbv2_resume_common(d);
++      ret = dvb_usbv2_mediatree_resume_common(d);
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_reset_resume);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_reset_resume);
+ MODULE_VERSION("2.0");
+ MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@desy.de>");
+diff -Naur media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h
+--- media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h   2014-09-26 11:57:42.000000000 +0200
++++ media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h        2017-07-06 15:11:20.500125396 +0200
+@@ -391,19 +391,19 @@
+       void *priv;
+ };
+-extern int dvb_usbv2_probe(struct usb_interface *,
++extern int dvb_usbv2_mediatree_probe(struct usb_interface *,
+               const struct usb_device_id *);
+-extern void dvb_usbv2_disconnect(struct usb_interface *);
+-extern int dvb_usbv2_suspend(struct usb_interface *, pm_message_t);
+-extern int dvb_usbv2_resume(struct usb_interface *);
+-extern int dvb_usbv2_reset_resume(struct usb_interface *);
++extern void dvb_usbv2_mediatree_disconnect(struct usb_interface *);
++extern int dvb_usbv2_mediatree_suspend(struct usb_interface *, pm_message_t);
++extern int dvb_usbv2_mediatree_resume(struct usb_interface *);
++extern int dvb_usbv2_mediatree_reset_resume(struct usb_interface *);
+ /* the generic read/write method for device control */
+-extern int dvb_usbv2_generic_rw(struct dvb_usb_device *, u8 *, u16, u8 *, u16);
+-extern int dvb_usbv2_generic_write(struct dvb_usb_device *, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_rw(struct dvb_usb_device *, u8 *, u16, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_write(struct dvb_usb_device *, u8 *, u16);
+ /* caller must hold lock when locked versions are called */
+-extern int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *,
++extern int dvb_usbv2_mediatree_generic_rw_locked(struct dvb_usb_device *,
+               u8 *, u16, u8 *, u16);
+-extern int dvb_usbv2_generic_write_locked(struct dvb_usb_device *, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_write_locked(struct dvb_usb_device *, u8 *, u16);
+ #endif
+diff -Naur media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
+--- media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c       2014-09-03 05:45:14.000000000 +0200
++++ media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c    2017-07-06 15:12:26.776125697 +0200
+@@ -65,7 +65,7 @@
+       return ret;
+ }
+-int dvb_usbv2_generic_rw(struct dvb_usb_device *d,
++int dvb_usbv2_mediatree_generic_rw(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+       int ret;
+@@ -76,9 +76,9 @@
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_rw);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_rw);
+-int dvb_usbv2_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
++int dvb_usbv2_mediatree_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
+ {
+       int ret;
+@@ -88,17 +88,17 @@
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_write);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_write);
+-int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *d,
++int dvb_usbv2_mediatree_generic_rw_locked(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+       return dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_rw_locked);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_rw_locked);
+-int dvb_usbv2_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
++int dvb_usbv2_mediatree_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
+ {
+       return dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_write_locked);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_write_locked);
+diff -Naur media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/Makefile media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/Makefile
+--- media_build-bst-160430.orig/linux/drivers/media/usb/dvb-usb-v2/Makefile    2014-09-26 11:57:42.000000000 +0200
++++ media_build-bst-160430/linux/drivers/media/usb/dvb-usb-v2/Makefile 2017-07-06 14:55:22.353096069 +0200
+@@ -1,5 +1,5 @@
+-dvb_usb_v2-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
+-obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2.o
++dvb_usb_v2_media_tree-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
++obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2_media_tree.o
+ dvb-usb-af9015-objs := af9015.o
+ obj-$(CONFIG_DVB_USB_AF9015) += dvb-usb-af9015.o
+diff -Naur media_build-bst-160430.orig/v4l/Makefile media_build-bst-160430/v4l/Makefile
+--- media_build-bst-160430.orig/v4l/Makefile   2015-02-11 04:31:06.000000000 +0100
++++ media_build-bst-160430/v4l/Makefile        2017-07-06 15:14:10.452126168 +0200
+@@ -202,7 +202,7 @@
+ #################################################
+ # installation invocation rules
+-modules_install install:: media-install firmware_install
++modules_install install:: media-install
+ remove rminstall:: media-rminstall
+diff -Naur media_build-bst-160430.orig/v4l/scripts/make_makefile.pl media_build-bst-160430/v4l/scripts/make_makefile.pl
+--- media_build-bst-160430.orig/v4l/scripts/make_makefile.pl   2014-12-19 04:07:10.000000000 +0100
++++ media_build-bst-160430/v4l/scripts/make_makefile.pl        2017-07-06 15:22:45.025441093 +0200
+@@ -253,11 +253,11 @@
+       print OUT "echo -n \"\$\$i \"; ";
+       print OUT "install -m 644 -c \$\$i \$(DESTDIR)\$(KDIR26)/$dir; fi; done; ";
+       print OUT "if [  \$\$n -ne 0 ]; then echo; ";
+-      print OUT "strip --strip-debug \$(DESTDIR)\$(KDIR26)/$dir/*.ko; ";
++      print OUT "\$(CROSS_COMPILE)strip --strip-debug \$(DESTDIR)\$(KDIR26)/$dir/*.ko; ";
+       print OUT "fi;\n\n";
+ }
+ print OUT "\t@echo\n";
+-print OUT "\t/sbin/depmod -a \$(KERNELRELEASE) \$(if \$(DESTDIR),-b \$(DESTDIR))\n\n";
++
+ # Creating Remove rule
+ print OUT "media-rminstall::\n";
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c.bb b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c.bb
new file mode 100644 (file)
index 0000000..61edfd5
--- /dev/null
@@ -0,0 +1,91 @@
+SUMMARY = "media tree drivers for hmp-usb-dvb-t2-c"
+HOMEPAGE = "http://linuxtv.org/"
+SECTION = "kernel/modules"
+LICENSE = "GPLv2"
+
+SRC_URI[md5sum] = "8073a7921a6f1e154083d71bc2ef5b46"
+SRC_URI[sha256sum] = "b0a32dc6efb5cb62c0572938de10cd3d718d94191fe4648a9722b7fdddcad2d5"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+DEPENDS = "virtual/kernel module-init-tools perl"
+KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
+
+do_fetch[depends] += "virtual/kernel:do_package_write_ipk"
+
+inherit module
+
+RPROVIDES_${PN} = "kernel-module-dvb-usb-dvbsky \
+                   kernel-module-dvbsky-m88rs6000 \
+                   kernel-module-dvbsky-m88ds3103 \
+                   kernel-module-sit2fe \
+                   kernel-module-dvb-usb-v2-media-tree \
+                    "
+SRCDATE = "141106"
+SRCDATE_VER = "${SRCDATE}"
+
+PV = "V${SRCDATE_VER}"
+PR = "r0"
+
+PACKAGES = "${PN} \
+            ${PN}-dev \
+            ${PN}-dbg \
+            "
+FILES_${PN} = " \
+       /lib/firmware/dvb-fe-ds300x.fw \
+       /lib/firmware/dvb-fe-ds3103.fw \
+       /lib/firmware/dvb-fe-rs6000.fw \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/dvbsky_m88rs6000.ko \
+       /lib/modules/*/kernel/drivers/media/dvb-frontends/sit2fe.ko \
+       /lib/modules/*/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2_media_tree.ko \
+       /lib/modules/*/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko \
+       "
+
+FILES_${PN}-dev = " \
+       /lib/modules/*/modules.* \
+       /lib/firmware/* \
+       "
+
+SRC_URI = "http://dvbsky.net/download/linux/media_build-bst-14-${SRCDATE}.tar.gz \
+           file://fix-strip.patch;patch=1 \
+           file://rename_dvb-usb-v2.patch \
+           file://vu_adapter_adjustment.patch \
+           file://vu_keep_compatibility.patch \
+           file://vu_no_v4l_firmwares_install.patch \
+           file://defconfig \
+           file://sit2_op.o_${SRCDATE} \
+"
+
+S = "${WORKDIR}/media_build-bst-14"
+
+EXTRA_OEMAKE = "LINUX_SRC=${STAGING_KERNEL_DIR} OUTDIR=${STAGING_KERNEL_BUILDDIR}"
+
+do_configure_prepend() {
+       CUR=`pwd`
+       cp ${WORKDIR}/sit2_op.o_${SRCDATE} ${S}/v4l/sit2_op.o
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake DIR=${STAGING_KERNEL_BUILDDIR} allyesconfig
+       cd $CUR
+}
+
+do_configure() {
+       install -m 0644 ${WORKDIR}/defconfig ${S}/v4l/.config
+}
+
+do_compile() {
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake KDIR="${STAGING_KERNEL_DIR}" DIR="${STAGING_KERNEL_DIR}" ${MAKE_TARGETS}
+       mipsel-oe-linux-strip --strip-debug ${S}/v4l/sit2fe.ko
+}
+
+do_install() {
+       unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+       oe_runmake DIR="${STAGING_KERNEL_BUILDDIR}" DESTDIR="${D}" install
+       install -m 0644 ${S}/v4l/sit2fe.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/media/dvb-frontends/
+       install -d 0644 ${D}${base_libdir}/firmware
+       install -m 0644 ${S}/dvbsky-firmware/*.fw ${D}${base_libdir}/firmware/
+}
+
+pkg_postinst_${PN} () {
+       depmod -a
+}
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/defconfig b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/defconfig
new file mode 100644 (file)
index 0000000..f5af750
--- /dev/null
@@ -0,0 +1,366 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# V4L/DVB menu
+#
+# CONFIG_SND_MIRO is not set
+CONFIG_INPUT=y
+CONFIG_GPIOLIB=y
+CONFIG_PM_RUNTIME=y
+CONFIG_USB=y
+# CONFIG_ARCH_DAVINCI_DM365 is not set
+# CONFIG_MFD_SYSCON is not set
+CONFIG_NEW_LEDS=y
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_SPARC64 is not set
+# CONFIG_SOC_EXYNOS4412 is not set
+CONFIG_FW_LOADER=y
+# CONFIG_TTY is not set
+# CONFIG_GENERIC_PHY is not set
+CONFIG_SND_SOC=m
+# CONFIG_PLAT_M32700UT is not set
+# CONFIG_ARCH_EXYNOS is not set
+CONFIG_SND_FM801=m
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_STA2X11 is not set
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_PLAT_S5P is not set
+CONFIG_MFD_WL1273_CORE=m
+# CONFIG_ALPHA is not set
+CONFIG_RFKILL=y
+# CONFIG_PLAT_S3C24XX is not set
+# CONFIG_HAVE_CLK is not set
+# CONFIG_COMPILE_TEST is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_FIQ is not set
+CONFIG_DMADEVICES=y
+# CONFIG_OMAP2_DSS is not set
+CONFIG_REGULATOR=y
+CONFIG_SND=m
+# CONFIG_CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_BROKEN is not set
+# CONFIG_ARCH_OMAP2 is not set
+# CONFIG_OF is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUPPORT is not set
+# CONFIG_SPARC32 is not set
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_SND_ISA is not set
+# CONFIG_OMAP_DM_TIMER is not set
+# CONFIG_ARCH_AT91 is not set
+CONFIG_INET=y
+# CONFIG_SOC_IMX27 is not set
+# CONFIG_ARCH_OMAP3 is not set
+CONFIG_CRC32=y
+# CONFIG_CONFIG_SMS_USB_DRV is not set
+CONFIG_SYSFS=y
+CONFIG_MMC=y
+# CONFIG_ARCH_OMAP2PLUS is not set
+# CONFIG_ISA is not set
+# CONFIG_OMAP2_VRFB is not set
+CONFIG_PCI=y
+CONFIG_TI_ST=m
+CONFIG_PARPORT_1284=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_PARPORT=m
+# CONFIG_SOC_EXYNOS4212 is not set
+# CONFIG_PPC_MPC512x is not set
+CONFIG_FB_VIA=m
+CONFIG_FIREWIRE=m
+CONFIG_I2C_GPIO=m
+CONFIG_NET=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_SOC_EXYNOS5250 is not set
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_PXA27x is not set
+# CONFIG_OMAP_IOVMM is not set
+# CONFIG_ARCH_EXYNOS5 is not set
+# CONFIG_SGI_IP22 is not set
+CONFIG_ISA_DMA_API=y
+CONFIG_I2C=y
+CONFIG_TIMB_DMA=m
+CONFIG_REGMAP_I2C=y
+# CONFIG_ARCH_MMP is not set
+CONFIG_MODULES=y
+CONFIG_HAS_IOMEM=y
+CONFIG_DMA_ENGINE=y
+# CONFIG_MACH_MX27 is not set
+# CONFIG_ARCH_MXC is not set
+CONFIG_MFD_CORE=y
+# CONFIG_SND_SOC_SI476X is not set
+CONFIG_MFD_TIMBERDALE=m
+CONFIG_DEBUG_FS=y
+CONFIG_SPI=y
+# CONFIG_ARCH_OMAP4 is not set
+CONFIG_HAS_DMA=y
+# CONFIG_BLACKFIN is not set
+# CONFIG_SRAM is not set
+CONFIG_X86=y
+# CONFIG_SOC_DRA7XX is not set
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_FB=y
+# CONFIG_ARCH_MX1 is not set
+CONFIG_I2C_MUX=m
+# CONFIG_ARCH_MULTIPLATFORM is not set
+CONFIG_SONY_LAPTOP=m
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_PNP=y
+# CONFIG_MX3_IPU is not set
+CONFIG_SND_PCM=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_M32R is not set
+CONFIG_LEDS_CLASS=y
+CONFIG_BITREVERSE=y
+# CONFIG_VIDEO_KERNEL_VERSION is not set
+CONFIG_MEDIA_SUPPORT=y
+
+#
+# Multimedia core support
+#
+# CONFIG_MEDIA_CAMERA_SUPPORT is not set
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_RC_SUPPORT=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_DVB_CORE=y
+CONFIG_DVB_NET=y
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+#
+# Media drivers
+#
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_RC_CORE=y
+CONFIG_RC_MAP=y
+
+#
+# Analog/digital TV USB devices
+#
+# CONFIG_VIDEO_AU0828 is not set
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_V2_MEDIATREE=m
+# CONFIG_DVB_USB_AF9015 is not set
+# CONFIG_DVB_USB_AF9035 is not set
+# CONFIG_DVB_USB_ANYSEE is not set
+# CONFIG_DVB_USB_AU6610 is not set
+# CONFIG_DVB_USB_AZ6007 is not set
+# CONFIG_DVB_USB_CE6230 is not set
+# CONFIG_DVB_USB_EC168 is not set
+# CONFIG_DVB_USB_GL861 is not set
+# CONFIG_DVB_USB_MXL111SF is not set
+# CONFIG_DVB_USB_RTL28XXU is not set
+CONFIG_DVB_USB_DVBSKY=m
+# CONFIG_DVB_TTUSB_BUDGET is not set
+# CONFIG_DVB_TTUSB_DEC is not set
+# CONFIG_SMS_USB_DRV is not set
+# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+# CONFIG_MEDIA_PCI_SUPPORT is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+# CONFIG_SMS_SDIO_DRV is not set
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+# CONFIG_DVB_FIREDTV is not set
+# CONFIG_CYPRESS_FIRMWARE is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
+CONFIG_MEDIA_ATTACH=y
+
+#
+# Customize TV tuners
+#
+# CONFIG_MEDIA_TUNER_SIMPLE is not set
+# CONFIG_MEDIA_TUNER_TDA8290 is not set
+# CONFIG_MEDIA_TUNER_TDA827X is not set
+# CONFIG_MEDIA_TUNER_TDA18271 is not set
+# CONFIG_MEDIA_TUNER_TDA9887 is not set
+# CONFIG_MEDIA_TUNER_TEA5761 is not set
+# CONFIG_MEDIA_TUNER_TEA5767 is not set
+# CONFIG_MEDIA_TUNER_MT20XX is not set
+# CONFIG_MEDIA_TUNER_MT2060 is not set
+# CONFIG_MEDIA_TUNER_MT2063 is not set
+# CONFIG_MEDIA_TUNER_MT2266 is not set
+# CONFIG_MEDIA_TUNER_MT2131 is not set
+# CONFIG_MEDIA_TUNER_QT1010 is not set
+# CONFIG_MEDIA_TUNER_XC2028 is not set
+# CONFIG_MEDIA_TUNER_XC5000 is not set
+# CONFIG_MEDIA_TUNER_XC4000 is not set
+# CONFIG_MEDIA_TUNER_MXL5005S is not set
+# CONFIG_MEDIA_TUNER_MXL5007T is not set
+# CONFIG_MEDIA_TUNER_MC44S803 is not set
+# CONFIG_MEDIA_TUNER_MAX2165 is not set
+# CONFIG_MEDIA_TUNER_TDA18218 is not set
+# CONFIG_MEDIA_TUNER_FC0011 is not set
+# CONFIG_MEDIA_TUNER_FC0012 is not set
+# CONFIG_MEDIA_TUNER_FC0013 is not set
+# CONFIG_MEDIA_TUNER_TDA18212 is not set
+# CONFIG_MEDIA_TUNER_E4000 is not set
+# CONFIG_MEDIA_TUNER_FC2580 is not set
+# CONFIG_MEDIA_TUNER_M88TS2022 is not set
+# CONFIG_MEDIA_TUNER_TUA9001 is not set
+# CONFIG_MEDIA_TUNER_IT913X is not set
+# CONFIG_MEDIA_TUNER_R820T is not set
+
+#
+# Customise DVB Frontends
+#
+
+#
+# Multistandard (satellite) frontends
+#
+# CONFIG_DVB_STB0899 is not set
+# CONFIG_DVB_STB6100 is not set
+# CONFIG_DVB_STV090x is not set
+# CONFIG_DVB_STV6110x is not set
+
+#
+# Multistandard (cable + terrestrial) frontends
+#
+# CONFIG_DVB_DRXK is not set
+# CONFIG_DVB_TDA18271C2DD is not set
+
+#
+# DVB-S (satellite) frontends
+#
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_ZL10036 is not set
+# CONFIG_DVB_ZL10039 is not set
+# CONFIG_DVB_S5H1420 is not set
+# CONFIG_DVB_STV0288 is not set
+# CONFIG_DVB_STB6000 is not set
+# CONFIG_DVB_STV0299 is not set
+# CONFIG_DVB_STV6110 is not set
+# CONFIG_DVB_STV0900 is not set
+# CONFIG_DVB_TDA8083 is not set
+# CONFIG_DVB_TDA10086 is not set
+# CONFIG_DVB_TDA8261 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_TUNER_ITD1000 is not set
+# CONFIG_DVB_TUNER_CX24113 is not set
+# CONFIG_DVB_TDA826X is not set
+# CONFIG_DVB_TUA6100 is not set
+# CONFIG_DVB_CX24116 is not set
+CONFIG_DVB_DVBSKY_M88DS3103=m
+# CONFIG_DVB_M88DC2800 is not set
+CONFIG_DVB_SIT2=m
+CONFIG_DVB_DVBSKY_M88RS6000=m
+# CONFIG_DVB_CX24117 is not set
+# CONFIG_DVB_SI21XX is not set
+# CONFIG_DVB_TS2020 is not set
+# CONFIG_DVB_DS3000 is not set
+# CONFIG_DVB_MB86A16 is not set
+# CONFIG_DVB_TDA10071 is not set
+
+#
+# DVB-T (terrestrial) frontends
+#
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+# CONFIG_DVB_CX22700 is not set
+# CONFIG_DVB_CX22702 is not set
+# CONFIG_DVB_S5H1432 is not set
+# CONFIG_DVB_DRXD is not set
+# CONFIG_DVB_L64781 is not set
+# CONFIG_DVB_TDA1004X is not set
+# CONFIG_DVB_NXT6000 is not set
+# CONFIG_DVB_MT352 is not set
+# CONFIG_DVB_ZL10353 is not set
+# CONFIG_DVB_DIB3000MB is not set
+# CONFIG_DVB_DIB3000MC is not set
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+# CONFIG_DVB_DIB9000 is not set
+# CONFIG_DVB_TDA10048 is not set
+# CONFIG_DVB_AF9013 is not set
+# CONFIG_DVB_EC100 is not set
+# CONFIG_DVB_HD29L2 is not set
+# CONFIG_DVB_STV0367 is not set
+# CONFIG_DVB_CXD2820R is not set
+# CONFIG_DVB_RTL2830 is not set
+# CONFIG_DVB_RTL2832 is not set
+
+#
+# DVB-C (cable) frontends
+#
+# CONFIG_DVB_VES1820 is not set
+# CONFIG_DVB_TDA10021 is not set
+# CONFIG_DVB_TDA10023 is not set
+# CONFIG_DVB_STV0297 is not set
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+# CONFIG_DVB_LGDT330X is not set
+# CONFIG_DVB_LGDT3305 is not set
+# CONFIG_DVB_LG2160 is not set
+# CONFIG_DVB_S5H1409 is not set
+# CONFIG_DVB_AU8522_DTV is not set
+# CONFIG_DVB_S5H1411 is not set
+
+#
+# ISDB-T (terrestrial) frontends
+#
+# CONFIG_DVB_S921 is not set
+# CONFIG_DVB_DIB8000 is not set
+# CONFIG_DVB_MB86A20S is not set
+
+#
+# Digital terrestrial only tuners/PLL
+#
+# CONFIG_DVB_PLL is not set
+# CONFIG_DVB_TUNER_DIB0070 is not set
+# CONFIG_DVB_TUNER_DIB0090 is not set
+
+#
+# SEC control devices for DVB-S
+#
+# CONFIG_DVB_DRX39XYJ is not set
+# CONFIG_DVB_LNBP21 is not set
+# CONFIG_DVB_LNBP22 is not set
+# CONFIG_DVB_ISL6405 is not set
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_ISL6423 is not set
+# CONFIG_DVB_A8293 is not set
+# CONFIG_DVB_LGS8GL5 is not set
+# CONFIG_DVB_LGS8GXX is not set
+# CONFIG_DVB_ATBM8830 is not set
+# CONFIG_DVB_TDA665x is not set
+# CONFIG_DVB_IX2505V is not set
+# CONFIG_DVB_M88RS2000 is not set
+# CONFIG_DVB_AF9033 is not set
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+# CONFIG_AUDIO_SUPPORT is not set
+# CONFIG_MISC_DEVICES is not set
+# CONFIG_STAGING is not set
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/fix-strip.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/fix-strip.patch
new file mode 100644 (file)
index 0000000..277acbf
--- /dev/null
@@ -0,0 +1,19 @@
+changeset:   15145:72aa2db63b3d
+tag:         tip
+user:        Andreas Oberritter <obi@linuxtv.org>
+date:        Tue Oct 12 10:03:53 2010 +0000
+summary:     make_makefile.pl: use $(CROSS_COMPILE)strip
+
+diff --git a/v4l/scripts/make_makefile.pl b/v4l/scripts/make_makefile.pl
+--- a/v4l/scripts/make_makefile.pl
++++ b/v4l/scripts/make_makefile.pl
+@@ -223,7 +223,7 @@
+       print OUT "echo -n \"\$\$i \"; ";
+       print OUT "install -m 644 -c \$\$i \$(DESTDIR)\$(KDIR26)/$dir; fi; done; ";
+       print OUT "if [  \$\$n -ne 0 ]; then echo; ";
+-      print OUT "strip --strip-debug \$(DESTDIR)\$(KDIR26)/$dir/*.ko; ";
++      print OUT "\$(CROSS_COMPILE)strip --strip-debug \$(DESTDIR)\$(KDIR26)/$dir/*.ko; ";
+       print OUT "fi;\n\n";
+ }
+ print OUT "\t@echo\n";
+
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/localversion.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/localversion.patch
new file mode 100644 (file)
index 0000000..23a0bb8
--- /dev/null
@@ -0,0 +1,115 @@
+# HG changeset patch
+# User Andreas Oberritter <obi@linuxtv.org>
+# Date 1284119639 0
+# Node ID 008dba7f69aa8461f3210919fdc2396941241013
+# Parent  558dc662028e9ae5debcfb708da07ab67be8b3d8
+Support CONFIG_LOCALVERSION by parsing UTS_RELEASE
+
+diff --git a/v4l/Makefile b/v4l/Makefile
+--- a/v4l/Makefile
++++ b/v4l/Makefile
+@@ -236,22 +236,8 @@
+ $(obj)/.version:
+ ifneq ($(DIR),)
+       @echo "Searching in $(DIR)/Makefile for kernel version."
+-      @perl \
+-      -e '$$d="$(DIR)"; ' \
+-      -e 'S: open IN,"$$d/Makefile"; ' \
+-      -e 'while (<IN>) {' \
+-      -e '    if (/^VERSION\s*=\s*(\d+)/){ $$version=$$1; }' \
+-      -e '    elsif (/^PATCHLEVEL\s*=\s*(\d+)/){ $$level=$$1; }' \
+-      -e '    elsif (/^SUBLEVEL\s*=\s*(\d+)/){ $$sublevel=$$1; }' \
+-      -e '    elsif (/^EXTRAVERSION\s*=\s*(\S+)\n/){ $$extra=$$1; }' \
+-      -e '    elsif (/^KERNELSRC\s*:=\s*(\S.*)\n/ || /^MAKEARGS\s*:=\s*-C\s*(\S.*)\n/)' \
+-      -e '        { $$o=$$d; $$d=$$1; goto S; }' \
+-      -e '};' \
+-      -e 'printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",' \
+-      -e '    $$version,$$level,$$sublevel,$$version,$$level,$$sublevel,$$extra);' \
+-      -e 'print "OUTDIR:=$$o\n" if($$o);' \
+-      -e 'print "SRCDIR:=$$d\n";' > $(obj)/.version
+-      @cat .version|grep KERNELRELEASE:|sed s,'KERNELRELEASE:=','Forcing compiling to version ',
++      @perl scripts/generate-dot-version.pl "$(DIR)" > $(obj)/.version
++      @grep KERNELRELEASE: $(obj)/.version | sed s,'KERNELRELEASE:=','Forcing compiling to version ',
+       @if [ ! -f $(DIR)/scripts/kallsyms ]; then \
+               echo "*** Warning: You should configure and build kernel before compiling V4L"; \
+diff --git a/v4l/scripts/generate-dot-version.pl b/v4l/scripts/generate-dot-version.pl
+new file mode 100755
+--- /dev/null
++++ b/v4l/scripts/generate-dot-version.pl
+@@ -0,0 +1,75 @@
++#!/usr/bin/perl -w
++
++use strict;
++
++my @headers = (
++      "generated/utsrelease.h",
++      "linux/utsrelease.h",
++      "linux/version.h",
++);
++
++if (@ARGV < 1) {
++      print "Usage: generate-dot-version <srcdir>\n";
++      exit 1;
++}
++
++my $srcdir = $ARGV[0];
++
++if (! -d $srcdir) {
++      print "Not a directory: $srcdir\n";
++      exit 1;
++}
++
++sub print_uts_release($)
++{
++      my $path = shift;
++
++      open IN, "<$path" or die $!;
++
++      while (<IN>) {
++              if (m/#define\s+UTS_RELEASE\s+"(\d+)\.(\d+)\.(\d+)(.*)"/) {
++                      print "VERSION:=$1\n";
++                      print "PATCHLEVEL:=$2\n";
++                      print "SUBLEVEL:=$3\n";
++                      print "KERNELRELEASE:=$1.$2.$3$4\n";
++                      last;
++              }
++      }
++
++      close IN;
++}
++
++sub print_directories($)
++{
++      my $srcdir = shift;
++      my $outdir = undef;
++
++      open IN, "<$srcdir/Makefile" or die $!;
++
++      while (<IN>) {
++              if (m/^KERNELSRC\s*:=\s*(\S.*)\n/ || m/^MAKEARGS\s*:=\s*-C\s*(\S.*)\n/) {
++                      $outdir = $srcdir;
++                      $srcdir = $1;
++                      last;
++              }
++      }
++
++      close IN;
++
++      if (defined $outdir) {
++              print "OUTDIR:=$outdir\n";
++      }
++
++      print "SRCDIR:=$srcdir\n";
++}
++
++for (@headers) {
++      my $path = "$srcdir/include/$_";
++      if (-f $path) {
++              print_uts_release($path);
++              last;
++      }
++}
++
++print_directories($srcdir);
++
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/rename_dvb-usb-v2.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/rename_dvb-usb-v2.patch
new file mode 100644 (file)
index 0000000..f48cfa5
--- /dev/null
@@ -0,0 +1,11 @@
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/Makefile media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/Makefile
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/Makefile        2014-11-25 18:01:41.198281957 +0100
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/Makefile     2014-11-25 18:01:22.578940354 +0100
+@@ -1,5 +1,5 @@
+-dvb_usb_v2-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
+-obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2.o
++dvb_usb_v2_media_tree-objs := dvb_usb_core.o dvb_usb_urb.o usb_urb.o
++obj-$(CONFIG_DVB_USB_V2) += dvb_usb_v2_media_tree.o
+ dvb-usb-af9015-objs := af9015.o
+ obj-$(CONFIG_DVB_USB_AF9015) += dvb-usb-af9015.o
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/sit2_op.o_141106 b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/sit2_op.o_141106
new file mode 100644 (file)
index 0000000..4477405
Binary files /dev/null and b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/sit2_op.o_141106 differ
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_adapter_adjustment.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_adapter_adjustment.patch
new file mode 100644 (file)
index 0000000..573225e
--- /dev/null
@@ -0,0 +1,45 @@
+diff -Naur media_build-bst-14.orig/linux/drivers/media/dvb-core/dvbdev.c media_build-bst-14/linux/drivers/media/dvb-core/dvbdev.c
+--- media_build-bst-14.orig/linux/drivers/media/dvb-core/dvbdev.c      2014-05-08 07:18:09.000000000 +0200
++++ media_build-bst-14/linux/drivers/media/dvb-core/dvbdev.c   2014-12-13 11:17:16.000000000 +0100
+@@ -296,9 +296,9 @@
+       return 1;
+ }
+-static int dvbdev_get_free_adapter_num (void)
++static int dvbdev_get_free_adapter_num (int start_num)
+ {
+-      int num = 0;
++      int num = start_num;
+       while (num < DVB_MAX_ADAPTERS) {
+               if (dvbdev_check_free_adapter_num(num))
+@@ -316,16 +316,17 @@
+ {
+       int i, num;
++      char *vu_name = strstr(name, "_vuplus_");
+       mutex_lock(&dvbdev_register_lock);
+       for (i = 0; i < DVB_MAX_ADAPTERS; ++i) {
+               num = adapter_nums[i];
+-              if (num >= 0  &&  num < DVB_MAX_ADAPTERS) {
++              if (num >= vu_name? 0:1  &&  num < DVB_MAX_ADAPTERS) {
+               /* use the one the driver asked for */
+                       if (dvbdev_check_free_adapter_num(num))
+                               break;
+               } else {
+-                      num = dvbdev_get_free_adapter_num();
++                      num = dvbdev_get_free_adapter_num(vu_name? 0:1);
+                       break;
+               }
+               num = -1;
+@@ -455,9 +456,6 @@
+ {
+       int retval;
+       dev_t dev = MKDEV(DVB_MAJOR, 0);
+-      /*printk(KERN_ERR "WARNING: You are using an experimental version of the media stack.\n\tAs the driver is backported to an older kernel, it doesn't offer\n\tenough quality for its usage in production.\n\tUse it with care.\nLatest git patches (needed if you report a bug to linux-media@vger.kernel.org):\n\ta83b93a7480441a47856dc9104bea970e84cda87 [media] em28xx-dvb: fix PCTV 461e tuner I2C binding\n\t5eef22031295234990a26d809efb4100c1e60c11 Revert [media] em28xx-dvb: fix PCTV 461e tuner I2C binding\n\t3ec40dcfb413214b2874aec858870502b61c2202 [media] em28xx: fix PCTV 290e LNA oops\n");
+-      */
+-
+       if ((retval = register_chrdev_region(dev, MAX_DVB_MINORS, "DVB")) != 0) {
+               printk(KERN_ERR "dvb-core: unable to get major %d\n", DVB_MAJOR);
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_keep_compatibility.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_keep_compatibility.patch
new file mode 100644 (file)
index 0000000..a4a5bb1
--- /dev/null
@@ -0,0 +1,521 @@
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c        2014-10-14 10:05:32.000000000 +0200
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c     2015-05-30 11:26:08.138390315 +0200
+@@ -69,7 +69,7 @@
+       if (wlen != 0)
+               memcpy(state->obuf, wbuf, wlen);
+-      ret = dvb_usbv2_generic_rw_locked(d, state->obuf, wlen,
++      ret = dvb_usbv2_mediatree_generic_rw_locked(d, state->obuf, wlen,
+                       state->ibuf, rlen);
+       if (!ret && (rlen != 0))
+@@ -893,11 +893,11 @@
+ static struct usb_driver dvbsky_usb_driver = {
+       .name = KBUILD_MODNAME,
+       .id_table = dvbsky_id_table,
+-      .probe = dvb_usbv2_probe,
+-      .disconnect = dvb_usbv2_disconnect,
+-      .suspend = dvb_usbv2_suspend,
+-      .resume = dvb_usbv2_resume,
+-      .reset_resume = dvb_usbv2_reset_resume,
++      .probe = dvb_usbv2_mediatree_probe,
++      .disconnect = dvb_usbv2_mediatree_disconnect,
++      .suspend = dvb_usbv2_mediatree_suspend,
++      .resume = dvb_usbv2_mediatree_resume,
++      .reset_resume = dvb_usbv2_mediatree_reset_resume,
+       .no_dynamic_id = 1,
+       .soft_unbind = 1,
+ };
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c  2014-10-14 08:52:04.000000000 +0200
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c       2015-05-30 11:50:42.125378459 +0200
+@@ -21,8 +21,8 @@
+ #include "dvb_usb_common.h"
+-int dvb_usbv2_disable_rc_polling;
+-module_param_named(disable_rc_polling, dvb_usbv2_disable_rc_polling, int, 0644);
++int dvb_usbv2_mediatree_disable_rc_polling;
++module_param_named(disable_rc_polling, dvb_usbv2_mediatree_disable_rc_polling, int, 0644);
+ MODULE_PARM_DESC(disable_rc_polling,
+               "disable remote control polling (default: 0)");
+ static int dvb_usb_force_pid_filter_usage;
+@@ -31,7 +31,7 @@
+ MODULE_PARM_DESC(force_pid_filter_usage,
+               "force all DVB USB devices to use a PID filter, if any (default: 0)");
+-static int dvb_usbv2_download_firmware(struct dvb_usb_device *d,
++static int dvb_usbv2_mediatree_download_firmware(struct dvb_usb_device *d,
+               const char *name)
+ {
+       int ret;
+@@ -65,7 +65,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_i2c_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_i2c_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -92,7 +92,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_i2c_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_i2c_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -113,7 +113,7 @@
+        * When the parameter has been set to 1 via sysfs while the
+        * driver was running, or when bulk mode is enabled after IR init.
+        */
+-      if (dvb_usbv2_disable_rc_polling || d->rc.bulk_mode) {
++      if (dvb_usbv2_mediatree_disable_rc_polling || d->rc.bulk_mode) {
+               d->rc_polling_active = false;
+               return;
+       }
+@@ -130,13 +130,13 @@
+                       msecs_to_jiffies(d->rc.interval));
+ }
+-static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_remote_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       struct rc_dev *dev;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config)
++      if (dvb_usbv2_mediatree_disable_rc_polling || !d->props->get_rc_config)
+               return 0;
+       d->rc.map_name = d->rc_map;
+@@ -199,7 +199,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_remote_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_remote_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+@@ -212,8 +212,8 @@
+       return 0;
+ }
+ #else
+-      #define dvb_usbv2_remote_init(args...) 0
+-      #define dvb_usbv2_remote_exit(args...)
++      #define dvb_usbv2_mediatree_remote_init(args...) 0
++      #define dvb_usbv2_mediatree_remote_exit(args...)
+ #endif
+ static void dvb_usb_data_complete(struct usb_data_stream *stream, u8 *buf,
+@@ -237,7 +237,7 @@
+       dvb_dmx_swfilter_raw(&adap->demux, buf, len);
+ }
+-static int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_stream_init(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -249,7 +249,7 @@
+       return usb_urb_initv2(&adap->stream, &adap->props->stream);
+ }
+-static int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_stream_exit(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -419,7 +419,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_dvb_init(struct dvb_usb_adapter *adap)
+ {
+       int ret;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -489,7 +489,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_dvb_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_dvb_exit(struct dvb_usb_adapter *adap)
+ {
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+                       adap->id);
+@@ -505,7 +505,7 @@
+       return 0;
+ }
+-static int dvb_usbv2_device_power_ctrl(struct dvb_usb_device *d, int onoff)
++static int dvb_usbv2_mediatree_device_power_ctrl(struct dvb_usb_device *d, int onoff)
+ {
+       int ret;
+@@ -543,7 +543,7 @@
+               set_bit(ADAP_INIT, &adap->state_bits);
+       }
+-      ret = dvb_usbv2_device_power_ctrl(d, 1);
++      ret = dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (ret < 0)
+               goto err;
+@@ -603,7 +603,7 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_device_power_ctrl(d, 0);
++      ret = dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       if (ret < 0)
+               goto err;
+ err:
+@@ -622,7 +622,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_frontend_init(struct dvb_usb_adapter *adap)
+ {
+       int ret, i, count_registered = 0;
+       struct dvb_usb_device *d = adap_to_d(adap);
+@@ -693,7 +693,7 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_frontend_exit(struct dvb_usb_adapter *adap)
++static int dvb_usbv2_mediatree_adapter_frontend_exit(struct dvb_usb_adapter *adap)
+ {
+       int i;
+       dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
+@@ -709,7 +709,7 @@
+       return 0;
+ }
+-static int dvb_usbv2_adapter_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_adapter_init(struct dvb_usb_device *d)
+ {
+       struct dvb_usb_adapter *adap;
+       int ret, i, adapter_count;
+@@ -763,15 +763,15 @@
+                       adap->max_feed_count = adap->props->pid_filter_count;
+               }
+-              ret = dvb_usbv2_adapter_stream_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_stream_init(adap);
+               if (ret)
+                       goto err;
+-              ret = dvb_usbv2_adapter_dvb_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_dvb_init(adap);
+               if (ret)
+                       goto err;
+-              ret = dvb_usbv2_adapter_frontend_init(adap);
++              ret = dvb_usbv2_mediatree_adapter_frontend_init(adap);
+               if (ret)
+                       goto err;
+@@ -786,16 +786,16 @@
+       return ret;
+ }
+-static int dvb_usbv2_adapter_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_adapter_exit(struct dvb_usb_device *d)
+ {
+       int i;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+       for (i = MAX_NO_OF_ADAPTER_PER_DEVICE - 1; i >= 0; i--) {
+               if (d->adapter[i].props) {
+-                      dvb_usbv2_adapter_frontend_exit(&d->adapter[i]);
+-                      dvb_usbv2_adapter_dvb_exit(&d->adapter[i]);
+-                      dvb_usbv2_adapter_stream_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_frontend_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_dvb_exit(&d->adapter[i]);
++                      dvb_usbv2_mediatree_adapter_stream_exit(&d->adapter[i]);
+               }
+       }
+@@ -803,25 +803,25 @@
+ }
+ /* general initialization functions */
+-static int dvb_usbv2_exit(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_exit(struct dvb_usb_device *d)
+ {
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_remote_exit(d);
+-      dvb_usbv2_adapter_exit(d);
+-      dvb_usbv2_i2c_exit(d);
++      dvb_usbv2_mediatree_remote_exit(d);
++      dvb_usbv2_mediatree_adapter_exit(d);
++      dvb_usbv2_mediatree_i2c_exit(d);
+       kfree(d->priv);
+       kfree(d);
+       return 0;
+ }
+-static int dvb_usbv2_init(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_init(struct dvb_usb_device *d)
+ {
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_device_power_ctrl(d, 1);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (d->props->read_config) {
+               ret = d->props->read_config(d);
+@@ -829,11 +829,11 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_i2c_init(d);
++      ret = dvb_usbv2_mediatree_i2c_init(d);
+       if (ret < 0)
+               goto err;
+-      ret = dvb_usbv2_adapter_init(d);
++      ret = dvb_usbv2_mediatree_adapter_init(d);
+       if (ret < 0)
+               goto err;
+@@ -843,20 +843,20 @@
+                       goto err;
+       }
+-      ret = dvb_usbv2_remote_init(d);
++      ret = dvb_usbv2_mediatree_remote_init(d);
+       if (ret < 0)
+               goto err;
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       return 0;
+ err:
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       dev_dbg(&d->udev->dev, "%s: failed=%d\n", __func__, ret);
+       return ret;
+ }
+-int dvb_usbv2_probe(struct usb_interface *intf,
++int dvb_usbv2_mediatree_probe(struct usb_interface *intf,
+               const struct usb_device_id *id)
+ {
+       int ret;
+@@ -918,7 +918,7 @@
+                       if (!name)
+                               name = d->props->firmware;
+-                      ret = dvb_usbv2_download_firmware(d, name);
++                      ret = dvb_usbv2_mediatree_download_firmware(d, name);
+                       if (ret == 0) {
+                               /* device is warm, continue initialization */
+                               ;
+@@ -943,7 +943,7 @@
+       dev_info(&d->udev->dev, "%s: found a '%s' in warm state\n",
+                       KBUILD_MODNAME, d->name);
+-      ret = dvb_usbv2_init(d);
++      ret = dvb_usbv2_mediatree_init(d);
+       if (ret < 0)
+               goto err_free_all;
+@@ -955,14 +955,14 @@
+       return 0;
+ err_free_all:
+-      dvb_usbv2_exit(d);
++      dvb_usbv2_mediatree_exit(d);
+ err:
+       dev_dbg(&udev->dev, "%s: failed=%d\n", __func__, ret);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_probe);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_probe);
+-void dvb_usbv2_disconnect(struct usb_interface *intf)
++void dvb_usbv2_mediatree_disconnect(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       const char *name = d->name;
+@@ -973,14 +973,14 @@
+       if (d->props->exit)
+               d->props->exit(d);
+-      dvb_usbv2_exit(d);
++      dvb_usbv2_mediatree_exit(d);
+       dev_info(&dev, "%s: '%s' successfully deinitialized and disconnected\n",
+                       KBUILD_MODNAME, name);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_disconnect);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_disconnect);
+-int dvb_usbv2_suspend(struct usb_interface *intf, pm_message_t msg)
++int dvb_usbv2_mediatree_suspend(struct usb_interface *intf, pm_message_t msg)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       int ret = 0, i, active_fe;
+@@ -1009,9 +1009,9 @@
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_suspend);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_suspend);
+-static int dvb_usbv2_resume_common(struct dvb_usb_device *d)
++static int dvb_usbv2_mediatree_resume_common(struct dvb_usb_device *d)
+ {
+       int ret = 0, i, active_fe;
+       struct dvb_frontend *fe;
+@@ -1042,33 +1042,33 @@
+       return ret;
+ }
+-int dvb_usbv2_resume(struct usb_interface *intf)
++int dvb_usbv2_mediatree_resume(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      return dvb_usbv2_resume_common(d);
++      return dvb_usbv2_mediatree_resume_common(d);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_resume);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_resume);
+-int dvb_usbv2_reset_resume(struct usb_interface *intf)
++int dvb_usbv2_mediatree_reset_resume(struct usb_interface *intf)
+ {
+       struct dvb_usb_device *d = usb_get_intfdata(intf);
+       int ret;
+       dev_dbg(&d->udev->dev, "%s:\n", __func__);
+-      dvb_usbv2_device_power_ctrl(d, 1);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 1);
+       if (d->props->init)
+               d->props->init(d);
+-      ret = dvb_usbv2_resume_common(d);
++      ret = dvb_usbv2_mediatree_resume_common(d);
+-      dvb_usbv2_device_power_ctrl(d, 0);
++      dvb_usbv2_mediatree_device_power_ctrl(d, 0);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_reset_resume);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_reset_resume);
+ MODULE_VERSION("2.0");
+ MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@desy.de>");
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h       2014-03-11 11:08:46.000000000 +0100
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb.h    2015-05-30 10:58:06.000000000 +0200
+@@ -388,19 +388,19 @@
+       void *priv;
+ };
+-extern int dvb_usbv2_probe(struct usb_interface *,
++extern int dvb_usbv2_mediatree_probe(struct usb_interface *,
+               const struct usb_device_id *);
+-extern void dvb_usbv2_disconnect(struct usb_interface *);
+-extern int dvb_usbv2_suspend(struct usb_interface *, pm_message_t);
+-extern int dvb_usbv2_resume(struct usb_interface *);
+-extern int dvb_usbv2_reset_resume(struct usb_interface *);
++extern void dvb_usbv2_mediatree_disconnect(struct usb_interface *);
++extern int dvb_usbv2_mediatree_suspend(struct usb_interface *, pm_message_t);
++extern int dvb_usbv2_mediatree_resume(struct usb_interface *);
++extern int dvb_usbv2_mediatree_reset_resume(struct usb_interface *);
+ /* the generic read/write method for device control */
+-extern int dvb_usbv2_generic_rw(struct dvb_usb_device *, u8 *, u16, u8 *, u16);
+-extern int dvb_usbv2_generic_write(struct dvb_usb_device *, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_rw(struct dvb_usb_device *, u8 *, u16, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_write(struct dvb_usb_device *, u8 *, u16);
+ /* caller must hold lock when locked versions are called */
+-extern int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *,
++extern int dvb_usbv2_mediatree_generic_rw_locked(struct dvb_usb_device *,
+               u8 *, u16, u8 *, u16);
+-extern int dvb_usbv2_generic_write_locked(struct dvb_usb_device *, u8 *, u16);
++extern int dvb_usbv2_mediatree_generic_write_locked(struct dvb_usb_device *, u8 *, u16);
+ #endif
+diff -Naur media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
+--- media_build-bst-14.orig/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c   2014-03-11 11:08:46.000000000 +0100
++++ media_build-bst-14/linux/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c        2015-05-30 11:46:29.894460058 +0200
+@@ -21,7 +21,7 @@
+ #include "dvb_usb_common.h"
+-static int dvb_usb_v2_generic_io(struct dvb_usb_device *d,
++static int dvb_usb_v2_mediatree_generic_io(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+       int ret, actual_length;
+@@ -65,40 +65,40 @@
+       return ret;
+ }
+-int dvb_usbv2_generic_rw(struct dvb_usb_device *d,
++int dvb_usbv2_mediatree_generic_rw(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+       int ret;
+       mutex_lock(&d->usb_mutex);
+-      ret = dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
++      ret = dvb_usb_v2_mediatree_generic_io(d, wbuf, wlen, rbuf, rlen);
+       mutex_unlock(&d->usb_mutex);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_rw);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_rw);
+-int dvb_usbv2_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
++int dvb_usbv2_mediatree_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
+ {
+       int ret;
+       mutex_lock(&d->usb_mutex);
+-      ret = dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
++      ret = dvb_usb_v2_mediatree_generic_io(d, buf, len, NULL, 0);
+       mutex_unlock(&d->usb_mutex);
+       return ret;
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_write);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_write);
+-int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *d,
++int dvb_usbv2_mediatree_generic_rw_locked(struct dvb_usb_device *d,
+               u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
+ {
+-      return dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
++      return dvb_usb_v2_mediatree_generic_io(d, wbuf, wlen, rbuf, rlen);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_rw_locked);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_rw_locked);
+-int dvb_usbv2_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
++int dvb_usbv2_mediatree_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
+ {
+-      return dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
++      return dvb_usb_v2_mediatree_generic_io(d, buf, len, NULL, 0);
+ }
+-EXPORT_SYMBOL(dvb_usbv2_generic_write_locked);
++EXPORT_SYMBOL(dvb_usbv2_mediatree_generic_write_locked);
diff --git a/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_no_v4l_firmwares_install.patch b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_no_v4l_firmwares_install.patch
new file mode 100644 (file)
index 0000000..093a563
--- /dev/null
@@ -0,0 +1,11 @@
+--- media_build-bst-14.orig/v4l/Makefile       2015-08-13 08:52:52.610072524 +0200
++++ media_build-bst-14/v4l/Makefile    2015-08-13 08:54:26.598070068 +0200
+@@ -202,7 +202,7 @@
+ #################################################
+ # installation invocation rules
+-modules_install install:: media-install firmware_install
++modules_install install:: media-install
+ remove rminstall:: media-rminstall
index fd6cdf2..2cdb197 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 PE = "1"
 KV = "3.13.5"
 
-INC_PR = "r7"
+INC_PR = "r8"
 SRCREV = ""
 
 MODULE = "linux-3.13.5"
@@ -60,4 +60,4 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/linux-vuplus-${KV}:"
 SRC_URI[md5sum] = "19e9956653437b99b4fa6ec3e16a3e99"
 SRC_URI[sha256sum] = "ef7fb307582ff243aacff8a13025fe028634aaf650ada309991ae03622962f61"
 
-
+RM_WORK_EXCLUDE += "linux-vuplus-${MACHINE}"
index 4f2f3c2..bf690a4 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 PE = "1"
 KV = "3.14.28"
 
-INC_PR = "r6"
+INC_PR = "r7"
 SRCREV = ""
 
 MODULE = "linux-3.14.28"
@@ -71,3 +71,5 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/linux-vuplus-${KV}:"
 
 SRC_URI[md5sum] = "1a62540fdd7f23aa2c1ebf119ca71e91"
 SRC_URI[sha256sum] = "a464515d14dda772047ddba7900858f535057294903341e2c1774009eaf95005"
+
+RM_WORK_EXCLUDE += "linux-vuplus-${MACHINE}"
index 3515ee9..1ac14b0 100644 (file)
@@ -2325,7 +2325,7 @@ CONFIG_VIDEO_CX25840=m
 #
 # Sensors used on soc_camera driver
 #
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 CONFIG_MEDIA_TUNER_SIMPLE=y
 CONFIG_MEDIA_TUNER_TDA8290=y
 CONFIG_MEDIA_TUNER_TDA827X=y
index 17d7fbf..a1ba069 100644 (file)
@@ -2336,7 +2336,7 @@ CONFIG_VIDEO_CX25840=m
 #
 # Sensors used on soc_camera driver
 #
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 CONFIG_MEDIA_TUNER_SIMPLE=y
 CONFIG_MEDIA_TUNER_TDA8290=y
 CONFIG_MEDIA_TUNER_TDA827X=y
index 85ae6e0..2cc670f 100644 (file)
@@ -2336,7 +2336,7 @@ CONFIG_VIDEO_CX25840=m
 #
 # Sensors used on soc_camera driver
 #
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 CONFIG_MEDIA_TUNER_SIMPLE=y
 CONFIG_MEDIA_TUNER_TDA8290=y
 CONFIG_MEDIA_TUNER_TDA827X=y
index a593590..54c99ba 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 PE = "1"
 KV = "3.9.6"
 
-INC_PR = "r5"
+INC_PR = "r6"
 SRCREV = ""
 
 MODULE = "linux-3.9.6"
@@ -56,4 +56,4 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/linux-vuplus-${KV}:"
 SRC_URI[md5sum] = "33142378c8387a87190156be1cb1a254"
 SRC_URI[sha256sum] = "47799db9e2658906e532981ec8111a915426b8453762561029733f2406c3e297"
 
-
+RM_WORK_EXCLUDE += "linux-vuplus-${MACHINE}"
index bea60b7..9758e76 100644 (file)
@@ -1963,7 +1963,7 @@ CONFIG_VIDEO_OV7670=m
 # CONFIG_SOC_CAMERA_RJ54N1 is not set
 # CONFIG_SOC_CAMERA_TW9910 is not set
 # CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 
 #
 # Customize TV tuners
index 01a11ad..23bc4f7 100644 (file)
@@ -1949,7 +1949,7 @@ CONFIG_VIDEO_OV7670=m
 # CONFIG_SOC_CAMERA_RJ54N1 is not set
 # CONFIG_SOC_CAMERA_TW9910 is not set
 # CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 
 #
 # Customize TV tuners
index 92b930f..f953ee9 100644 (file)
@@ -1963,7 +1963,7 @@ CONFIG_VIDEO_OV7670=m
 # CONFIG_SOC_CAMERA_RJ54N1 is not set
 # CONFIG_SOC_CAMERA_TW9910 is not set
 # CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 
 #
 # Customize TV tuners
index 92b930f..f953ee9 100644 (file)
@@ -1963,7 +1963,7 @@ CONFIG_VIDEO_OV7670=m
 # CONFIG_SOC_CAMERA_RJ54N1 is not set
 # CONFIG_SOC_CAMERA_TW9910 is not set
 # CONFIG_MEDIA_ATTACH is not set
-CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER=n
 
 #
 # Customize TV tuners
index 1e23b89..12b1362 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 PE = "1"
 KV = "4.1.20"
 
-INC_PR = "r1"
+INC_PR = "r2"
 SRCREV = ""
 
 MODULE = "linux-4.1.20"
@@ -69,3 +69,6 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/linux-vuplus-${KV}:"
 
 SRC_URI[md5sum] = "b3e5d84c2d1b16d191a7adfe96951b2f"
 SRC_URI[sha256sum] = "74648ddfe77e95e06ca3ab1b398ff26f7dd317767dbab3d27ebdd2b9d33bba51"
+
+
+RM_WORK_EXCLUDE += "linux-vuplus-${MACHINE}"
index 5d20bc0..69c3000 100644 (file)
@@ -2475,7 +2475,7 @@ CONFIG_DVB_USB_GL861=m
 # CONFIG_DVB_USB_LME2510 is not set
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
-CONFIG_DVB_USB_DVBSKY=m
+# CONFIG_DVB_USB_DVBSKY is not set
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_USB_DRV=m
index e987004..c01c374 100644 (file)
@@ -2475,7 +2475,7 @@ CONFIG_DVB_USB_GL861=m
 # CONFIG_DVB_USB_LME2510 is not set
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
-CONFIG_DVB_USB_DVBSKY=m
+# CONFIG_DVB_USB_DVBSKY is not set
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_USB_DRV=m
index befcaa3..4ddd53b 100644 (file)
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 PE = "1"
 KV = "4.1.45"
 
-INC_PR = "r0"
+INC_PR = "r1"
 SRCREV = ""
 
 MODULE = "linux-4.1.45"
@@ -70,3 +70,5 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/linux-vuplus-${KV}:"
 
 SRC_URI[md5sum] = "7b5617dc7ec01ff4347b5b50d9d46f0f"
 SRC_URI[sha256sum] = "18ecc79522f6b975c96cca7975eb31db93d2e8cfea6755451bba0a1a28feb0bd"
+
+RM_WORK_EXCLUDE += "linux-vuplus-${MACHINE}"
index ad616be..604a9ce 100644 (file)
@@ -2502,7 +2502,7 @@ CONFIG_DVB_USB_GL861=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
-CONFIG_DVB_USB_DVBSKY=m
+# CONFIG_DVB_USB_DVBSKY is not set
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_USB_DRV=m
index 4daa4d7..987c760 100644 (file)
@@ -8,7 +8,7 @@ RDEPENDS_${PN} = '${ESSENTIAL_RDEPENDS}'
 RRECOMMENDS_${PN} = '${ESSENTIAL_RRECOMMENDS}'
 RRECOMMENDS_${PN} += '${KERNEL_DVB_MODULES}'
 
-PR = "r8"
+PR = "r9"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
@@ -232,9 +232,14 @@ KERNEL_MEDIA_CUSTOMIZE_DVB_FRONTENDS = " \
   kernel-module-af9033 \
 "
 
+EXTRA_DRIVERS = " \
+  ${@base_conditional("TARGET_ARCH", "mipsel", "hmp-usb-dvb-t2-c", "hmp-usb-dvb-t2-c-arm", d)} \
+"
+
 KERNEL_DVB_MODULES = " \
   ${KERNEL_MEDIA_USB_ADAPTERS} \
   ${KERNEL_MEDIA_CUSTOMIZE_TV_TUNER} \
   ${KERNEL_MEDIA_CUSTOMIZE_DVB_FRONTENDS} \
+  ${EXTRA_DRIVERS} \
 "