From 000c6641c686c213dac8439ed303d1055b28564b Mon Sep 17 00:00:00 2001 From: hschang Date: Thu, 2 Jul 2020 10:21:36 +0900 Subject: [PATCH] Add hmp-usb-dvb-t2-c driver. --- meta-bsp/conf/machine/vuzero4k.conf | 1 + .../hmp/hmp-usb-dvb-t2-c-arm_141106.bb | 96 ++++ .../hmp/hmp-usb-dvb-t2-c-arm_160430.bb | 96 ++++ .../hmp/hmp-usb-dvb-t2-c-v03arm/defconfig | 366 +++++++++++++ .../hmp/hmp-usb-dvb-t2-c-v03arm/fix-strip.patch | 19 + .../hmp/hmp-usb-dvb-t2-c-v03arm/localversion.patch | 115 ++++ .../rename_dvb-usb-v2.patch | 11 + .../hmp-usb-dvb-t2-c-v03arm/sit2_op.o_150322_arm | Bin 0 -> 151000 bytes .../vu_adapter_adjustment.patch | 45 ++ .../hmp/hmp-usb-dvb-t2-c-v03arm/vu_backport.patch | 283 ++++++++++ .../vu_keep_compatibility.patch | 521 ++++++++++++++++++ .../vu_no_v4l_firmwares_install.patch | 11 + .../hmp/hmp-usb-dvb-t2-c-v04arm/defconfig | 366 +++++++++++++ .../hmp-usb-dvb-t2-c-v04arm/sit2_op.o_150322_arm | Bin 0 -> 151000 bytes .../hmp-usb-dvb-t2-c-v04arm/vu_kernel_4.1.20.patch | 590 +++++++++++++++++++++ meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c.bb | 91 ++++ .../recipes-driver/hmp/hmp-usb-dvb-t2-c/defconfig | 366 +++++++++++++ .../hmp/hmp-usb-dvb-t2-c/fix-strip.patch | 19 + .../hmp/hmp-usb-dvb-t2-c/localversion.patch | 115 ++++ .../hmp/hmp-usb-dvb-t2-c/rename_dvb-usb-v2.patch | 11 + .../hmp/hmp-usb-dvb-t2-c/sit2_op.o_141106 | Bin 0 -> 185016 bytes .../hmp-usb-dvb-t2-c/vu_adapter_adjustment.patch | 45 ++ .../hmp-usb-dvb-t2-c/vu_keep_compatibility.patch | 521 ++++++++++++++++++ .../vu_no_v4l_firmwares_install.patch | 11 + .../recipes-kernel/linux/linux-vuplus-3.13.5.inc | 4 +- .../linux-vuplus-3.13.5/vuduo2/vuduo2_defconfig | 2 +- .../linux-vuplus-3.13.5/vusolo2/vusolo2_defconfig | 2 +- .../vusolose/vusolose_defconfig | 2 +- .../linux-vuplus-3.13.5/vuzero/vuzero_defconfig | 2 +- .../recipes-kernel/linux/linux-vuplus-3.14.28.inc | 4 +- .../vusolo4k/vusolo4k_defconfig | 2 +- .../vuultimo4k/vuultimo4k_defconfig | 2 +- .../linux-vuplus-3.14.28/vuuno4k/vuuno4k_defconfig | 2 +- .../recipes-kernel/linux/linux-vuplus-3.9.6.inc | 4 +- .../linux/linux-vuplus-3.9.6/bm750/bm750_defconfig | 2 +- .../linux-vuplus-3.9.6/vusolo/vusolo_defconfig | 2 +- .../linux-vuplus-3.9.6/vuultimo/vuultimo_defconfig | 2 +- .../linux/linux-vuplus-3.9.6/vuuno/vuuno_defconfig | 2 +- .../recipes-kernel/linux/linux-vuplus-4.1.20.inc | 5 +- .../vuuno4kse/vuuno4kse_defconfig | 2 +- .../vuzero4k/vuzero4k_defconfig | 2 +- .../recipes-kernel/linux/linux-vuplus-4.1.45.inc | 4 +- .../linux-vuplus-4.1.45/vuduo4k/vuduo4k_defconfig | 2 +- .../packagegroups/packagegroup-vuplus-essential.bb | 7 +- 44 files changed, 3733 insertions(+), 22 deletions(-) create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_141106.bb create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_160430.bb create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/defconfig create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/fix-strip.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/localversion.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/rename_dvb-usb-v2.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/sit2_op.o_150322_arm create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_adapter_adjustment.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_backport.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_keep_compatibility.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_no_v4l_firmwares_install.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/defconfig create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/sit2_op.o_150322_arm create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/vu_kernel_4.1.20.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c.bb create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/defconfig create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/fix-strip.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/localversion.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/rename_dvb-usb-v2.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/sit2_op.o_141106 create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_adapter_adjustment.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_keep_compatibility.patch create mode 100644 meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_no_v4l_firmwares_install.patch diff --git a/meta-bsp/conf/machine/vuzero4k.conf b/meta-bsp/conf/machine/vuzero4k.conf index d0748d9..fb8c324 100644 --- a/meta-bsp/conf/machine/vuzero4k.conf +++ b/meta-bsp/conf/machine/vuzero4k.conf @@ -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 index 0000000..57ce827 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_141106.bb @@ -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 index 0000000..2b9fb61 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-arm_160430.bb @@ -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 index 0000000..f5af750 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/defconfig @@ -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 index 0000000..277acbf --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/fix-strip.patch @@ -0,0 +1,19 @@ +changeset: 15145:72aa2db63b3d +tag: tip +user: Andreas Oberritter +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 index 0000000..23a0bb8 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/localversion.patch @@ -0,0 +1,115 @@ +# HG changeset patch +# User Andreas Oberritter +# 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 () {' \ +- -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 \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 () { ++ 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 () { ++ 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 index 0000000..f48cfa5 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/rename_dvb-usb-v2.patch @@ -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 index 0000000000000000000000000000000000000000..b021f1739e3285b5877fdf625e515c287c0dc5b4 GIT binary patch literal 151000 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

