Merge pull request #2270 from CvH/9.0-dvb-addons

dvb driver addons
This commit is contained in:
MilhouseVH 2017-12-14 13:20:52 +00:00 committed by GitHub
commit 5a14ccbf17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 5451 additions and 1080 deletions

View File

@ -344,6 +344,25 @@ done
-i "$addon_xml"
}
install_driver_addon_files() {
if [ "$#" -eq 0 ] ; then
printf "$(print_color CLR_ERROR "no module search path defined")\n"
exit 1
fi
PKG_MODULE_DIR="$INSTALL/$(get_full_module_dir $PKG_ADDON_ID)/updates/$PKG_ADDON_ID"
PKG_ADDON_DIR="$INSTALL/usr/share/$MEDIACENTER/addons/$PKG_ADDON_ID"
mkdir -p $PKG_MODULE_DIR
find $@ -name \*.ko -exec cp {} $PKG_MODULE_DIR \;
find $PKG_MODULE_DIR -name \*.ko -exec $STRIP --strip-debug {} \;
mkdir -p $PKG_ADDON_DIR
cp $PKG_DIR/changelog.txt $PKG_ADDON_DIR
install_addon_files "$PKG_ADDON_DIR"
}
install_addon_files() {
install_addon_source "$1"
install_addon_images "$1"
@ -634,6 +653,12 @@ show_config() {
config_message="$config_message\n - Include driver:\t\t\t $config_driver"
done
if [ "$DRIVER_ADDONS_SUPPORT" = "yes" ]; then
for config_driver_addons in $DRIVER_ADDONS; do
config_message="$config_message\n - Include driver add-ons:\t\t $config_driver_addons"
done
fi
for config_firmware in $FIRMWARE; do
config_message="$config_message\n - Include firmware:\t\t\t $config_firmware"
done

View File

@ -119,7 +119,7 @@ unset LD_LIBRARY_PATH
if [ "$PKG_IS_ADDON" = "yes" ] ; then
[ -z $PKG_SECTION ] && PKG_ADDON_ID="$PKG_NAME" || PKG_ADDON_ID="${PKG_SECTION//\//.}.$PKG_NAME"
PKG_NEED_UNPACK="${PKG_NEED_UNPACK} $(get_pkg_directory $MEDIACENTER)"
[ "$PKG_ADDON_IS_STANDALONE" != "yes" ] && PKG_NEED_UNPACK="${PKG_NEED_UNPACK} $(get_pkg_directory $MEDIACENTER)"
fi
# Automatically set PKG_SOURCE_NAME unless it is already defined.

View File

@ -0,0 +1,50 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="driverselect"
PKG_VERSION="2b79180"
PKG_SHA256="ed1e9defa185b46d4400794681f21f2bf1ddf8ccdfdb20e49ddde3edccdd6b7f"
PKG_REV="100"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="https://libreelec.tv"
PKG_URL="https://github.com/b-jesch/script.program.driverselect/archive/$PKG_VERSION.tar.gz"
PKG_SOURCE_DIR="${PKG_SECTION}.${PKG_NAME}-${PKG_VERSION}*"
PKG_DEPENDS_TARGET="toolchain"
PKG_SECTION="script.program"
PKG_SHORTDESC="script.program.driverselect"
PKG_LONGDESC="script.program.driverselect"
PKG_TOOLCHAIN="manual"
PKG_IS_ADDON="yes"
PKG_ADDON_NAME="Driver Select"
PKG_ADDON_TYPE="xbmc.python.script"
unpack() {
mkdir -p $PKG_BUILD/addon
tar --strip-components=1 -xf $SOURCES/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz -C $PKG_BUILD/addon
}
make_target() {
:
}
makeinstall_target() {
mkdir -p $INSTALL/usr/share/kodi/addons/${PKG_SECTION}.${PKG_NAME}
cp -rP $PKG_BUILD/addon/* $INSTALL/usr/share/kodi/addons/${PKG_SECTION}.${PKG_NAME}
}

View File

@ -0,0 +1,2 @@
100
- Initial add-on

View File

@ -2,150 +2,191 @@
# Automatically generated file; DO NOT EDIT.
# V4L/DVB menu
#
# CONFIG_SOC_EXYNOS4212 is not set
# CONFIG_PWM_OMAP_DMTIMER is not set
# CONFIG_ARCH_OMAP3 is not set
# CONFIG_BROKEN is not set
# CONFIG_ARM_DMA_USE_IOMMU is not set
CONFIG_HDMI=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_PCI_MSI=y
# CONFIG_MTK_IOMMU_V1 is not set
# CONFIG_RPMSG is not set
# CONFIG_PLAT_S3C24XX is not set
# CONFIG_FB_VIA is not set
# CONFIG_SND_FM801 is not set
# CONFIG_I2C_GPIO is not set
CONFIG_I2C=y
# CONFIG_ARCH_STI is not set
# CONFIG_TI_ST is not set
CONFIG_HAVE_CLK=y
# CONFIG_REGULATOR is not set
CONFIG_PM=y
# CONFIG_ARCH_MEDIATEK is not set
# CONFIG_ISA is not set
CONFIG_DEBUG_FS=y
CONFIG_MODULES=y
# CONFIG_SPI is not set
CONFIG_I2C_MUX=m
# CONFIG_PLAT_M32700UT is not set
# CONFIG_METAG is not set
# CONFIG_ARCH_OMAP3 is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_MFD_WL1273_CORE is not set
CONFIG_SND_PCM=y
CONFIG_MMU=y
CONFIG_MFD_CORE=y
CONFIG_MMC=y
CONFIG_USB=y
CONFIG_SYSFS=y
CONFIG_VIRT_TO_BUS=y
CONFIG_LEDS_CLASS=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_FONT_SUPPORT=y
CONFIG_RATIONAL=y
CONFIG_TTY=y
CONFIG_ISA_DMA_API=y
CONFIG_USB_ACM=m
# CONFIG_SPARC32 is not set
# CONFIG_ARCH_MMP is not set
CONFIG_PCI_MSI=y
# CONFIG_MFD_TIMBERDALE is not set
CONFIG_FB=y
CONFIG_HAS_DMA=y
# CONFIG_SOC_DRA7XX is not set
# CONFIG_IMX_IPUV3_CORE is not set
CONFIG_NET=y
# CONFIG_PXA27x is not set
# CONFIG_ARCH_DAVINCI_DM365 is not set
# CONFIG_OF is not set
# CONFIG_SRAM is not set
# CONFIG_SND_SOC_SI476X is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_QCOM_MDT_LOADER is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_SPARC64 is not set
# CONFIG_ARCH_S3C64XX is not set
CONFIG_FONT_8x16=y
# CONFIG_FB_OMAP2 is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_PREEMPT is not set
# CONFIG_ARCH_S5PV210 is not set
CONFIG_CRC32=y
CONFIG_SND=y
CONFIG_RFKILL=m
# CONFIG_M32R is not set
CONFIG_PINCTRL=y
# CONFIG_SG_SPLIT is not set
CONFIG_MODULES=y
CONFIG_REGMAP_I2C=y
# CONFIG_GENERIC_PHY is not set
# CONFIG_ARCH_ZX is not set
# CONFIG_MFD_SI476X_CORE is not set
CONFIG_DEBUG_FS=y
# CONFIG_FB_VIA is not set
CONFIG_REGMAP=y
CONFIG_PCI=y
# CONFIG_ARCH_MULTIPLATFORM is not set
# CONFIG_SOC_AM43XX is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_PLAT_S5P is not set
CONFIG_SERIO=y
# CONFIG_ARCH_SUNXI is not set
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_PLAT_S5P is not set
# CONFIG_OMAP_DM_TIMER is not set
# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_SND_ISA is not set
CONFIG_ISA_DMA_API=y
CONFIG_NEW_LEDS=y
CONFIG_PCI=y
# CONFIG_ARCH_OMAP2PLUS is not set
# CONFIG_VIDEO_V4L1 is not set
CONFIG_FW_LOADER=y
CONFIG_DMA_ENGINE=y
# CONFIG_GENERIC_PHY is not set
CONFIG_HAS_IOMEM=y
CONFIG_NET=y
# CONFIG_ARCH_EXYNOS is not set
# CONFIG_SOC_AM43XX is not set
CONFIG_INET=y
# CONFIG_SPARC32 is not set
# CONFIG_TI_ST is not set
# CONFIG_STA2X11 is not set
# CONFIG_MTD is not set
CONFIG_USB_ACM=m
# CONFIG_ARCH_STM32 is not set
CONFIG_SND=y
CONFIG_PINCTRL=y
CONFIG_PNP=y
# CONFIG_SRAM is not set
# CONFIG_SG_SPLIT is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_ARCH_S5PV210 is not set
CONFIG_COMMON_CLK=y
# CONFIG_SOC_IMX27 is not set
CONFIG_INPUT=y
# CONFIG_OF is not set
CONFIG_FONT_8x16=y
# CONFIG_SOC_EXYNOS5250 is not set
CONFIG_ACPI=y
# CONFIG_ARCH_MMP is not set
CONFIG_FIREWIRE=m
# CONFIG_PLAT_M32700UT is not set
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_PPC_MPC512x is not set
CONFIG_X86=y
# CONFIG_SND_MIRO is not set
# CONFIG_OMAP_IOMMU is not set
# CONFIG_ARCH_MULTIPLATFORM is not set
CONFIG_VIRT_TO_BUS=y
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_SHMOBILE is not set
# CONFIG_PXA27x is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_ARM64 is not set
CONFIG_GPIOLIB=y
# CONFIG_FB_OMAP2 is not set
# CONFIG_GENERIC_ALLOCATOR is not set
# CONFIG_OMAP2_VRFB is not set
CONFIG_BITREVERSE=y
# CONFIG_BLACKFIN is not set
# CONFIG_REGMAP_MMIO is not set
CONFIG_RFKILL=m
CONFIG_FB_CFB_FILLRECT=y
CONFIG_TTY=y
# CONFIG_SPI_MASTER is not set
CONFIG_LEDS_CLASS=y
# CONFIG_MTK_IOMMU is not set
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_METAG is not set
CONFIG_REGMAP=y
# CONFIG_ARCH_MESON is not set
# CONFIG_M32R is not set
CONFIG_SND_SOC=y
# CONFIG_ARCH_OMAP4 is not set
CONFIG_HAS_DMA=y
# CONFIG_MFD_SYSCON is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_ARCH_AT91 is not set
# CONFIG_SPARC64 is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_ISA is not set
# CONFIG_PWM is not set
CONFIG_SYSFS=y
# CONFIG_BROKEN is not set
CONFIG_MMC=y
# CONFIG_MTK_IOMMU_V1 is not set
# CONFIG_ARCH_TANGO is not set
CONFIG_DMA_SHARED_BUFFER=y
CONFIG_GPIOLIB=y
# CONFIG_ARM64 is not set
# CONFIG_ARM_DMA_USE_IOMMU is not set
# CONFIG_PPC_MPC512x is not set
# CONFIG_OMAP_DM_TIMER is not set
# CONFIG_ARCH_EXYNOS is not set
# CONFIG_ALPHA is not set
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_FB_CFB_COPYAREA=y
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_MXC is not set
CONFIG_FB=y
# CONFIG_ARCH_DAVINCI_DM365 is not set
# CONFIG_SOC_EXYNOS4412 is not set
# CONFIG_ARCH_STI is not set
CONFIG_I2C_MUX=m
# CONFIG_SND_SOC_SI476X is not set
CONFIG_REGMAP_I2C=y
CONFIG_INPUT_EVDEV=y
CONFIG_FIREWIRE=m
CONFIG_MFD_CORE=y
CONFIG_PM=y
CONFIG_DMA_ENGINE=y
CONFIG_SND_PCM=y
# CONFIG_PLAT_S3C24XX is not set
# CONFIG_SND_MIRO is not set
# CONFIG_SPI is not set
CONFIG_FW_LOADER=y
# CONFIG_MFD_SYSCON is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_IOMMU_DMA is not set
CONFIG_USB=y
CONFIG_PNP=y
# CONFIG_MTD is not set
CONFIG_I2C_ALGOBIT=y
# CONFIG_ARCH_OMAP2 is not set
CONFIG_SERIO_SERPORT=y
CONFIG_BITREVERSE=y
CONFIG_FONT_SUPPORT=y
CONFIG_I2C=y
# CONFIG_MIPS is not set
CONFIG_EFI=y
# CONFIG_SOC_DRA7XX is not set
# CONFIG_ARCH_TEGRA is not set
# CONFIG_SND_FM801 is not set
# CONFIG_STA2X11 is not set
# CONFIG_PWM_OMAP_DMTIMER is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_BLACKFIN is not set
# CONFIG_ARCH_OMAP2 is not set
# CONFIG_REGULATOR is not set
# CONFIG_MULTIPLEXER is not set
CONFIG_COMMON_CLK=y
# CONFIG_ARCH_MESON is not set
# CONFIG_ARCH_ROCKCHIP is not set
# CONFIG_ARCH_OMAP4 is not set
CONFIG_NEW_LEDS=y
# CONFIG_ARCH_QCOM is not set
# CONFIG_ARCH_STM32 is not set
# CONFIG_ARCH_MEDIATEK is not set
# CONFIG_ARCH_DAVINCI is not set
CONFIG_INET=y
# CONFIG_SOC_IMX27 is not set
CONFIG_X86=y
# CONFIG_SOC_EXYNOS4212 is not set
# CONFIG_ARCH_SHMOBILE is not set
# CONFIG_VIDEO_V4L1 is not set
# CONFIG_OMAP2_VRFB is not set
CONFIG_INPUT=y
# CONFIG_RPMSG is not set
# CONFIG_MTK_IOMMU is not set
CONFIG_SND_SOC=y
CONFIG_SERIO_SERPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_OMAP_IOMMU is not set
# CONFIG_ARCH_OMAP2PLUS is not set
CONFIG_MMU=y
# CONFIG_SOC_EXYNOS5250 is not set
# CONFIG_REGMAP_MMIO is not set
CONFIG_RATIONAL=y
# CONFIG_SND_ISA is not set
CONFIG_HAS_IOMEM=y
CONFIG_HDMI=y
# CONFIG_SOC_EXYNOS4412 is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_VIDEO_KERNEL_VERSION is not set
CONFIG_RC_CORE=m
CONFIG_RC_MAP=m
CONFIG_RC_DECODERS=y
CONFIG_LIRC=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IR_RC5_DECODER=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_SANYO_DECODER=m
CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_FINTEK=m
CONFIG_IR_NUVOTON=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_IR_SERIAL=m
CONFIG_IR_SERIAL_TRANSMITTER=y
# CONFIG_IR_SIR is not set
CONFIG_MEDIA_SUPPORT=m
#
# Multimedia core support
#
CONFIG_MEDIA_CAMERA_SUPPORT=y
# CONFIG_MEDIA_CAMERA_SUPPORT is not set
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
# CONFIG_MEDIA_RADIO_SUPPORT is not set
# CONFIG_MEDIA_SDR_SUPPORT is not set
CONFIG_MEDIA_RC_SUPPORT=y
# CONFIG_MEDIA_CEC_SUPPORT is not set
# CONFIG_MEDIA_CONTROLLER is not set
CONFIG_VIDEO_DEV=m
@ -173,54 +214,8 @@ CONFIG_DVB_DYNAMIC_MINORS=y
#
# Media drivers
#
CONFIG_RC_CORE=m
CONFIG_RC_MAP=m
CONFIG_RC_DECODERS=y
CONFIG_LIRC=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IR_RC5_DECODER=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_SANYO_DECODER=m
CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_FINTEK=m
CONFIG_IR_NUVOTON=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_IR_GPIO_CIR=m
CONFIG_IR_SERIAL=m
CONFIG_IR_SERIAL_TRANSMITTER=y
# CONFIG_IR_SIR is not set
CONFIG_MEDIA_USB_SUPPORT=y
#
# Webcam devices
#
# CONFIG_USB_VIDEO_CLASS is not set
# CONFIG_USB_GSPCA is not set
# CONFIG_USB_PWC is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_USB_ZR364XX is not set
# CONFIG_USB_STKWEBCAM is not set
# CONFIG_USB_S2255 is not set
# CONFIG_VIDEO_USBTV is not set
#
# Analog TV USB devices
#
@ -295,6 +290,7 @@ CONFIG_DVB_USB_TBS5881=m
CONFIG_DVB_USB_TBS5520=m
CONFIG_DVB_USB_TBS5927=m
CONFIG_DVB_USB_TBS5520SE=m
CONFIG_DVB_USB_TBS5580=m
CONFIG_DVB_USB_CYCITV=m
CONFIG_DVB_USB_V2=m
CONFIG_DVB_USB_AF9015=m
@ -327,15 +323,6 @@ CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX_RC=m
CONFIG_MEDIA_PCI_SUPPORT=y
#
# Media capture support
#
# CONFIG_VIDEO_SOLO6X10 is not set
# CONFIG_VIDEO_TW5864 is not set
# CONFIG_VIDEO_TW68 is not set
# CONFIG_VIDEO_TW686X is not set
# CONFIG_VIDEO_ZORAN is not set
#
# Media capture/analog TV support
#
@ -394,11 +381,9 @@ CONFIG_DVB_MANTIS=m
CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
CONFIG_DVB_DDBRIDGE=m
# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
CONFIG_DVB_SMIPCIE=m
CONFIG_DVB_TBSECP3=m
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
# CONFIG_DVB_PLATFORM_DRIVERS is not set
#
@ -467,9 +452,6 @@ CONFIG_VIDEO_CX25840=m
#
# Camera sensor devices
#
CONFIG_VIDEO_OV2640=m
CONFIG_VIDEO_OV7640=m
CONFIG_VIDEO_MT9V011=m
#
# Flash devices
@ -484,6 +466,10 @@ CONFIG_VIDEO_MT9V011=m
#
CONFIG_VIDEO_SAA6752HS=m
#
# SDR tuner chips
#
#
# Miscellaneous helper chips
#
@ -493,6 +479,7 @@ CONFIG_VIDEO_SAA6752HS=m
#
CONFIG_MEDIA_TUNER=m
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA18250=m
CONFIG_MEDIA_TUNER_TDA8290=m
CONFIG_MEDIA_TUNER_TDA827X=m
CONFIG_MEDIA_TUNER_TDA18271=m
@ -534,7 +521,10 @@ CONFIG_MEDIA_TUNER_R848=m
CONFIG_DVB_STB0899=m
CONFIG_DVB_STB6100=m
CONFIG_DVB_STV090x=m
CONFIG_DVB_STV0910=m
CONFIG_DVB_STV6110x=m
CONFIG_DVB_STV6111=m
CONFIG_DVB_MXL5XX=m
CONFIG_DVB_M88DS3103=m
#
@ -598,6 +588,7 @@ CONFIG_DVB_AF9013=m
CONFIG_DVB_EC100=m
CONFIG_DVB_STV0367=m
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_CXD2841ER=m
CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
CONFIG_DVB_SI2168=m
@ -652,6 +643,7 @@ CONFIG_DVB_TUNER_DIB0090=m
# SEC control devices for DVB-S
#
CONFIG_DVB_DRX39XYJ=m
CONFIG_DVB_LNBH25=m
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
@ -668,8 +660,8 @@ CONFIG_DVB_M88RS2000=m
CONFIG_DVB_AF9033=m
CONFIG_DVB_TAS2101=m
CONFIG_DVB_AVL6882=m
CONFIG_DVB_STV0910=m
CONFIG_DVB_MXL5XX=m
CONFIG_DVB_STV091X=m
CONFIG_DVB_MXL58X=m
CONFIG_DVB_SI2183=m
#

View File

@ -2,150 +2,191 @@
# Automatically generated file; DO NOT EDIT.
# V4L/DVB menu
#
# CONFIG_SOC_EXYNOS4212 is not set
# CONFIG_PWM_OMAP_DMTIMER is not set
# CONFIG_ARCH_OMAP3 is not set
# CONFIG_BROKEN is not set
# CONFIG_ARM_DMA_USE_IOMMU is not set
CONFIG_HDMI=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_PCI_MSI=y
# CONFIG_MTK_IOMMU_V1 is not set
# CONFIG_RPMSG is not set
# CONFIG_PLAT_S3C24XX is not set
# CONFIG_FB_VIA is not set
# CONFIG_SND_FM801 is not set
# CONFIG_I2C_GPIO is not set
CONFIG_I2C=y
# CONFIG_ARCH_STI is not set
# CONFIG_TI_ST is not set
CONFIG_HAVE_CLK=y
# CONFIG_REGULATOR is not set
CONFIG_PM=y
# CONFIG_ARCH_MEDIATEK is not set
# CONFIG_ISA is not set
CONFIG_DEBUG_FS=y
CONFIG_MODULES=y
# CONFIG_SPI is not set
CONFIG_I2C_MUX=m
# CONFIG_PLAT_M32700UT is not set
# CONFIG_METAG is not set
# CONFIG_ARCH_OMAP3 is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_MFD_WL1273_CORE is not set
CONFIG_SND_PCM=y
CONFIG_MMU=y
CONFIG_MFD_CORE=y
CONFIG_MMC=y
CONFIG_USB=y
CONFIG_SYSFS=y
CONFIG_VIRT_TO_BUS=y
CONFIG_LEDS_CLASS=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_FONT_SUPPORT=y
CONFIG_RATIONAL=y
CONFIG_TTY=y
CONFIG_ISA_DMA_API=y
CONFIG_USB_ACM=m
# CONFIG_SPARC32 is not set
# CONFIG_ARCH_MMP is not set
CONFIG_PCI_MSI=y
# CONFIG_MFD_TIMBERDALE is not set
CONFIG_FB=y
CONFIG_HAS_DMA=y
# CONFIG_SOC_DRA7XX is not set
# CONFIG_IMX_IPUV3_CORE is not set
CONFIG_NET=y
# CONFIG_PXA27x is not set
# CONFIG_ARCH_DAVINCI_DM365 is not set
# CONFIG_OF is not set
# CONFIG_SRAM is not set
# CONFIG_SND_SOC_SI476X is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_QCOM_MDT_LOADER is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_SPARC64 is not set
# CONFIG_ARCH_S3C64XX is not set
CONFIG_FONT_8x16=y
# CONFIG_FB_OMAP2 is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_PREEMPT is not set
# CONFIG_ARCH_S5PV210 is not set
CONFIG_CRC32=y
CONFIG_SND=y
CONFIG_RFKILL=m
# CONFIG_M32R is not set
CONFIG_PINCTRL=y
# CONFIG_SG_SPLIT is not set
CONFIG_MODULES=y
CONFIG_REGMAP_I2C=y
# CONFIG_GENERIC_PHY is not set
# CONFIG_ARCH_ZX is not set
# CONFIG_MFD_SI476X_CORE is not set
CONFIG_DEBUG_FS=y
# CONFIG_FB_VIA is not set
CONFIG_REGMAP=y
CONFIG_PCI=y
# CONFIG_ARCH_MULTIPLATFORM is not set
# CONFIG_SOC_AM43XX is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_PLAT_S5P is not set
CONFIG_SERIO=y
# CONFIG_ARCH_SUNXI is not set
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_PLAT_S5P is not set
# CONFIG_OMAP_DM_TIMER is not set
# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_SND_ISA is not set
CONFIG_ISA_DMA_API=y
CONFIG_NEW_LEDS=y
CONFIG_PCI=y
# CONFIG_ARCH_OMAP2PLUS is not set
# CONFIG_VIDEO_V4L1 is not set
CONFIG_FW_LOADER=y
CONFIG_DMA_ENGINE=y
# CONFIG_GENERIC_PHY is not set
CONFIG_HAS_IOMEM=y
CONFIG_NET=y
# CONFIG_ARCH_EXYNOS is not set
# CONFIG_SOC_AM43XX is not set
CONFIG_INET=y
# CONFIG_SPARC32 is not set
# CONFIG_TI_ST is not set
# CONFIG_STA2X11 is not set
# CONFIG_MTD is not set
CONFIG_USB_ACM=m
# CONFIG_ARCH_STM32 is not set
CONFIG_SND=y
CONFIG_PINCTRL=y
CONFIG_PNP=y
# CONFIG_SRAM is not set
# CONFIG_SG_SPLIT is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_ARCH_S5PV210 is not set
CONFIG_COMMON_CLK=y
# CONFIG_SOC_IMX27 is not set
CONFIG_INPUT=y
# CONFIG_OF is not set
CONFIG_FONT_8x16=y
# CONFIG_SOC_EXYNOS5250 is not set
CONFIG_ACPI=y
# CONFIG_ARCH_MMP is not set
CONFIG_FIREWIRE=m
# CONFIG_PLAT_M32700UT is not set
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_PPC_MPC512x is not set
CONFIG_X86=y
# CONFIG_SND_MIRO is not set
# CONFIG_OMAP_IOMMU is not set
# CONFIG_ARCH_MULTIPLATFORM is not set
CONFIG_VIRT_TO_BUS=y
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_SHMOBILE is not set
# CONFIG_PXA27x is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_ARM64 is not set
CONFIG_GPIOLIB=y
# CONFIG_FB_OMAP2 is not set
# CONFIG_GENERIC_ALLOCATOR is not set
# CONFIG_OMAP2_VRFB is not set
CONFIG_BITREVERSE=y
# CONFIG_BLACKFIN is not set
# CONFIG_REGMAP_MMIO is not set
CONFIG_RFKILL=m
CONFIG_FB_CFB_FILLRECT=y
CONFIG_TTY=y
# CONFIG_SPI_MASTER is not set
CONFIG_LEDS_CLASS=y
# CONFIG_MTK_IOMMU is not set
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_METAG is not set
CONFIG_REGMAP=y
# CONFIG_ARCH_MESON is not set
# CONFIG_M32R is not set
CONFIG_SND_SOC=y
# CONFIG_ARCH_OMAP4 is not set
CONFIG_HAS_DMA=y
# CONFIG_MFD_SYSCON is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_ARCH_AT91 is not set
# CONFIG_SPARC64 is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_ISA is not set
# CONFIG_PWM is not set
CONFIG_SYSFS=y
# CONFIG_BROKEN is not set
CONFIG_MMC=y
# CONFIG_MTK_IOMMU_V1 is not set
# CONFIG_ARCH_TANGO is not set
CONFIG_DMA_SHARED_BUFFER=y
CONFIG_GPIOLIB=y
# CONFIG_ARM64 is not set
# CONFIG_ARM_DMA_USE_IOMMU is not set
# CONFIG_PPC_MPC512x is not set
# CONFIG_OMAP_DM_TIMER is not set
# CONFIG_ARCH_EXYNOS is not set
# CONFIG_ALPHA is not set
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_FB_CFB_COPYAREA=y
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_MXC is not set
CONFIG_FB=y
# CONFIG_ARCH_DAVINCI_DM365 is not set
# CONFIG_SOC_EXYNOS4412 is not set
# CONFIG_ARCH_STI is not set
CONFIG_I2C_MUX=m
# CONFIG_SND_SOC_SI476X is not set
CONFIG_REGMAP_I2C=y
CONFIG_INPUT_EVDEV=y
CONFIG_FIREWIRE=m
CONFIG_MFD_CORE=y
CONFIG_PM=y
CONFIG_DMA_ENGINE=y
CONFIG_SND_PCM=y
# CONFIG_PLAT_S3C24XX is not set
# CONFIG_SND_MIRO is not set
# CONFIG_SPI is not set
CONFIG_FW_LOADER=y
# CONFIG_MFD_SYSCON is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_IOMMU_DMA is not set
CONFIG_USB=y
CONFIG_PNP=y
# CONFIG_MTD is not set
CONFIG_I2C_ALGOBIT=y
# CONFIG_ARCH_OMAP2 is not set
CONFIG_SERIO_SERPORT=y
CONFIG_BITREVERSE=y
CONFIG_FONT_SUPPORT=y
CONFIG_I2C=y
# CONFIG_MIPS is not set
CONFIG_EFI=y
# CONFIG_SOC_DRA7XX is not set
# CONFIG_ARCH_TEGRA is not set
# CONFIG_SND_FM801 is not set
# CONFIG_STA2X11 is not set
# CONFIG_PWM_OMAP_DMTIMER is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_BLACKFIN is not set
# CONFIG_ARCH_OMAP2 is not set
# CONFIG_REGULATOR is not set
# CONFIG_MULTIPLEXER is not set
CONFIG_COMMON_CLK=y
# CONFIG_ARCH_MESON is not set
# CONFIG_ARCH_ROCKCHIP is not set
# CONFIG_ARCH_OMAP4 is not set
CONFIG_NEW_LEDS=y
# CONFIG_ARCH_QCOM is not set
# CONFIG_ARCH_STM32 is not set
# CONFIG_ARCH_MEDIATEK is not set
# CONFIG_ARCH_DAVINCI is not set
CONFIG_INET=y
# CONFIG_SOC_IMX27 is not set
CONFIG_X86=y
# CONFIG_SOC_EXYNOS4212 is not set
# CONFIG_ARCH_SHMOBILE is not set
# CONFIG_VIDEO_V4L1 is not set
# CONFIG_OMAP2_VRFB is not set
CONFIG_INPUT=y
# CONFIG_RPMSG is not set
# CONFIG_MTK_IOMMU is not set
CONFIG_SND_SOC=y
CONFIG_SERIO_SERPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_OMAP_IOMMU is not set
# CONFIG_ARCH_OMAP2PLUS is not set
CONFIG_MMU=y
# CONFIG_SOC_EXYNOS5250 is not set
# CONFIG_REGMAP_MMIO is not set
CONFIG_RATIONAL=y
# CONFIG_SND_ISA is not set
CONFIG_HAS_IOMEM=y
CONFIG_HDMI=y
# CONFIG_SOC_EXYNOS4412 is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_VIDEO_KERNEL_VERSION is not set
CONFIG_RC_CORE=m
CONFIG_RC_MAP=m
CONFIG_RC_DECODERS=y
CONFIG_LIRC=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IR_RC5_DECODER=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_SANYO_DECODER=m
CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_FINTEK=m
CONFIG_IR_NUVOTON=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_IR_SERIAL=m
CONFIG_IR_SERIAL_TRANSMITTER=y
# CONFIG_IR_SIR is not set
CONFIG_MEDIA_SUPPORT=m
#
# Multimedia core support
#
CONFIG_MEDIA_CAMERA_SUPPORT=y
# CONFIG_MEDIA_CAMERA_SUPPORT is not set
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
# CONFIG_MEDIA_RADIO_SUPPORT is not set
# CONFIG_MEDIA_SDR_SUPPORT is not set
CONFIG_MEDIA_RC_SUPPORT=y
# CONFIG_MEDIA_CEC_SUPPORT is not set
# CONFIG_MEDIA_CONTROLLER is not set
CONFIG_VIDEO_DEV=m
@ -170,54 +211,8 @@ CONFIG_DVB_DYNAMIC_MINORS=y
#
# Media drivers
#
CONFIG_RC_CORE=m
CONFIG_RC_MAP=m
CONFIG_RC_DECODERS=y
CONFIG_LIRC=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IR_RC5_DECODER=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_SANYO_DECODER=m
CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m
CONFIG_IR_FINTEK=m
CONFIG_IR_NUVOTON=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_WINBOND_CIR=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_IR_GPIO_CIR=m
CONFIG_IR_SERIAL=m
CONFIG_IR_SERIAL_TRANSMITTER=y
# CONFIG_IR_SIR is not set
CONFIG_MEDIA_USB_SUPPORT=y
#
# Webcam devices
#
# CONFIG_USB_VIDEO_CLASS is not set
# CONFIG_USB_GSPCA is not set
# CONFIG_USB_PWC is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_USB_ZR364XX is not set
# CONFIG_USB_STKWEBCAM is not set
# CONFIG_USB_S2255 is not set
# CONFIG_VIDEO_USBTV is not set
#
# Analog TV USB devices
#
@ -292,6 +287,7 @@ CONFIG_DVB_USB_TBS5881=m
CONFIG_DVB_USB_TBS5520=m
CONFIG_DVB_USB_TBS5927=m
CONFIG_DVB_USB_TBS5520SE=m
CONFIG_DVB_USB_TBS5580=m
CONFIG_DVB_USB_CYCITV=m
CONFIG_DVB_USB_V2=m
CONFIG_DVB_USB_AF9015=m
@ -323,9 +319,6 @@ CONFIG_VIDEO_EM28XX_V4L2=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX_RC=m
# CONFIG_MEDIA_PCI_SUPPORT is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
# CONFIG_DVB_PLATFORM_DRIVERS is not set
#
@ -390,9 +383,6 @@ CONFIG_VIDEO_CX25840=m
#
# Camera sensor devices
#
CONFIG_VIDEO_OV2640=m
CONFIG_VIDEO_OV7640=m
CONFIG_VIDEO_MT9V011=m
#
# Flash devices
@ -406,6 +396,10 @@ CONFIG_VIDEO_MT9V011=m
# Audio/Video compression chips
#
#
# SDR tuner chips
#
#
# Miscellaneous helper chips
#
@ -415,6 +409,7 @@ CONFIG_VIDEO_MT9V011=m
#
CONFIG_MEDIA_TUNER=m
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA18250=m
CONFIG_MEDIA_TUNER_TDA8290=m
CONFIG_MEDIA_TUNER_TDA827X=m
CONFIG_MEDIA_TUNER_TDA18271=m
@ -573,7 +568,7 @@ CONFIG_DVB_M88RS2000=m
CONFIG_DVB_AF9033=m
CONFIG_DVB_TAS2101=m
CONFIG_DVB_AVL6882=m
CONFIG_DVB_STV0910=m
CONFIG_DVB_STV091X=m
CONFIG_DVB_SI2183=m
#
@ -589,8 +584,3 @@ CONFIG_MISC_DEVICES=y
#
CONFIG_ALTERA_STAPL=m
# CONFIG_STAGING is not set
# RPi DVB Hat
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_CXD2841ER=m
CONFIG_DVB_CXD2880=m

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -16,9 +16,9 @@
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="media_build"
PKG_VERSION="2017-06-20-rpi"
PKG_SHA256="ff30bf1ee9fe342649ad80c9072ab4d37238d05680da850828f6d6c1d6b2e6d4"
PKG_NAME="crazycat"
PKG_VERSION="2017-11-13"
PKG_SHA256="14d951eb8d40cee40d601d7c737bca07171d8b4f201d63d5e70a24c4841f9d73"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/crazycat69/linux_media"
@ -26,10 +26,14 @@ PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain linux"
PKG_BUILD_DEPENDS_TARGET="toolchain linux"
PKG_NEED_UNPACK="$LINUX_DEPENDS"
PKG_SECTION="driver"
PKG_SHORTDESC="DVB drivers that replace the version shipped with the kernel"
PKG_LONGDESC="DVB drivers that replace the version shipped with the kernel"
PKG_IS_KERNEL_PKG="yes"
PKG_SECTION="driver.dvb"
PKG_LONGDESC="DVB driver for TBS cards with CrazyCats additions."
PKG_IS_ADDON="yes"
PKG_ADDON_IS_STANDALONE="yes"
PKG_ADDON_NAME="DVB drivers for TBS (CrazyCat)"
PKG_ADDON_TYPE="xbmc.service"
PKG_ADDON_VERSION="${ADDON_VERSION}.${PKG_REV}"
pre_make_target() {
export KERNEL_VER=$(get_module_dir)
@ -40,7 +44,7 @@ make_target() {
make untar
# copy config file
if [ "$PROJECT" = Generic ] || [ "$PROJECT" = Virtual ]; then
if [ "$PROJECT" = Generic ]; then
if [ -f $PKG_DIR/config/generic.config ]; then
cp $PKG_DIR/config/generic.config v4l/.config
fi
@ -55,6 +59,5 @@ make_target() {
}
makeinstall_target() {
mkdir -p $INSTALL/$(get_full_module_dir)/updates
find $PKG_BUILD/v4l/ -name \*.ko -exec cp {} $INSTALL/$(get_full_module_dir)/updates \;
install_driver_addon_files "$PKG_BUILD/v4l/"
}

View File

@ -0,0 +1,11 @@
--- a/backports/backports.txt
+++ b/backports/backports.txt
@@ -25,6 +25,8 @@ add api_version.patch
add pr_fmt.patch
add debug.patch
add drx39xxj.patch
+add linux-202-lnbp22_patch_for_more_power_if_rotor.patch
+add linux-220-Xbox-One-DVB-T2-stick-support.patch
[4.12.255]
add v4.12_revert_solo6x10_copykerneluser.patch

View File

@ -0,0 +1,17 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################

View File

@ -0,0 +1,42 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="media_tree"
PKG_VERSION="2017-12-06-b32a2b42f76c"
PKG_SHA256="90a6b5b015bbb5583a6c72880f8b89ed8b3671ca64c713a00ec3467fbb84cdc4"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://git.linuxtv.org/media_tree.git"
PKG_URL="http://linuxtv.org/downloads/drivers/linux-media-${PKG_VERSION}.tar.bz2"
PKG_DEPENDS_TARGET="toolchain"
PKG_SECTION="driver"
PKG_LONGDESC="Source of Linux Kernel media_tree subsystem to build with media_build."
PKG_TOOLCHAIN="manual"
unpack() {
mkdir -p $PKG_BUILD/
tar -xf $SOURCES/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.bz2 -C $PKG_BUILD/
# hack/workaround for borked upstream kernel/media_build
# without removing atomisp there a lot additional includes that
# slowdown build process after modpost from 3min to 6min
# even if atomisp is disabled via kernel.conf
rm -rf $PKG_BUILD/drivers/staging/media/atomisp
sed -i 's|^.*drivers/staging/media/atomisp.*$||' \
$PKG_BUILD/drivers/staging/media/Kconfig
}

View File

@ -0,0 +1,2 @@
100
- Initial add-on

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,45 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="digital_devices"
PKG_VERSION="0f05b19"
PKG_SHA256="0f12fa00133eaeb83c4e380cd6e3174d7b399e7e9e5ba8eac0c1ada7579c2c20"
PKG_ARCH="x86_64"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/DigitalDevices/dddvb/"
PKG_URL="https://github.com/DigitalDevices/dddvb/archive/${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="dddvb-${PKG_VERSION}*"
PKG_DEPENDS_TARGET="toolchain linux"
PKG_BUILD_DEPENDS_TARGET="toolchain linux"
PKG_NEED_UNPACK="$LINUX_DEPENDS"
PKG_SECTION="driver.dvb"
PKG_LONGDESC="DVB driver for Digital Devices cards"
PKG_IS_ADDON="yes"
PKG_ADDON_IS_STANDALONE="yes"
PKG_ADDON_NAME="DVB drivers for DigitalDevices"
PKG_ADDON_TYPE="xbmc.service"
PKG_ADDON_VERSION="${ADDON_VERSION}.${PKG_REV}"
make_target() {
KDIR=$(kernel_path) make
}
makeinstall_target() {
install_driver_addon_files "$PKG_BUILD/ddbridge $PKG_BUILD/dvb-core $PKG_BUILD/frontends"
}

View File

@ -0,0 +1,17 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################

View File

@ -0,0 +1,2 @@
100
- Initial add-on

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,51 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="hauppauge"
PKG_VERSION="f5a5e5e"
PKG_SHA256="6a3167c9990fa96838f4746861edb4d4e656739ea08d4f993e54becb9f2e9ab2"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://git.linuxtv.org/media_build.git"
PKG_URL="https://git.linuxtv.org/media_build.git/snapshot/${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="${PKG_VERSION}"
PKG_DEPENDS_TARGET="toolchain linux media_tree"
PKG_NEED_UNPACK="$LINUX_DEPENDS media_tree"
PKG_SECTION="driver.dvb"
PKG_LONGDESC="DVB drivers for Hauppauge"
PKG_IS_ADDON="yes"
PKG_ADDON_IS_STANDALONE="yes"
PKG_ADDON_NAME="DVB drivers for Hauppauge"
PKG_ADDON_TYPE="xbmc.service"
PKG_ADDON_VERSION="${ADDON_VERSION}.${PKG_REV}"
pre_make_target() {
export KERNEL_VER=$(get_module_dir)
export LDFLAGS=""
}
make_target() {
cp -RP $(get_build_dir media_tree)/* $PKG_BUILD/linux
make VER=$KERNEL_VER SRCDIR=$(kernel_path) stagingconfig
make VER=$KERNEL_VER SRCDIR=$(kernel_path)
}
makeinstall_target() {
install_driver_addon_files "$PKG_BUILD/v4l/"
}

View File

@ -0,0 +1,11 @@
diff --git a/v4l/Makefile b/v4l/Makefile
--- a/v4l/Makefile
+++ b/v4l/Makefile
@@ -51,7 +51,6 @@ default:: prepare firmware
@echo Kernel build directory is $(OUTDIR)
$(MAKE) -C ../linux apply_patches
$(MAKE) -C $(OUTDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules
- ./scripts/rmmod.pl check
# $(MAKE) checkpatch
mismatch:: prepare firmware

View File

@ -0,0 +1,11 @@
--- a/backports/backports.txt
+++ b/backports/backports.txt
@@ -25,6 +25,8 @@ add api_version.patch
add pr_fmt.patch
add debug.patch
add drx39xxj.patch
+add temp_revert.patch
+add hauppauge.patch
[4.10.255]
add v4.10_sched_signal.patch

View File

@ -0,0 +1,17 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
reverted: pvrusb2: properly check endpoint types
--- b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
+++ a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
@@ -3648,12 +3648,6 @@
hdw);
hdw->ctl_write_urb->actual_length = 0;
hdw->ctl_write_pend_flag = !0;
- if (usb_urb_ep_type_check(hdw->ctl_write_urb)) {
- pvr2_trace(
- PVR2_TRACE_ERROR_LEGS,
- "Invalid write control endpoint");
- return -EINVAL;
- }
status = usb_submit_urb(hdw->ctl_write_urb,GFP_KERNEL);
if (status < 0) {
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
@@ -3678,12 +3672,6 @@
hdw);
hdw->ctl_read_urb->actual_length = 0;
hdw->ctl_read_pend_flag = !0;
- if (usb_urb_ep_type_check(hdw->ctl_read_urb)) {
- pvr2_trace(
- PVR2_TRACE_ERROR_LEGS,
- "Invalid read control endpoint");
- return -EINVAL;
- }
status = usb_submit_urb(hdw->ctl_read_urb,GFP_KERNEL);
if (status < 0) {
pvr2_trace(PVR2_TRACE_ERROR_LEGS,

View File

@ -1,17 +0,0 @@
--- a/backports/backports.txt
+++ b/backports/backports.txt
@@ -25,6 +25,14 @@ add api_version.patch
add pr_fmt.patch
add debug.patch
add drx39xxj.patch
+add linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch
+add linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch
+add linux-062-imon_pad_ignore_diagonal.patch
+add linux-202-lnbp22_patch_for_more_power_if_rotor.patch
+add linux-203-stb0899_enable_low_symbol_rate.patch
+add linux-204-lirc_fix_for_4.12.patch
+add linux-220-hauppauge_dualhd_second_tuner_support.patch
+add cxd2880-support.patch
[4.10.255]
add v4.10_sched_signal.patch

View File

@ -1,12 +0,0 @@
diff -Naur linux-3.0/drivers/media/rc/nuvoton-cir.c linux-3.0.patch/drivers/media/rc/nuvoton-cir.c
--- linux-3.0/drivers/media/rc/nuvoton-cir.c 2011-07-22 04:17:23.000000000 +0200
+++ linux-3.0.patch/drivers/media/rc/nuvoton-cir.c 2011-07-22 21:30:48.374591146 +0200
@@ -1110,7 +1110,7 @@
rdev->dev.parent = &pdev->dev;
rdev->driver_name = NVT_DRIVER_NAME;
rdev->map_name = RC_MAP_RC6_MCE;
- rdev->timeout = MS_TO_NS(100);
+ rdev->timeout = US_TO_NS(1000);
/* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
#if 0

View File

@ -1,28 +0,0 @@
--- linux/drivers/media/rc/ir-rc6-decoder.c 2012-11-25 22:08:13.148418669 -0800
+++ linux.patch/drivers/media/rc/ir-rc6-decoder.c 2012-11-25 22:07:48.864417975 -0800
@@ -39,7 +39,6 @@
#define RC6_STARTBIT_MASK 0x08 /* for the header bits */
#define RC6_6A_MCE_TOGGLE_MASK 0x8000 /* for the body bits */
#define RC6_6A_LCC_MASK 0xffff0000 /* RC6-6A-32 long customer code mask */
-#define RC6_6A_MCE_CC 0x800f0000 /* MCE customer code */
#ifndef CHAR_BIT
#define CHAR_BIT 8 /* Normally in <limits.h> */
#endif
@@ -257,14 +256,9 @@ again:
toggle = 0;
break;
case 32:
- if ((scancode & RC6_6A_LCC_MASK) == RC6_6A_MCE_CC) {
- protocol = RC_TYPE_RC6_MCE;
- toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK);
- scancode &= ~RC6_6A_MCE_TOGGLE_MASK;
- } else {
- protocol = RC_TYPE_RC6_6A_32;
- toggle = 0;
- }
+ protocol = RC_TYPE_RC6_MCE;
+ toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK);
+ scancode &= ~RC6_6A_MCE_TOGGLE_MASK;
break;
default:
IR_dprintk(1, "RC6(6A) unsupported length\n");

View File

@ -1,21 +0,0 @@
diff -Naur linux-3.16.1/drivers/media/rc/imon.c linux-3.16.1.patch/drivers/media/rc/imon.c
--- linux-3.16.1/drivers/media/rc/imon.c 2014-08-14 04:36:35.000000000 +0200
+++ linux-3.16.1.patch/drivers/media/rc/imon.c 2014-08-15 13:57:16.587620642 +0200
@@ -1344,6 +1344,17 @@
}
} else {
/*
+ * For users without stabilized, just ignore any value getting
+ * to close to the diagonal.
+ */
+ if ((abs(rel_y) < 2 && abs(rel_x) < 2) ||
+ abs(abs(rel_y) - abs(rel_x)) < 2 ) {
+ spin_lock_irqsave(&ictx->kc_lock, flags);
+ ictx->kc = KEY_UNKNOWN;
+ spin_unlock_irqrestore(&ictx->kc_lock, flags);
+ return;
+ }
+ /*
* Hack alert: instead of using keycodes, we have
* to use hard-coded scancodes here...
*/

View File

@ -1,11 +0,0 @@
--- a/drivers/media/dvb-frontends/stb0899_drv.c
+++ b/drivers/media/dvb-frontends/stb0899_drv.c
@@ -1618,7 +1618,7 @@ static const struct dvb_frontend_ops stb0899_ops = {
.frequency_max = 2150000,
.frequency_stepsize = 0,
.frequency_tolerance = 0,
- .symbol_rate_min = 5000000,
+ .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO |

View File

@ -1,24 +0,0 @@
Subject: [media] lirc: LIRC_GET_REC_RESOLUTION should return microseconds
Date: Tue, 11 Jul 2017 10:47:37 +0100
Since commit e8f4818895b3 ("[media] lirc: advertise
LIRC_CAN_GET_REC_RESOLUTION and improve") lircd uses the ioctl
LIRC_GET_REC_RESOLUTION to determine the shortest pulse or space that
the hardware can detect. This breaks decoding in lirc because lircd
expects the answer in microseconds, but nanoseconds is returned.
drop at bump to 4.13
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
index a30af91..d2223c0 100644
--- a/drivers/media/rc/ir-lirc-codec.c
+++ b/drivers/media/rc/ir-lirc-codec.c
@@ -266,7 +266,7 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
if (!dev->rx_resolution)
return -ENOTTY;
- val = dev->rx_resolution;
+ val = dev->rx_resolution / 1000;
break;
case LIRC_SET_WIDEBAND_RECEIVER:

View File

@ -1,586 +0,0 @@
From: Brad Love <hidden@email.co>
Date: Sun, 16 Apr 2017 00:13:39 -0500
Subject: Hauppauge DualHD DVB/ATSC second tuner support
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
index c9b1eb3..c50769f 100644
--- a/drivers/media/dvb-frontends/lgdt3306a.c
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
@@ -624,6 +624,9 @@ static int lgdt3306a_set_modulation(struct lgdt3306a_state *state,
case QAM_256:
ret = lgdt3306a_set_qam(state, QAM_256);
break;
+ case QAM_AUTO:
+ ret = lgdt3306a_set_qam(state, QAM_64);
+ break;
default:
return -EINVAL;
}
@@ -649,6 +652,7 @@ static int lgdt3306a_agc_setup(struct lgdt3306a_state *state,
break;
case QAM_64:
case QAM_256:
+ case QAM_AUTO:
break;
default:
return -EINVAL;
@@ -703,6 +707,7 @@ static int lgdt3306a_spectral_inversion(struct lgdt3306a_state *state,
break;
case QAM_64:
case QAM_256:
+ case QAM_AUTO:
/* Auto ok for QAM */
ret = lgdt3306a_set_inversion_auto(state, 1);
break;
@@ -726,6 +731,7 @@ static int lgdt3306a_set_if(struct lgdt3306a_state *state,
break;
case QAM_64:
case QAM_256:
+ case QAM_AUTO:
if_freq_khz = state->cfg->qam_if_khz;
break;
default:
@@ -1644,6 +1650,9 @@ static int lgdt3306a_read_signal_strength(struct dvb_frontend *fe,
case QAM_256:
ref_snr = 2800; /* 28dB */
break;
+ case QAM_AUTO:
+ ref_snr = 2200; /* 22dB */
+ break;
default:
return -EINVAL;
}
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index 146341a..d2e5b8d 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -508,8 +508,10 @@ static struct em28xx_reg_seq plex_px_bcud[] = {
};
/*
- * 2040:0265 Hauppauge WinTV-dualHD DVB
- * 2040:026d Hauppauge WinTV-dualHD ATSC/QAM
+ * 2040:0265 Hauppauge WinTV-dualHD DVB ISOC
+ * 2040:8265 Hauppauge WinTV-dualHD DVB Bulk
+ * 2040:026d Hauppauge WinTV-dualHD ATSC/QAM ISOC
+ * 2040:826d Hauppauge WinTV-dualHD ATSC/QAM Bulk
* reg 0x80/0x84:
* GPIO_0: Yellow LED tuner 1, 0=on, 1=off
* GPIO_1: Green LED tuner 1, 0=on, 1=off
@@ -2376,7 +2378,8 @@ struct em28xx_board em28xx_boards[] = {
.has_dvb = 1,
},
/*
- * 2040:0265 Hauppauge WinTV-dualHD (DVB version).
+ * 2040:0265 Hauppauge WinTV-dualHD (DVB version) ISOC.
+ * 2040:8265 Hauppauge WinTV-dualHD (DVB version) BULK.
* Empia EM28274, 2x Silicon Labs Si2168, 2x Silicon Labs Si2157
*/
[EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB] = {
@@ -2387,11 +2390,13 @@ struct em28xx_board em28xx_boards[] = {
.tuner_type = TUNER_ABSENT,
.tuner_gpio = hauppauge_dualhd_dvb,
.has_dvb = 1,
+ .has_dual_ts = 1,
.ir_codes = RC_MAP_HAUPPAUGE,
.leds = hauppauge_dualhd_leds,
},
/*
- * 2040:026d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM).
+ * 2040:026d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM) ISOC.
+ * 2040:826d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM) BULK.
* Empia EM28274, 2x LG LGDT3306A, 2x Silicon Labs Si2157
*/
[EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595] = {
@@ -2402,6 +2407,7 @@ struct em28xx_board em28xx_boards[] = {
.tuner_type = TUNER_ABSENT,
.tuner_gpio = hauppauge_dualhd_dvb,
.has_dvb = 1,
+ .has_dual_ts = 1,
.ir_codes = RC_MAP_HAUPPAUGE,
.leds = hauppauge_dualhd_leds,
},
@@ -2530,8 +2536,12 @@ struct usb_device_id em28xx_id_table[] = {
.driver_info = EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 },
{ USB_DEVICE(0x2040, 0x0265),
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
+ { USB_DEVICE(0x2040, 0x8265),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
{ USB_DEVICE(0x2040, 0x026d),
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
+ { USB_DEVICE(0x2040, 0x826d),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
{ USB_DEVICE(0x0438, 0xb002),
.driver_info = EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 },
{ USB_DEVICE(0x2001, 0xf112),
@@ -3222,7 +3232,8 @@ static void em28xx_release_resources(struct em28xx *dev)
em28xx_i2c_unregister(dev, 1);
em28xx_i2c_unregister(dev, 0);
- usb_put_dev(udev);
+ if(dev->ts == PRIMARY_TS)
+ usb_put_dev(udev);
/* Mark device as unused */
clear_bit(dev->devno, em28xx_devused);
@@ -3415,6 +3426,34 @@ static int em28xx_init_dev(struct em28xx *dev, struct usb_device *udev,
return 0;
}
+int em28xx_duplicate_dev(struct em28xx *dev)
+{
+ int nr;
+ struct em28xx *sec_dev = kzalloc(sizeof(*sec_dev), GFP_KERNEL);
+ if (sec_dev == NULL) {
+ dev->dev_next = NULL;
+ return -ENOMEM;
+ }
+ memcpy(sec_dev, dev, sizeof(sizeof(*sec_dev)));
+ /* Check to see next free device and mark as used */
+ do {
+ nr = find_first_zero_bit(em28xx_devused, EM28XX_MAXBOARDS);
+ if (nr >= EM28XX_MAXBOARDS) {
+ /* No free device slots */
+ printk(DRIVER_NAME ": Supports only %i em28xx boards.\n",
+ EM28XX_MAXBOARDS);
+ kfree(sec_dev);
+ dev->dev_next = NULL;
+ return -ENOMEM;
+ }
+ } while (test_and_set_bit(nr, em28xx_devused));
+ sec_dev->devno = nr;
+ snprintf(sec_dev->name, 28, "em28xx #%d", nr);
+ sec_dev->dev_next = NULL;
+ dev->dev_next = sec_dev;
+ return 0;
+}
+
/* high bandwidth multiplier, as encoded in highspeed endpoint descriptors */
#define hb_mult(wMaxPacketSize) (1 + (((wMaxPacketSize) >> 11) & 0x03))
@@ -3428,7 +3467,8 @@ static int em28xx_usb_probe(struct usb_interface *interface,
struct usb_device *udev;
struct em28xx *dev = NULL;
int retval;
- bool has_vendor_audio = false, has_video = false, has_dvb = false;
+ bool has_vendor_audio = false, has_video = false;
+ bool has_dvb = false, has_dvb_ts2 = false;
int i, nr, try_bulk;
const int ifnum = interface->altsetting[0].desc.bInterfaceNumber;
char *speed;
@@ -3534,6 +3574,19 @@ static int em28xx_usb_probe(struct usb_interface *interface,
}
}
break;
+ case 0x85:
+ if (usb_endpoint_xfer_isoc(e)) {
+ if (size > dev->dvb_max_pkt_size_isoc_ts2) {
+ has_dvb_ts2 = true; /* see NOTE (~) */
+ dev->dvb_ep_isoc_ts2 = e->bEndpointAddress;
+ dev->dvb_max_pkt_size_isoc_ts2 = size;
+ dev->dvb_alt_isoc = i;
+ }
+ } else {
+ has_dvb_ts2 = true;
+ dev->dvb_ep_bulk_ts2 = e->bEndpointAddress;
+ }
+ break;
}
}
/* NOTE:
@@ -3615,6 +3668,10 @@ static int em28xx_usb_probe(struct usb_interface *interface,
dev->has_video = has_video;
dev->ifnum = ifnum;
+ dev->ts = PRIMARY_TS;
+ snprintf(dev->name, 28, "em28xx");
+ dev->dev_next = NULL;
+
if (has_vendor_audio) {
dev_err(&interface->dev,
"Audio interface %i found (Vendor Class)\n", ifnum);
@@ -3694,6 +3751,61 @@ static int em28xx_usb_probe(struct usb_interface *interface,
dev->dvb_xfer_bulk ? "bulk" : "isoc");
}
+ if(dev->board.has_dual_ts && em28xx_duplicate_dev(dev) == 0)
+ {
+ dev->dev_next->ts = SECONDARY_TS;
+ dev->dev_next->alt = -1;
+ dev->dev_next->is_audio_only = has_vendor_audio && !(has_video || has_dvb);
+ dev->dev_next->has_video = false;
+ dev->dev_next->ifnum = ifnum;
+ dev->dev_next->model = id->driver_info;
+
+ mutex_init(&dev->dev_next->lock);
+ retval = em28xx_init_dev(dev->dev_next, udev, interface, dev->dev_next->devno);
+ if (retval) {
+ goto err_free;
+ }
+
+ if (usb_xfer_mode < 0) {
+ if (dev->dev_next->board.is_webcam)
+ try_bulk = 1;
+ else
+ try_bulk = 0;
+ } else {
+ try_bulk = usb_xfer_mode > 0;
+ }
+
+ /* Select USB transfer types to use */
+ if (has_dvb) {
+ if (!dev->dvb_ep_isoc_ts2 || (try_bulk && dev->dvb_ep_bulk_ts2))
+ dev->dev_next->dvb_xfer_bulk = 1;
+ dev_info(&dev->intf->dev, "dvb ts2 set to %s mode.\n",
+ dev->dev_next->dvb_xfer_bulk ? "bulk" : "isoc");
+ }
+
+ dev->dev_next->dvb_ep_isoc = dev->dvb_ep_isoc_ts2;
+ dev->dev_next->dvb_ep_bulk = dev->dvb_ep_bulk_ts2;
+ dev->dev_next->dvb_max_pkt_size_isoc = dev->dvb_max_pkt_size_isoc_ts2;
+ dev->dev_next->dvb_alt_isoc = dev->dvb_alt_isoc;
+
+ /* Configuare hardware to support TS2*/
+ if(dev->dvb_xfer_bulk) {
+ /* The ep4 and ep5 are configuared for BULK */
+ em28xx_write_reg(dev, 0x0b, 0x96);
+ mdelay(100);
+ em28xx_write_reg(dev, 0x0b, 0x80);
+ mdelay(100);
+ } else {
+ /* The ep4 and ep5 are configuared for ISO */
+ em28xx_write_reg(dev, 0x0b, 0x96);
+ mdelay(100);
+ em28xx_write_reg(dev, 0x0b, 0x82);
+ mdelay(100);
+ }
+
+ kref_init(&dev->dev_next->ref);
+ }
+
kref_init(&dev->ref);
request_modules(dev);
@@ -3736,15 +3848,28 @@ static void em28xx_usb_disconnect(struct usb_interface *interface)
if (!dev)
return;
+ if(dev->dev_next!=NULL) {
+ dev->dev_next->disconnected = 1;
+ dev_info(&dev->intf->dev, "Disconnecting %s\n", dev->dev_next->name);
+ flush_request_modules(dev->dev_next);
+ }
+
dev->disconnected = 1;
- dev_err(&dev->intf->dev, "Disconnecting\n");
+ dev_err(&dev->intf->dev, "Disconnecting %s\n", dev->name);
flush_request_modules(dev);
em28xx_close_extension(dev);
+ if(dev->dev_next!=NULL)
+ em28xx_release_resources(dev->dev_next);
em28xx_release_resources(dev);
+
+ if(dev->dev_next!=NULL) {
+ kref_put(&dev->dev_next->ref, em28xx_free_device);
+ dev->dev_next = NULL;
+ }
kref_put(&dev->ref, em28xx_free_device);
}
diff --git a/drivers/media/usb/em28xx/em28xx-core.c b/drivers/media/usb/em28xx/em28xx-core.c
index 1d0d8cc..ca0ddd5 100644
--- a/drivers/media/usb/em28xx/em28xx-core.c
+++ b/drivers/media/usb/em28xx/em28xx-core.c
@@ -638,10 +638,39 @@ int em28xx_capture_start(struct em28xx *dev, int start)
dev->chip_id == CHIP_ID_EM28174 ||
dev->chip_id == CHIP_ID_EM28178) {
/* The Transport Stream Enable Register moved in em2874 */
- rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
- start ?
- EM2874_TS1_CAPTURE_ENABLE : 0x00,
- EM2874_TS1_CAPTURE_ENABLE);
+ if(dev->dvb_xfer_bulk) {
+ /* TS1 Maximum Transfer Size = 188 * EM28XX_DVB_BULK_PACKET_MULTIPLIER */
+ em28xx_write_reg(dev, EM2874_R5D_TS1_PKT_SIZE, 0xef);
+ } else {
+ /* TS1 Maximum Transfer Size = 188 * 5 */
+ em28xx_write_reg(dev, EM2874_R5D_TS1_PKT_SIZE, 0x05);
+ }
+
+ if(dev->board.has_dual_ts) {
+ if(start) {
+ if(dev->dvb_xfer_bulk) {
+ /* TS2 Maximum Transfer Size = 188 * EM28XX_DVB_BULK_PACKET_MULTIPLIER */
+ em28xx_write_reg(dev, EM2874_R5E_TS2_PKT_SIZE, 0xef);
+ } else {
+ /* TS2 Maximum Transfer Size = 188 * 5 */
+ em28xx_write_reg(dev, EM2874_R5E_TS2_PKT_SIZE, 0x05);
+ }
+ rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
+ (EM2874_TS1_CAPTURE_ENABLE | EM2874_TS2_CAPTURE_ENABLE),
+ (EM2874_TS1_CAPTURE_ENABLE | EM2874_TS2_CAPTURE_ENABLE));
+ } else {
+ if(dev->ts == PRIMARY_TS) {
+ rc = em28xx_toggle_reg_bits(dev, EM2874_R5F_TS_ENABLE, EM2874_TS1_CAPTURE_ENABLE);
+ } else {
+ rc = em28xx_toggle_reg_bits(dev, EM2874_R5F_TS_ENABLE, EM2874_TS2_CAPTURE_ENABLE);
+ }
+ }
+ } else {
+ rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
+ start ?
+ EM2874_TS1_CAPTURE_ENABLE : 0x00,
+ EM2874_TS1_CAPTURE_ENABLE);
+ }
} else {
/* FIXME: which is the best order? */
/* video registers are sampled by VREF */
@@ -1077,7 +1106,11 @@ int em28xx_register_extension(struct em28xx_ops *ops)
mutex_lock(&em28xx_devlist_mutex);
list_add_tail(&ops->next, &em28xx_extension_devlist);
list_for_each_entry(dev, &em28xx_devlist, devlist) {
- ops->init(dev);
+ if (ops->init) {
+ ops->init(dev);
+ if(dev->dev_next!=NULL)
+ ops->init(dev->dev_next);
+ }
}
mutex_unlock(&em28xx_devlist_mutex);
pr_info("em28xx: Registered (%s) extension\n", ops->name);
@@ -1091,7 +1124,11 @@ void em28xx_unregister_extension(struct em28xx_ops *ops)
mutex_lock(&em28xx_devlist_mutex);
list_for_each_entry(dev, &em28xx_devlist, devlist) {
- ops->fini(dev);
+ if (ops->fini) {
+ if(dev->dev_next!=NULL)
+ ops->fini(dev->dev_next);
+ ops->fini(dev);
+ }
}
list_del(&ops->next);
mutex_unlock(&em28xx_devlist_mutex);
@@ -1106,8 +1143,11 @@ void em28xx_init_extension(struct em28xx *dev)
mutex_lock(&em28xx_devlist_mutex);
list_add_tail(&dev->devlist, &em28xx_devlist);
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
- if (ops->init)
+ if (ops->init) {
ops->init(dev);
+ if(dev->dev_next!=NULL)
+ ops->init(dev->dev_next);
+ }
}
mutex_unlock(&em28xx_devlist_mutex);
}
@@ -1118,8 +1158,11 @@ void em28xx_close_extension(struct em28xx *dev)
mutex_lock(&em28xx_devlist_mutex);
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
- if (ops->fini)
+ if (ops->fini) {
+ if(dev->dev_next!=NULL)
+ ops->fini(dev->dev_next);
ops->fini(dev);
+ }
}
list_del(&dev->devlist);
mutex_unlock(&em28xx_devlist_mutex);
@@ -1134,6 +1177,8 @@ int em28xx_suspend_extension(struct em28xx *dev)
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
if (ops->suspend)
ops->suspend(dev);
+ if(dev->dev_next!=NULL)
+ ops->suspend(dev->dev_next);
}
mutex_unlock(&em28xx_devlist_mutex);
return 0;
@@ -1148,6 +1193,8 @@ int em28xx_resume_extension(struct em28xx *dev)
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
if (ops->resume)
ops->resume(dev);
+ if(dev->dev_next!=NULL)
+ ops->resume(dev->dev_next);
}
mutex_unlock(&em28xx_devlist_mutex);
return 0;
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
index 82edd37..e10b1ac 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -199,13 +199,13 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb)
int rc;
struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv;
struct em28xx *dev = i2c_bus->dev;
- struct usb_device *udev = interface_to_usbdev(dev->intf);
+// struct usb_device *udev = interface_to_usbdev(dev->intf);
int dvb_max_packet_size, packet_multiplier, dvb_alt;
if (dev->dvb_xfer_bulk) {
if (!dev->dvb_ep_bulk)
return -ENODEV;
- dvb_max_packet_size = 512; /* USB 2.0 spec */
+ dvb_max_packet_size = 188;
packet_multiplier = EM28XX_DVB_BULK_PACKET_MULTIPLIER;
dvb_alt = 0;
} else { /* isoc */
@@ -218,7 +218,8 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb)
dvb_alt = dev->dvb_alt_isoc;
}
- usb_set_interface(udev, dev->ifnum, dvb_alt);
+ /* moved to em28xx_dvb_init*/
+ //usb_set_interface(udev, dev->ifnum, dvb_alt);
rc = em28xx_set_mode(dev, EM28XX_DIGITAL_MODE);
if (rc < 0)
return rc;
@@ -1128,8 +1129,9 @@ static void em28xx_unregister_dvb(struct em28xx_dvb *dvb)
static int em28xx_dvb_init(struct em28xx *dev)
{
- int result = 0;
+ int result = 0, dvb_alt = 0;
struct em28xx_dvb *dvb;
+ struct usb_device *udev;
if (dev->is_audio_only) {
/* Shouldn't initialize IR for this interface */
@@ -1155,7 +1157,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
result = em28xx_alloc_urbs(dev, EM28XX_DIGITAL_MODE,
dev->dvb_xfer_bulk,
EM28XX_DVB_NUM_BUFS,
- 512,
+ 188,
EM28XX_DVB_BULK_PACKET_MULTIPLIER);
} else {
result = em28xx_alloc_urbs(dev, EM28XX_DIGITAL_MODE,
@@ -1913,7 +1915,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
si2168_config.ts_mode = SI2168_TS_SERIAL;
memset(&info, 0, sizeof(struct i2c_board_info));
strlcpy(info.type, "si2168", I2C_NAME_SIZE);
- info.addr = 0x64;
+ if(dev->ts == PRIMARY_TS) info.addr = 0x64;
+ else info.addr = 0x67;
info.platform_data = &si2168_config;
request_module(info.type);
client = i2c_new_device(&dev->i2c_adap[dev->def_i2c_bus], &info);
@@ -1939,7 +1942,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
#endif
memset(&info, 0, sizeof(struct i2c_board_info));
strlcpy(info.type, "si2157", I2C_NAME_SIZE);
- info.addr = 0x60;
+ if(dev->ts == PRIMARY_TS) info.addr = 0x60;
+ else info.addr = 0x63;
info.platform_data = &si2157_config;
request_module(info.type);
client = i2c_new_device(adapter, &info);
@@ -1975,7 +1979,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
lgdt3306a_config.fe = &dvb->fe[0];
lgdt3306a_config.i2c_adapter = &adapter;
strlcpy(info.type, "lgdt3306a", sizeof(info.type));
- info.addr = 0x59;
+ if(dev->ts == PRIMARY_TS) info.addr = 0x59;
+ else info.addr = 0x0e;
info.platform_data = &lgdt3306a_config;
request_module(info.type);
client = i2c_new_device(&dev->i2c_adap[dev->def_i2c_bus],
@@ -2002,7 +2007,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
#endif
memset(&info, 0, sizeof(struct i2c_board_info));
strlcpy(info.type, "si2157", sizeof(info.type));
- info.addr = 0x60;
+ if(dev->ts == PRIMARY_TS) info.addr = 0x60;
+ else info.addr = 0x62;
info.platform_data = &si2157_config;
request_module(info.type);
@@ -2045,6 +2051,14 @@ static int em28xx_dvb_init(struct em28xx *dev)
if (result < 0)
goto out_free;
+ if (dev->dvb_xfer_bulk) {
+ dvb_alt = 0;
+ } else { /* isoc */
+ dvb_alt = dev->dvb_alt_isoc;
+ }
+
+ udev = interface_to_usbdev(dev->intf);
+ usb_set_interface(udev, dev->ifnum, dvb_alt);
dev_info(&dev->intf->dev, "DVB extension successfully initialized\n");
kref_get(&dev->ref);
diff --git a/drivers/media/usb/em28xx/em28xx.h b/drivers/media/usb/em28xx/em28xx.h
index e8d97d5..132638e 100644
--- a/drivers/media/usb/em28xx/em28xx.h
+++ b/drivers/media/usb/em28xx/em28xx.h
@@ -190,7 +190,7 @@
USB 2.0 spec says bulk packet size is always 512 bytes
*/
#define EM28XX_BULK_PACKET_MULTIPLIER 384
-#define EM28XX_DVB_BULK_PACKET_MULTIPLIER 384
+#define EM28XX_DVB_BULK_PACKET_MULTIPLIER 240
#define EM28XX_INTERLACED_DEFAULT 1
@@ -216,6 +216,9 @@
/* max. number of button state polling addresses */
#define EM28XX_NUM_BUTTON_ADDRESSES_MAX 5
+#define PRIMARY_TS 0
+#define SECONDARY_TS 1
+
enum em28xx_mode {
EM28XX_SUSPEND,
EM28XX_ANALOG_MODE,
@@ -456,6 +459,7 @@ struct em28xx_board {
unsigned int mts_firmware:1;
unsigned int max_range_640_480:1;
unsigned int has_dvb:1;
+ unsigned int has_dual_ts:1;
unsigned int is_webcam:1;
unsigned int valid:1;
unsigned int has_ir_i2c:1;
@@ -620,6 +624,7 @@ struct em28xx {
unsigned int is_audio_only:1;
enum em28xx_int_audio_type int_audio_type;
enum em28xx_usb_audio_type usb_audio_type;
+ unsigned char name[32];
struct em28xx_board board;
@@ -681,6 +686,8 @@ struct em28xx {
u8 ifnum; /* number of the assigned usb interface */
u8 analog_ep_isoc; /* address of isoc endpoint for analog */
u8 analog_ep_bulk; /* address of bulk endpoint for analog */
+ u8 dvb_ep_isoc_ts2; /* address of isoc endpoint for DVB TS2*/
+ u8 dvb_ep_bulk_ts2; /* address of bulk endpoint for DVB TS2*/
u8 dvb_ep_isoc; /* address of isoc endpoint for DVB */
u8 dvb_ep_bulk; /* address of bulk endpoint for DVB */
int alt; /* alternate setting */
@@ -694,6 +701,8 @@ struct em28xx {
int dvb_alt_isoc; /* alternate setting for DVB isoc transfers */
unsigned int dvb_max_pkt_size_isoc; /* isoc max packet size of the
selected DVB ep at dvb_alt */
+ unsigned int dvb_max_pkt_size_isoc_ts2; /* isoc max packet size of the
+ selected DVB ep at dvb_alt */
unsigned int dvb_xfer_bulk:1; /* use bulk instead of isoc
transfers for DVB */
char urb_buf[URB_MAX_CTRL_SIZE]; /* urb control msg buffer */
@@ -725,6 +734,9 @@ struct em28xx {
struct media_entity input_ent[MAX_EM28XX_INPUT];
struct media_pad input_pad[MAX_EM28XX_INPUT];
#endif
+
+ struct em28xx *dev_next;
+ int ts;
};
#define kref_to_dev(d) container_of(d, struct em28xx, ref)
--
2.7.4

View File

@ -319,6 +319,11 @@ post_makeinstall_target() {
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "repository.libreelec.tv" $ADDON_MANIFEST
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "repository.retroplayer.libreelec.tv" $ADDON_MANIFEST
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "service.libreelec.settings" $ADDON_MANIFEST
if [ "$DRIVER_ADDONS_SUPPORT" = "yes" ]; then
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "script.program.driverselect" $ADDON_MANIFEST
fi
if [ "$DEVICE" = "Slice" -o "$DEVICE" = "Slice3" ]; then
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "service.slice" $ADDON_MANIFEST
fi

View File

@ -20,9 +20,13 @@ PKG_NAME="linux-drivers"
PKG_VERSION=""
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.openelec.tv"
PKG_SITE="https://libreelec.tv"
PKG_URL=""
PKG_DEPENDS_TARGET="toolchain $ADDITIONAL_DRIVERS"
PKG_SECTION="virtual"
PKG_SHORTDESC="linux-drivers: Meta package to install additional drivers"
PKG_LONGDESC="linux-drivers is a Meta package to install additional drivers"
if [ "$DRIVER_ADDONS_SUPPORT" = "yes" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $DRIVER_ADDONS driverselect"
fi

View File

@ -87,4 +87,12 @@
# for a list of additinoal drivers see packages/linux-drivers
# Space separated list is supported,
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS bcm_sta media_build intel_nuc_led"
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS bcm_sta intel_nuc_led"
# build and install driver addons (yes / no)
DRIVER_ADDONS_SUPPORT="yes"
# driver addons to install:
# for a list of additinoal drivers see packages/linux-driver-addons
# Space separated list is supported,
DRIVER_ADDONS="crazycat digital_devices hauppauge"

View File

@ -160,8 +160,16 @@ fi
# for a list of additinoal drivers see packages/linux-drivers
# Space separated list is supported,
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS media_build rpi-cirrus-config"
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS rpi-cirrus-config"
if [ "$DEVICE" = "Slice" -o "$DEVICE" = "Slice3" ]; then
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS slice-drivers"
fi
# build and install driver addons (yes / no)
DRIVER_ADDONS_SUPPORT="yes"
# driver addons to install:
# for a list of additinoal drivers see packages/linux-driver-addons
# Space separated list is supported,
DRIVER_ADDONS="crazycat hauppauge"

127
tools/mkpkg/mkpkg_pvr Executable file
View File

@ -0,0 +1,127 @@
#!/bin/sh
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
# set media_build version you want to use
if [ -z "$1" ]; then
echo "Usage: $0 crazycat | tbs"
exit 0
else
MEDIA_BUILD_PROJECT="$1"
fi
# name of the package
DVB_MKPKG_FOLDER="$(pwd)"
# crazycat
if [ "$MEDIA_BUILD_PROJECT" = "crazycat" ]; then
MEDIA_BUILD_URL="https://bitbucket.org/CrazyCat/media_build.git"
MEDIA_TREE_URL="https://github.com/crazycat69/linux_media.git"
MEDIA_TREE_BRANCH="latest"
MEDIA_BUILD_NAME="crazycat"
# tbs oss
elif [ "$MEDIA_BUILD_PROJECT" = "tbs" ]; then
MEDIA_BUILD_URL="https://github.com/tbsdtv/media_build.git"
MEDIA_TREE_URL="https://github.com/tbsdtv/linux_media.git"
MEDIA_TREE_BRANCH="latest"
MEDIA_BUILD_NAME="tbs"
# exit
else
echo "exit: no valid project"
exit 0
fi
# remove old files
echo "removing old sources ..."
rm -rf $MEDIA_BUILD_NAME*/
################################################################################
# media_build dl
echo "getting media_build sources ..."
if [ ! -d media_build.git ]; then
git clone $MEDIA_BUILD_URL media_build/
fi
#get log
cd media_build/
git pull
git checkout $MEDIA_BUILD_HASH
GIT_LOG_MEDIA_BUILD=`git log --pretty=oneline -n1`
cd $DVB_MKPKG_FOLDER/
# media_tree dl
echo "getting sources ..."
if [ ! -d linux_media.git ]; then
git clone --depth=1 $MEDIA_TREE_URL -b $MEDIA_TREE_BRANCH media_tree
fi
#get log
cd media_tree/
git pull
GIT_LOG_MEDIA_TREE=`git log --pretty=oneline -n1`
GIT_REV=`git log -n1 --pretty=format:"%ad" --date=short`
# hack/workaround for borked upstream kernel/media_build
# without removing atomisp there a lot additional includes that
# slowdown build process after modpost from 3min to 6min
# even if atomisp is disabled via kernel.conf
rm -rf drivers/staging/media/atomisp
sed -i 's|^.*drivers/staging/media/atomisp.*$||' $DVB_MKPKG_FOLDER/media_tree/drivers/staging/media/Kconfig
cd $DVB_MKPKG_FOLDER/
################################################################################
# collecting files from media_tree
echo "create media_tree tar"
cd media_build/linux
make tar DIR="$DVB_MKPKG_FOLDER/media_tree/"
cd $DVB_MKPKG_FOLDER
# cleanup
rm -rf media_tree/
rm -rf media_build/.git/
# rename buildfolder
mv media_build/ $MEDIA_BUILD_NAME-$GIT_REV/
# log used versions into LE_versions
echo "package include: $MEDIA_BUILD_NAME\n
media_build commit: $GIT_LOG_MEDIA_BUILD
media_build url: $MEDIA_BUILD_URL
\n
media_tree commit: $GIT_LOG_MEDIA_TREE
media_tree url: $MEDIA_TREE_URL
\n
package date: $(date +%F_%H:%M:%S)" > $MEDIA_BUILD_NAME-$GIT_REV/LE_versions
################################################################################
# pack sources
echo "packing sources ..."
tar cvJf $MEDIA_BUILD_NAME-$GIT_REV.tar.xz $MEDIA_BUILD_NAME-$GIT_REV
echo "remove temporary sourcedir ..."
rm -rf $MEDIA_BUILD_NAME-$GIT_REV