>d1aVEk4gC@*m0W)Vmw7|NuRcmWLn?n(( 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 VxGc|fHqld#U#jen_Q?SC{{UWQ?6Lp= literal 0 HcmV?d00001 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 index 0000000..573225e --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_adapter_adjustment.patch @@ -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 index 0000000..8c36728 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_backport.patch @@ -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 + * +-* --------------------------------------------------------------- +-* 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. +-* --------------------------------------------------------------- +-* ++* --------------------------------------------------------------- ++* 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 ++* Max Nibble + * + * + \******************************************************************* ---*/ +@@ -20,9 +20,7 @@ + #include + #include + #include +-//#include + #include +-//#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 index 0000000..a4a5bb1 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_keep_compatibility.patch @@ -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 "); +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 index 0000000..093a563 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v03arm/vu_no_v4l_firmwares_install.patch @@ -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 index 0000000..f5af750 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/defconfig @@ -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 index 0000000000000000000000000000000000000000..b021f1739e3285b5877fdf625e515c287c0dc5b4 GIT binary patch literal 151000 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

>d1aVEk4gC@*m0W)Vmw7|NuRcmWLn?n(( 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 VxGc|fHqld#U#jen_Q?SC{{UWQ?6Lp= literal 0 HcmV?d00001 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 index 0000000..4ac8227 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c-v04arm/vu_kernel_4.1.20.patch @@ -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 "); +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 index 0000000..61edfd5 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c.bb @@ -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 index 0000000..f5af750 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/defconfig @@ -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 index 0000000..277acbf --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/fix-strip.patch @@ -0,0 +1,19 @@ +changeset: 15145:72aa2db63b3d +tag: tip +user: Andreas Oberritter +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 index 0000000..23a0bb8 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/localversion.patch @@ -0,0 +1,115 @@ +# HG changeset patch +# User Andreas Oberritter +# 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 () {' \ +- -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 \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 () { ++ 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 () { ++ 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 index 0000000..f48cfa5 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/rename_dvb-usb-v2.patch @@ -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 index 0000000000000000000000000000000000000000..447740590bbabfac5bb7bf1f977521d5b1c68cbb GIT binary patch literal 185016 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 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 index 0000000..a4a5bb1 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_keep_compatibility.patch @@ -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 "); +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 index 0000000..093a563 --- /dev/null +++ b/meta-bsp/recipes-driver/hmp/hmp-usb-dvb-t2-c/vu_no_v4l_firmwares_install.patch @@ -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-kernel/linux/linux-vuplus-3.13.5.inc b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5.inc index fd6cdf2..2cdb197 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5.inc +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5.inc @@ -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}" diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuduo2/vuduo2_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuduo2/vuduo2_defconfig index 388ca0c..694ca8b 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuduo2/vuduo2_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuduo2/vuduo2_defconfig @@ -1787,7 +1787,7 @@ CONFIG_VIDEO_CX25840=m # # Sensors used on soc_camera driver # -CONFIG_MEDIA_TUNER=y +CONFIG_MEDIA_TUNER=n # # Customize TV tuners diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolo2/vusolo2_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolo2/vusolo2_defconfig index 6cc06b9..cbbfea5 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolo2/vusolo2_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolo2/vusolo2_defconfig @@ -1782,7 +1782,7 @@ CONFIG_VIDEO_CX25840=m # # Sensors used on soc_camera driver # -CONFIG_MEDIA_TUNER=y +CONFIG_MEDIA_TUNER=n # # Customize TV tuners diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolose/vusolose_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolose/vusolose_defconfig index 57ba133..bbea166 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolose/vusolose_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vusolose/vusolose_defconfig @@ -1784,7 +1784,7 @@ CONFIG_VIDEO_CX25840=m # # Sensors used on soc_camera driver # -CONFIG_MEDIA_TUNER=y +CONFIG_MEDIA_TUNER=n # # Customize TV tuners diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuzero/vuzero_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuzero/vuzero_defconfig index 830f0b1..899b68d 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuzero/vuzero_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.13.5/vuzero/vuzero_defconfig @@ -1766,7 +1766,7 @@ CONFIG_VIDEO_CX25840=m # # Sensors used on soc_camera driver # -CONFIG_MEDIA_TUNER=y +CONFIG_MEDIA_TUNER=n # # Customize TV tuners diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28.inc b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28.inc index 4f2f3c2..bf690a4 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28.inc +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28.inc @@ -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}" diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vusolo4k/vusolo4k_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vusolo4k/vusolo4k_defconfig index 3515ee9..1ac14b0 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vusolo4k/vusolo4k_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vusolo4k/vusolo4k_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuultimo4k/vuultimo4k_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuultimo4k/vuultimo4k_defconfig index 17d7fbf..a1ba069 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuultimo4k/vuultimo4k_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuultimo4k/vuultimo4k_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuuno4k/vuuno4k_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuuno4k/vuuno4k_defconfig index 85ae6e0..2cc670f 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuuno4k/vuuno4k_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.14.28/vuuno4k/vuuno4k_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6.inc b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6.inc index a593590..54c99ba 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6.inc +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6.inc @@ -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}" diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/bm750/bm750_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/bm750/bm750_defconfig index bea60b7..9758e76 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/bm750/bm750_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/bm750/bm750_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vusolo/vusolo_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vusolo/vusolo_defconfig index 01a11ad..23bc4f7 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vusolo/vusolo_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vusolo/vusolo_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuultimo/vuultimo_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuultimo/vuultimo_defconfig index 92b930f..f953ee9 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuultimo/vuultimo_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuultimo/vuultimo_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuuno/vuuno_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuuno/vuuno_defconfig index 92b930f..f953ee9 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuuno/vuuno_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-3.9.6/vuuno/vuuno_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20.inc b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20.inc index 1e23b89..12b1362 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20.inc +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20.inc @@ -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}" diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuuno4kse/vuuno4kse_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuuno4kse/vuuno4kse_defconfig index 5d20bc0..69c3000 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuuno4kse/vuuno4kse_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuuno4kse/vuuno4kse_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuzero4k/vuzero4k_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuzero4k/vuzero4k_defconfig index e987004..c01c374 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuzero4k/vuzero4k_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.20/vuzero4k/vuzero4k_defconfig @@ -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 diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45.inc b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45.inc index befcaa3..4ddd53b 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45.inc +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45.inc @@ -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}" diff --git a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45/vuduo4k/vuduo4k_defconfig b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45/vuduo4k/vuduo4k_defconfig index ad616be..604a9ce 100644 --- a/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45/vuduo4k/vuduo4k_defconfig +++ b/meta-bsp/recipes-kernel/linux/linux-vuplus-4.1.45/vuduo4k/vuduo4k_defconfig @@ -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 diff --git a/meta-openvuplus/recipes-vuplus/packagegroups/packagegroup-vuplus-essential.bb b/meta-openvuplus/recipes-vuplus/packagegroups/packagegroup-vuplus-essential.bb index 4daa4d7..987c760 100644 --- a/meta-openvuplus/recipes-vuplus/packagegroups/packagegroup-vuplus-essential.bb +++ b/meta-openvuplus/recipes-vuplus/packagegroups/packagegroup-vuplus-essential.bb @@ -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} \ " -- 2.7.4