diff --git a/packages/linux-driver-addons/dvb/crazycat/config/generic.config b/packages/linux-driver-addons/dvb/crazycat/config/generic.config deleted file mode 100644 index cb8f5ae5ca..0000000000 --- a/packages/linux-driver-addons/dvb/crazycat/config/generic.config +++ /dev/null @@ -1,679 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# V4L/DVB menu -# -# CONFIG_ARCH_STI is not set -# CONFIG_TI_ST is not set -CONFIG_HAVE_CLK=y -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_VIRT_TO_BUS=y -CONFIG_LEDS_CLASS=y -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -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_GENERIC_ALLOCATOR 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_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_BITREVERSE=y -CONFIG_FONT_SUPPORT=y -CONFIG_I2C=y -# CONFIG_MIPS 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 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_CEC_SUPPORT is not set -# CONFIG_MEDIA_CONTROLLER is not set -CONFIG_VIDEO_DEV=m -CONFIG_VIDEO_V4L2=m -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -CONFIG_VIDEO_TUNER=m -CONFIG_V4L2_FWNODE=m -CONFIG_VIDEOBUF_GEN=m -CONFIG_VIDEOBUF_DMA_SG=m -CONFIG_VIDEOBUF_VMALLOC=m -CONFIG_VIDEOBUF_DVB=m -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_MEMOPS=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_VIDEOBUF2_DMA_SG=m -CONFIG_VIDEOBUF2_DVB=m -CONFIG_DVB_CORE=m -CONFIG_DVB_NET=y -CONFIG_TTPCI_EEPROM=m -CONFIG_DVB_MAX_ADAPTERS=64 -CONFIG_DVB_DYNAMIC_MINORS=y -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set - -# -# Media drivers -# -CONFIG_MEDIA_USB_SUPPORT=y - -# -# Analog TV USB devices -# -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_PVRUSB2_SYSFS=y -CONFIG_VIDEO_PVRUSB2_DVB=y -# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_USBVISION=m -CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_STK1160=m -CONFIG_VIDEO_GO7007=m -CONFIG_VIDEO_GO7007_USB=m -CONFIG_VIDEO_GO7007_LOADER=m -CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m - -# -# Analog/digital TV USB devices -# -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_AU0828_V4L2=y -CONFIG_VIDEO_AU0828_RC=y -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_RC=y -# CONFIG_VIDEO_CX231XX_ALSA is not set -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_VIDEO_TM6000=m -# CONFIG_VIDEO_TM6000_ALSA is not set -CONFIG_VIDEO_TM6000_DVB=m - -# -# Digital TV USB devices -# -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_DIB3000MC=m -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_FRIIO=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_TBSQBOX=m -CONFIG_DVB_USB_TBSQBOX2=m -CONFIG_DVB_USB_TBSQBOX22=m -CONFIG_DVB_USB_TBS5922SE=m -CONFIG_DVB_USB_TBSQBOXS2=m -CONFIG_DVB_USB_TBSQBOX2CI=m -CONFIG_DVB_USB_TBS5925=m -CONFIG_DVB_USB_TBS5880=m -CONFIG_DVB_USB_TBS5220=m -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 -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_EC168=m -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_ZD1301=m -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m -CONFIG_SMS_USB_DRV=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set -CONFIG_DVB_AS102=m - -# -# Webcam, TV (analog/digital) USB devices -# -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -# CONFIG_VIDEO_EM28XX_ALSA is not set -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=m -CONFIG_MEDIA_PCI_SUPPORT=y - -# -# Media capture/analog TV support -# -# CONFIG_VIDEO_IVTV is not set -# CONFIG_VIDEO_HEXIUM_GEMINI is not set -# CONFIG_VIDEO_HEXIUM_ORION is not set -# CONFIG_VIDEO_MXB is not set -# CONFIG_VIDEO_DT3155 is not set - -# -# Media capture/analog/hybrid TV support -# -# CONFIG_VIDEO_CX18 is not set -CONFIG_VIDEO_CX23885=m -CONFIG_MEDIA_ALTERA_CI=m -CONFIG_VIDEO_CX25821=m -# CONFIG_VIDEO_CX25821_ALSA is not set -CONFIG_VIDEO_CX88=m -# CONFIG_VIDEO_CX88_ALSA is not set -# CONFIG_VIDEO_CX88_BLACKBIRD is not set -CONFIG_VIDEO_CX88_DVB=m -CONFIG_VIDEO_CX88_ENABLE_VP3054=y -CONFIG_VIDEO_CX88_VP3054=m -CONFIG_VIDEO_CX88_MPEG=m -CONFIG_VIDEO_SAA7134=m -# CONFIG_VIDEO_SAA7134_ALSA is not set -CONFIG_VIDEO_SAA7134_RC=y -CONFIG_VIDEO_SAA7134_DVB=m -CONFIG_VIDEO_SAA7134_GO7007=m -CONFIG_VIDEO_SAA7164=m -CONFIG_SAA716X_SUPPORT=y -CONFIG_SAA716X_CORE=m -CONFIG_DVB_SAA716X_BUDGET=m -CONFIG_DVB_SAA716X_HYBRID=m -CONFIG_DVB_SAA716X_FF=m - -# -# Media digital TV PCI Adapters -# -CONFIG_DVB_AV7110_IR=y -CONFIG_DVB_AV7110=m -# CONFIG_DVB_AV7110_OSD is not set -CONFIG_DVB_BUDGET_CORE=m -CONFIG_DVB_BUDGET=m -CONFIG_DVB_BUDGET_CI=m -CONFIG_DVB_BUDGET_AV=m -CONFIG_DVB_BUDGET_PATCH=m -CONFIG_DVB_B2C2_FLEXCOP_PCI=m -# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set -CONFIG_DVB_PLUTO2=m -CONFIG_DVB_DM1105=m -CONFIG_DVB_PT1=m -CONFIG_DVB_PT3=m -CONFIG_MANTIS_CORE=m -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_DVB_PLATFORM_DRIVERS 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_MEDIA_COMMON_OPTIONS=y - -# -# common driver options -# -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_CYPRESS_FIRMWARE=m -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_VIDEO_SAA7146=m -CONFIG_VIDEO_SAA7146_VV=m -CONFIG_SMS_SIANO_MDTV=m -CONFIG_SMS_SIANO_RC=y - -# -# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) -# -CONFIG_MEDIA_SUBDRV_AUTOSELECT=y -CONFIG_MEDIA_ATTACH=y -CONFIG_VIDEO_IR_I2C=m - -# -# Audio decoders, processors and mixers -# -CONFIG_VIDEO_MSP3400=m -CONFIG_VIDEO_CS3308=m -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_WM8775=m -CONFIG_VIDEO_SONY_BTF_MPX=m - -# -# RDS decoders -# -CONFIG_VIDEO_SAA6588=m - -# -# Video decoders -# -CONFIG_VIDEO_SAA711X=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TW2804=m -CONFIG_VIDEO_TW9903=m -CONFIG_VIDEO_TW9906=m - -# -# Video and audio decoders -# -CONFIG_VIDEO_CX25840=m - -# -# Video encoders -# - -# -# Camera sensor devices -# - -# -# Flash devices -# - -# -# Video improvement chips -# - -# -# Audio/Video compression chips -# -CONFIG_VIDEO_SAA6752HS=m - -# -# SDR tuner chips -# - -# -# Miscellaneous helper chips -# - -# -# Sensors used on soc_camera driver -# -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 -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_M88RS6000T=m -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_IT913X=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_MXL301RF=m -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_AV201X=m -CONFIG_MEDIA_TUNER_STV6120=m -CONFIG_MEDIA_TUNER_R848=m - -# -# Multistandard (satellite) frontends -# -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 - -# -# Multistandard (cable + terrestrial) frontends -# -CONFIG_DVB_DRXK=m -CONFIG_DVB_TDA18271C2DD=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m - -# -# DVB-S (satellite) frontends -# -CONFIG_DVB_CX24123=m -CONFIG_DVB_MT312=m -CONFIG_DVB_ZL10036=m -CONFIG_DVB_ZL10039=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8261=m -CONFIG_DVB_VES1X93=m -CONFIG_DVB_TUNER_ITD1000=m -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TUA6100=m -CONFIG_DVB_CX24116=m -CONFIG_DVB_CX24117=m -CONFIG_DVB_CX24120=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_TS2020=m -CONFIG_DVB_DS3000=m -CONFIG_DVB_DS3K=m -CONFIG_DVB_MB86A16=m -CONFIG_DVB_TDA10071=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_SP8870=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_DRXD=m -CONFIG_DVB_L64781=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_MT352=m -CONFIG_DVB_ZL10353=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -CONFIG_DVB_TDA10048=m -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 -CONFIG_DVB_AS102_FE=m -CONFIG_DVB_ZD1301_DEMOD=m -CONFIG_DVB_GP8PSK_FE=m - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_VES1820=m -CONFIG_DVB_TDA10021=m -CONFIG_DVB_TDA10023=m -CONFIG_DVB_STV0297=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_NXT200X=m -CONFIG_DVB_OR51132=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_S5H1409=m -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_S921=m -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# -CONFIG_DVB_TC90522=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -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 -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6422=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_A8293=m -CONFIG_DVB_SP2=m -CONFIG_DVB_LGS8GXX=m -CONFIG_DVB_ATBM8830=m -CONFIG_DVB_TDA665x=m -CONFIG_DVB_IX2505V=m -CONFIG_DVB_M88RS2000=m -CONFIG_DVB_AF9033=m -CONFIG_DVB_TAS2101=m -CONFIG_DVB_AVL6882=m -CONFIG_DVB_STV091X=m -CONFIG_DVB_MXL58X=m -CONFIG_DVB_SI2183=m - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set -# CONFIG_AUDIO_SUPPORT is not set -CONFIG_FRAME_VECTOR=m -CONFIG_MISC_DEVICES=y - -# -# Altera FPGA firmware download module -# -CONFIG_ALTERA_STAPL=m -# CONFIG_STAGING is not set diff --git a/packages/linux-driver-addons/dvb/crazycat/config/usb.config b/packages/linux-driver-addons/dvb/crazycat/config/usb.config deleted file mode 100644 index 7fd64db18c..0000000000 --- a/packages/linux-driver-addons/dvb/crazycat/config/usb.config +++ /dev/null @@ -1,599 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# V4L/DVB menu -# -# CONFIG_ARCH_STI is not set -# CONFIG_TI_ST is not set -CONFIG_HAVE_CLK=y -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_VIRT_TO_BUS=y -CONFIG_LEDS_CLASS=y -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -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_GENERIC_ALLOCATOR 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_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_BITREVERSE=y -CONFIG_FONT_SUPPORT=y -CONFIG_I2C=y -# CONFIG_MIPS 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_MESON=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 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_CEC_SUPPORT is not set -# CONFIG_MEDIA_CONTROLLER is not set -CONFIG_VIDEO_DEV=m -CONFIG_VIDEO_V4L2=m -# CONFIG_VIDEO_ADV_DEBUG is not set -# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -CONFIG_VIDEO_TUNER=m -CONFIG_V4L2_FWNODE=m -CONFIG_VIDEOBUF_GEN=m -CONFIG_VIDEOBUF_VMALLOC=m -CONFIG_VIDEOBUF_RESOURCE=m -CONFIG_VIDEOBUF_DVB=m -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_MEMOPS=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_DVB_CORE=m -CONFIG_DVB_NET=y -CONFIG_TTPCI_EEPROM=m -CONFIG_DVB_MAX_ADAPTERS=64 -CONFIG_DVB_DYNAMIC_MINORS=y -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set - -# -# Media drivers -# -CONFIG_MEDIA_USB_SUPPORT=y - -# -# Analog TV USB devices -# -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_PVRUSB2_SYSFS=y -CONFIG_VIDEO_PVRUSB2_DVB=y -# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_USBVISION=m -CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_STK1160=m -CONFIG_VIDEO_GO7007=m -CONFIG_VIDEO_GO7007_USB=m -CONFIG_VIDEO_GO7007_LOADER=m -CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m - -# -# Analog/digital TV USB devices -# -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_AU0828_V4L2=y -CONFIG_VIDEO_AU0828_RC=y -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_RC=y -# CONFIG_VIDEO_CX231XX_ALSA is not set -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_VIDEO_TM6000=m -# CONFIG_VIDEO_TM6000_ALSA is not set -CONFIG_VIDEO_TM6000_DVB=m - -# -# Digital TV USB devices -# -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_DIB3000MC=m -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_FRIIO=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_TBSQBOX=m -CONFIG_DVB_USB_TBSQBOX2=m -CONFIG_DVB_USB_TBSQBOX22=m -CONFIG_DVB_USB_TBS5922SE=m -CONFIG_DVB_USB_TBSQBOXS2=m -CONFIG_DVB_USB_TBSQBOX2CI=m -CONFIG_DVB_USB_TBS5925=m -CONFIG_DVB_USB_TBS5880=m -CONFIG_DVB_USB_TBS5220=m -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 -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_EC168=m -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_ZD1301=m -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m -CONFIG_SMS_USB_DRV=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set -CONFIG_DVB_AS102=m - -# -# Webcam, TV (analog/digital) USB devices -# -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -# CONFIG_VIDEO_EM28XX_ALSA is not set -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=m -# CONFIG_MEDIA_PCI_SUPPORT is not set -# CONFIG_DVB_PLATFORM_DRIVERS 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_MEDIA_COMMON_OPTIONS=y - -# -# common driver options -# -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_CYPRESS_FIRMWARE=m -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_SMS_SIANO_MDTV=m -CONFIG_SMS_SIANO_RC=y - -# -# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) -# -CONFIG_MEDIA_SUBDRV_AUTOSELECT=y -CONFIG_MEDIA_ATTACH=y -CONFIG_VIDEO_IR_I2C=m - -# -# Audio decoders, processors and mixers -# -CONFIG_VIDEO_MSP3400=m -CONFIG_VIDEO_CS53L32A=m -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_WM8775=m -CONFIG_VIDEO_SONY_BTF_MPX=m - -# -# RDS decoders -# - -# -# Video decoders -# -CONFIG_VIDEO_SAA711X=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TW2804=m -CONFIG_VIDEO_TW9903=m -CONFIG_VIDEO_TW9906=m - -# -# Video and audio decoders -# -CONFIG_VIDEO_CX25840=m - -# -# Video encoders -# - -# -# Camera sensor devices -# - -# -# Flash devices -# - -# -# Video improvement chips -# - -# -# Audio/Video compression chips -# - -# -# SDR tuner chips -# - -# -# Miscellaneous helper chips -# - -# -# Sensors used on soc_camera driver -# -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 -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_IT913X=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_AV201X=m -CONFIG_MEDIA_TUNER_STV6120=m -CONFIG_MEDIA_TUNER_R848=m - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -CONFIG_DVB_STV6110x=m -CONFIG_DVB_M88DS3103=m - -# -# Multistandard (cable + terrestrial) frontends -# -CONFIG_DVB_DRXK=m -CONFIG_DVB_TDA18271C2DD=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m - -# -# DVB-S (satellite) frontends -# -CONFIG_DVB_CX24123=m -CONFIG_DVB_MT312=m -CONFIG_DVB_ZL10039=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TUNER_ITD1000=m -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_CX24116=m -CONFIG_DVB_CX24120=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_TS2020=m -CONFIG_DVB_DS3000=m -CONFIG_DVB_DS3K=m -CONFIG_DVB_TDA10071=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_DRXD=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_MT352=m -CONFIG_DVB_ZL10353=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -CONFIG_DVB_TDA10048=m -CONFIG_DVB_AF9013=m -CONFIG_DVB_EC100=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_RTL2830=m -CONFIG_DVB_RTL2832=m -CONFIG_DVB_SI2168=m -CONFIG_DVB_AS102_FE=m -CONFIG_DVB_ZD1301_DEMOD=m -CONFIG_DVB_GP8PSK_FE=m - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_VES1820=m -CONFIG_DVB_TDA10023=m -CONFIG_DVB_STV0297=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_NXT200X=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_S5H1409=m -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_S921=m -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# -CONFIG_DVB_TC90522=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -CONFIG_DVB_TUNER_DIB0090=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_DRX39XYJ=m -CONFIG_DVB_LNBP21=m -CONFIG_DVB_LNBP22=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_A8293=m -CONFIG_DVB_SP2=m -CONFIG_DVB_LGS8GXX=m -CONFIG_DVB_ATBM8830=m -CONFIG_DVB_IX2505V=m -CONFIG_DVB_M88RS2000=m -CONFIG_DVB_AF9033=m -CONFIG_DVB_TAS2101=m -CONFIG_DVB_AVL6882=m -CONFIG_DVB_STV091X=m -CONFIG_DVB_SI2183=m - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set - -# -# V4L2 Video Support -# -CONFIG_V4L_AMLOGIC_VIDEO=m -# CONFIG_V4L_AMLOGIC_VIDEO2 is not set -# CONFIG_AUDIO_SUPPORT is not set -CONFIG_FRAME_VECTOR=m -CONFIG_MISC_DEVICES=y - -# -# Altera FPGA firmware download module -# -CONFIG_ALTERA_STAPL=m -# CONFIG_STAGING is not set - -# -# WeTek Play driver -# -CONFIG_WETEK=m diff --git a/packages/linux-driver-addons/dvb/crazycat/package.mk b/packages/linux-driver-addons/dvb/crazycat/package.mk index 3aeda56b03..676a9dcab8 100644 --- a/packages/linux-driver-addons/dvb/crazycat/package.mk +++ b/packages/linux-driver-addons/dvb/crazycat/package.mk @@ -2,46 +2,35 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="crazycat" -PKG_VERSION="2017-12-06" -PKG_SHA256="779c7d42e5fd4dfac8f53654ce8af467d22a81b6c0b21e24f14aaaed033c6eb1" +PKG_VERSION="835dc72da3ee63df7f4057bd0507887454c005d1" +PKG_SHA256="3d68d368a9eda15688c6686caa854a045a753740ec93553d80a4bcfc14c2950a" PKG_ARCH="any" PKG_LICENSE="GPL" -PKG_SITE="https://github.com/crazycat69/linux_media" -PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" -PKG_DEPENDS_TARGET="toolchain linux" -PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SITE="https://bitbucket.org/CrazyCat/media_build" +PKG_URL="https://bitbucket.org/CrazyCat/media_build/get/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="CrazyCat-media_build-*" +PKG_DEPENDS_TARGET="toolchain linux media_tree_cc" +PKG_NEED_UNPACK="$LINUX_DEPENDS media_tree_cc" PKG_SECTION="driver.dvb" -PKG_LONGDESC="DVB driver for TBS cards with CrazyCats additions." +PKG_LONGDESC="DVB driver for TBS cards with CrazyCats additions" PKG_IS_ADDON="embedded" PKG_IS_KERNEL_PKG="yes" PKG_ADDON_IS_STANDALONE="yes" -PKG_ADDON_NAME="DVB drivers for TBS (CrazyCat)" +PKG_ADDON_NAME="DVB drivers for TBS" PKG_ADDON_TYPE="xbmc.service" PKG_ADDON_VERSION="${ADDON_VERSION}.${PKG_REV}" -if [ $LINUX = "rockchip-4.4" ]; then - PKG_PATCH_DIRS="rockchip" -fi - pre_make_target() { export KERNEL_VER=$(get_module_dir) export LDFLAGS="" } make_target() { - kernel_make SRCDIR=$(kernel_path) untar + cp -RP $(get_build_dir media_tree_cc)/* $PKG_BUILD/linux - # copy config file - if [ "$PROJECT" = Generic ]; then - if [ -f $PKG_DIR/config/generic.config ]; then - cp $PKG_DIR/config/generic.config v4l/.config - fi - else - if [ -f $PKG_DIR/config/usb.config ]; then - cp $PKG_DIR/config/usb.config v4l/.config - fi - fi + # make staging config (all + experimental) + kernel_make VER=$KERNEL_VER SRCDIR=$(kernel_path) stagingconfig # hack to workaround media_build bug if [ "$PROJECT" = Rockchip ]; then diff --git a/packages/linux-driver-addons/dvb/crazycat/patches/driver.dvb.crazycat-02-add-to-backports.patch b/packages/linux-driver-addons/dvb/crazycat/patches/driver.dvb.crazycat-02-add-to-backports.patch deleted file mode 100644 index 8eec833bde..0000000000 --- a/packages/linux-driver-addons/dvb/crazycat/patches/driver.dvb.crazycat-02-add-to-backports.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- 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 diff --git a/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-202-lnbp22_patch_for_more_power_if_rotor.patch b/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-202-lnbp22_patch_for_more_power_if_rotor.patch deleted file mode 100755 index f4d48b9739..0000000000 --- a/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-202-lnbp22_patch_for_more_power_if_rotor.patch +++ /dev/null @@ -1,165 +0,0 @@ -This patch is from the original driver author and allows minimal power on time, -so that capacitors of secondary equipment like dish motors can be properly loaded and equipment properly initialized -see https://www.spinics.net/lists/linux-media/msg38226.html -and https://github.com/LibreELEC/LibreELEC.tv/pull/1118 - -tested with TT S2-3650CI and a HH90 rotor - - ---- a/drivers/media/dvb-frontends/lnbp22.c -+++ b/drivers/media/dvb-frontends/lnbp22.c -@@ -48,47 +48,95 @@ struct lnbp22 { - struct i2c_adapter *i2c; - }; - -+static int lnbp22_read_config(struct dvb_frontend *fe, u8 *config) { -+ struct lnbp22 *lnbp22 = (struct lnbp22 *) fe->sec_priv; -+ struct i2c_msg msg = { .addr = 0x08, .flags = I2C_M_RD, -+ .buf = (char*)config, -+ .len = sizeof(lnbp22->config) }; -+ -+ if (i2c_transfer(lnbp22->i2c, &msg, 1) == 1) { -+ dprintk(2, "%s: %02X %02X %02X %02X\n", __FUNCTION__, -+ config[0], config[1], config[2], config[3]); -+ return 0; -+ } -+ return -EIO; -+} -+ -+static int lnbp22_write_config(struct dvb_frontend *fe, u8 *config) { -+ struct lnbp22 *lnbp22 = (struct lnbp22 *) fe->sec_priv; -+ struct i2c_msg msg = { .addr = 0x08, .flags = 0, -+ .buf = (char*)config, -+ .len = sizeof(lnbp22->config) }; -+ -+ if (i2c_transfer(lnbp22->i2c, &msg, 1) == 1) { -+ dprintk(2, "%s: %02X %02X %02X %02X\n", __FUNCTION__, -+ config[0], config[1], config[2], config[3]); -+ return 0; -+ } -+ return -EIO; -+} -+ - static int lnbp22_set_voltage(struct dvb_frontend *fe, - enum fe_sec_voltage voltage) - { - struct lnbp22 *lnbp22 = (struct lnbp22 *)fe->sec_priv; -- struct i2c_msg msg = { -- .addr = 0x08, -- .flags = 0, -- .buf = (char *)&lnbp22->config, -- .len = sizeof(lnbp22->config), -- }; -+ int status; - - dprintk(1, "%s: %d (18V=%d 13V=%d)\n", __func__, voltage, - SEC_VOLTAGE_18, SEC_VOLTAGE_13); - -- lnbp22->config[3] = 0x60; /* Power down */ - switch (voltage) { -- case SEC_VOLTAGE_OFF: -- break; -- case SEC_VOLTAGE_13: -- lnbp22->config[3] |= LNBP22_EN; -- break; -- case SEC_VOLTAGE_18: -- lnbp22->config[3] |= (LNBP22_EN | LNBP22_VSEL); -- break; -- default: -- return -EINVAL; -+ case SEC_VOLTAGE_OFF: -+ lnbp22->config[3] &= ~LNBP22_EN; -+ return lnbp22_write_config(fe, lnbp22->config); -+ case SEC_VOLTAGE_13: -+ lnbp22->config[3] |= LNBP22_EN; -+ lnbp22->config[3] &= ~LNBP22_VSEL; -+ break; -+ case SEC_VOLTAGE_18: -+ lnbp22->config[3] |= LNBP22_EN|LNBP22_VSEL; -+ break; -+ default: -+ return -EINVAL; } -+ -+ status = lnbp22_write_config(fe, lnbp22->config); -+ if( status == 0 ) { -+ u8 config[4]; -+ int retries = 20; -+ -+ /* byte 0: status -+ bit 3: open loop -+ bit 2: in progress/not ready -+ bit 1: over current limit -+ bit 0: over voltage limit */ -+ -+ /* wait up to 2 seconds for voltage to stablize. -+ It is important to wait that long, especially if there is a -+ rotor to power on, as DC/DC converter capacitors can take a -+ while to charge up and could cause a temporary overload */ -+ do -+ { -+ msleep(50); -+ status = lnbp22_read_config(fe, config); -+ if( status < 0 ) -+ return status; -+ } -+ while( (config[0] & (1<<2)) && retries-- ); -+ -+ dprintk(1, "%s status=0x%02X\n", __FUNCTION__, config[0]); -+ -+ if( retries < 0 ) -+ return -EAGAIN; /* temporary overload ? */ -+ -+ if( config[0] & (1<<3) ) -+ return -ENOLINK; /* open loop */ - } -- -- dprintk(1, "%s: 0x%02x)\n", __func__, lnbp22->config[3]); -- return (i2c_transfer(lnbp22->i2c, &msg, 1) == 1) ? 0 : -EIO; -+ return status; - } - - static int lnbp22_enable_high_lnb_voltage(struct dvb_frontend *fe, long arg) - { - struct lnbp22 *lnbp22 = (struct lnbp22 *) fe->sec_priv; -- struct i2c_msg msg = { -- .addr = 0x08, -- .flags = 0, -- .buf = (char *)&lnbp22->config, -- .len = sizeof(lnbp22->config), -- }; - - dprintk(1, "%s: %d\n", __func__, (int)arg); - if (arg) -@@ -96,7 +144,7 @@ static int lnbp22_enable_high_lnb_voltage(struct dvb_frontend *fe, long arg) - else - lnbp22->config[3] &= ~LNBP22_LLC; - -- return (i2c_transfer(lnbp22->i2c, &msg, 1) == 1) ? 0 : -EIO; -+ return lnbp22_write_config(fe, lnbp22->config); - } - - static void lnbp22_release(struct dvb_frontend *fe) -@@ -118,20 +166,14 @@ struct dvb_frontend *lnbp22_attach(struct dvb_frontend *fe, - return NULL; - - /* default configuration */ -- lnbp22->config[0] = 0x00; /* ? */ -+ lnbp22->config[0] = 0x00; /* status */ - lnbp22->config[1] = 0x28; /* ? */ -- lnbp22->config[2] = 0x48; /* ? */ -+ lnbp22->config[2] = 0x49; /* ? */ - lnbp22->config[3] = 0x60; /* Power down */ - lnbp22->i2c = i2c; - fe->sec_priv = lnbp22; - -- /* detect if it is present or not */ -- if (lnbp22_set_voltage(fe, SEC_VOLTAGE_OFF)) { -- dprintk(0, "%s LNBP22 not found\n", __func__); -- kfree(lnbp22); -- fe->sec_priv = NULL; -- return NULL; -- } -+ lnbp22_set_voltage(fe, SEC_VOLTAGE_OFF); - - /* install release callback */ - fe->ops.release_sec = lnbp22_release; diff --git a/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-220-Xbox-One-DVB-T2-stick-support.patch b/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-220-Xbox-One-DVB-T2-stick-support.patch deleted file mode 100644 index 615c8d8cfb..0000000000 --- a/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-220-Xbox-One-DVB-T2-stick-support.patch +++ /dev/null @@ -1,1386 +0,0 @@ -From b8ca04e7037433d13b6a526123d16493eff74bd0 Mon Sep 17 00:00:00 2001 -From: Olli Salonen -Date: Thu, 23 Nov 2017 08:36:10 +0200 -Subject: Xbox ONE DVB-C/T/T2 USB Tuner support - -diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h -index 7678319..e1a043b 100644 ---- a/drivers/media/dvb-core/dvb-usb-ids.h -+++ b/drivers/media/dvb-core/dvb-usb-ids.h -@@ -80,6 +80,7 @@ - #define USB_VID_AZUREWAVE 0x13d3 - #define USB_VID_TECHNISAT 0x14f7 - #define USB_VID_HAMA 0x147f -+#define USB_VID_MICROSOFT 0x045e - - /* Product IDs */ - #define USB_PID_ADSTECH_USB2_COLD 0xa333 -@@ -418,4 +419,5 @@ - #define USB_PID_WINTV_SOLOHD 0x0264 - #define USB_PID_EVOLVEO_XTRATV_STICK 0xa115 - #define USB_PID_HAMA_DVBT_HYBRID 0x2758 -+#define USB_PID_XBOX_ONE_TUNER 0x02d5 - #endif -diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig -index 1dc7bb6..0a714ba 100644 ---- a/drivers/media/tuners/Kconfig -+++ b/drivers/media/tuners/Kconfig -@@ -26,6 +26,13 @@ config MEDIA_TUNER_SIMPLE - help - Say Y here to include support for various simple tuners. - -+config MEDIA_TUNER_TDA18250 -+ tristate "NXP TDA18250 silicon tuner" -+ depends on MEDIA_SUPPORT && I2C -+ default m if !MEDIA_SUBDRV_AUTOSELECT -+ help -+ Say Y here to include support for TDA18250 tuner. -+ - config MEDIA_TUNER_TDA8290 - tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo" - depends on MEDIA_SUPPORT && I2C -diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile -index ba382f9..aee8801 100644 ---- a/drivers/media/tuners/Makefile -+++ b/drivers/media/tuners/Makefile -@@ -45,6 +45,7 @@ obj-$(CONFIG_MEDIA_TUNER_M88RS6000T) += m88rs6000t.o - obj-$(CONFIG_MEDIA_TUNER_AV201X) += av201x.o - obj-$(CONFIG_MEDIA_TUNER_R848) += r848.o - obj-$(CONFIG_MEDIA_TUNER_STV6120) += stv6120.o -+obj-$(CONFIG_MEDIA_TUNER_TDA18250) += tda18250.o - - ccflags-y += -I$(srctree)/drivers/media/dvb-core - ccflags-y += -I$(srctree)/drivers/media/dvb-frontends -diff --git a/drivers/media/tuners/tda18250.c b/drivers/media/tuners/tda18250.c -new file mode 100644 -index 0000000..20d12b0 ---- /dev/null -+++ b/drivers/media/tuners/tda18250.c -@@ -0,0 +1,902 @@ -+/* -+ * NXP TDA18250 silicon tuner driver -+ * -+ * Copyright (C) 2017 Olli Salonen -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ */ -+ -+#include "tda18250_priv.h" -+#include -+ -+static const struct dvb_tuner_ops tda18250_ops; -+ -+static int tda18250_power_control(struct dvb_frontend *fe, -+ unsigned int power_state) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ int ret; -+ unsigned int utmp; -+ -+ dev_dbg(&client->dev, "power state: %d", power_state); -+ -+ switch (power_state) { -+ case TDA18250_POWER_NORMAL: -+ ret = regmap_write_bits(dev->regmap, R06_POWER2, 0x07, 0x00); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, R25_REF, 0xc0, 0xc0); -+ if (ret) -+ goto err; -+ break; -+ case TDA18250_POWER_STANDBY: -+ if (dev->loopthrough) { -+ ret = regmap_write_bits(dev->regmap, -+ R25_REF, 0xc0, 0x80); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, -+ R06_POWER2, 0x07, 0x02); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, -+ R10_LT1, 0x80, 0x00); -+ if (ret) -+ goto err; -+ } else { -+ ret = regmap_write_bits(dev->regmap, -+ R25_REF, 0xc0, 0x80); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, -+ R06_POWER2, 0x07, 0x01); -+ if (ret) -+ goto err; -+ ret = regmap_read(dev->regmap, -+ R0D_AGC12, &utmp); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, -+ R0D_AGC12, 0x03, 0x03); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, -+ R10_LT1, 0x80, 0x80); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, -+ R0D_AGC12, 0x03, utmp & 0x03); -+ if (ret) -+ goto err; -+ } -+ break; -+ default: -+ ret = -EINVAL; -+ goto err; -+ } -+ -+ return 0; -+err: -+ return ret; -+} -+ -+static int tda18250_wait_for_irq(struct dvb_frontend *fe, -+ int maxwait, int step, u8 irq) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ int ret; -+ unsigned long timeout; -+ bool triggered; -+ unsigned int utmp; -+ -+ triggered = false; -+ timeout = jiffies + msecs_to_jiffies(maxwait); -+ while (!time_after(jiffies, timeout)) { -+ // check for the IRQ -+ ret = regmap_read(dev->regmap, R08_IRQ1, &utmp); -+ if (ret) -+ goto err; -+ if ((utmp & irq) == irq) { -+ triggered = true; -+ break; -+ } -+ msleep(step); -+ } -+ -+ dev_dbg(&client->dev, "waited IRQ (0x%02x) %d ms, triggered: %s", irq, -+ jiffies_to_msecs(jiffies) - -+ (jiffies_to_msecs(timeout) - maxwait), -+ triggered ? "true" : "false"); -+ -+ if (!triggered) -+ return -ETIMEDOUT; -+ -+ return 0; -+err: -+ return ret; -+} -+ -+static int tda18250_init(struct dvb_frontend *fe) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ int ret, i; -+ -+ /* default values for various regs */ -+ static const u8 init_regs[][2] = { -+ { R0C_AGC11, 0xc7 }, -+ { R0D_AGC12, 0x5d }, -+ { R0E_AGC13, 0x40 }, -+ { R0F_AGC14, 0x0e }, -+ { R10_LT1, 0x47 }, -+ { R11_LT2, 0x4e }, -+ { R12_AGC21, 0x26 }, -+ { R13_AGC22, 0x60 }, -+ { R18_AGC32, 0x37 }, -+ { R19_AGC33, 0x09 }, -+ { R1A_AGCK, 0x00 }, -+ { R1E_WI_FI, 0x29 }, -+ { R1F_RF_BPF, 0x06 }, -+ { R20_IR_MIX, 0xc6 }, -+ { R21_IF_AGC, 0x00 }, -+ { R2C_PS1, 0x75 }, -+ { R2D_PS2, 0x06 }, -+ { R2E_PS3, 0x07 }, -+ { R30_RSSI2, 0x0e }, -+ { R31_IRQ_CTRL, 0x00 }, -+ { R39_SD5, 0x00 }, -+ { R3B_REGU, 0x55 }, -+ { R3C_RCCAL1, 0xa7 }, -+ { R3F_IRCAL2, 0x85 }, -+ { R40_IRCAL3, 0x87 }, -+ { R41_IRCAL4, 0xc0 }, -+ { R43_PD1, 0x40 }, -+ { R44_PD2, 0xc0 }, -+ { R46_CPUMP, 0x0c }, -+ { R47_LNAPOL, 0x64 }, -+ { R4B_XTALOSC1, 0x30 }, -+ { R59_AGC2_UP2, 0x05 }, -+ { R5B_AGC_AUTO, 0x07 }, -+ { R5C_AGC_DEBUG, 0x00 }, -+ }; -+ -+ /* crystal related regs depend on frequency */ -+ static const u8 xtal_regs[][5] = { -+ /* reg: 4d 4e 4f 50 51 */ -+ [TDA18250_XTAL_FREQ_16MHZ] = { 0x3e, 0x80, 0x50, 0x00, 0x20 }, -+ [TDA18250_XTAL_FREQ_24MHZ] = { 0x5d, 0xc0, 0xec, 0x00, 0x18 }, -+ [TDA18250_XTAL_FREQ_25MHZ] = { 0x61, 0xa8, 0xec, 0x80, 0x19 }, -+ [TDA18250_XTAL_FREQ_27MHZ] = { 0x69, 0x78, 0x8d, 0x80, 0x1b }, -+ [TDA18250_XTAL_FREQ_30MHZ] = { 0x75, 0x30, 0x8f, 0x00, 0x1e }, -+ }; -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ ret = tda18250_power_control(fe, TDA18250_POWER_NORMAL); -+ if (ret) -+ goto err; -+ -+ msleep(20); -+ -+ if (dev->warm) -+ goto warm; -+ -+ /* set initial register values */ -+ for (i = 0; i < ARRAY_SIZE(init_regs); i++) { -+ ret = regmap_write(dev->regmap, init_regs[i][0], -+ init_regs[i][1]); -+ if (ret) -+ goto err; -+ } -+ -+ /* set xtal related regs */ -+ ret = regmap_bulk_write(dev->regmap, R4D_XTALFLX1, -+ xtal_regs[dev->xtal_freq], 5); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R10_LT1, 0x80, -+ dev->loopthrough ? 0x00 : 0x80); -+ if (ret) -+ goto err; -+ -+ /* clear IRQ */ -+ ret = regmap_write(dev->regmap, R0A_IRQ3, TDA18250_IRQ_HW_INIT); -+ if (ret) -+ goto err; -+ -+ /* start HW init */ -+ ret = regmap_write(dev->regmap, R2A_MSM1, 0x70); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write(dev->regmap, R2B_MSM2, 0x01); -+ if (ret) -+ goto err; -+ -+ ret = tda18250_wait_for_irq(fe, 500, 10, TDA18250_IRQ_HW_INIT); -+ if (ret) -+ goto err; -+ -+ /* tuner calibration */ -+ ret = regmap_write(dev->regmap, R2A_MSM1, 0x02); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write(dev->regmap, R2B_MSM2, 0x01); -+ if (ret) -+ goto err; -+ -+ ret = tda18250_wait_for_irq(fe, 500, 10, TDA18250_IRQ_CAL); -+ if (ret) -+ goto err; -+ -+ dev->warm = true; -+ -+warm: -+ /* power up LNA */ -+ ret = regmap_write_bits(dev->regmap, R0C_AGC11, 0x80, 0x00); -+ if (ret) -+ goto err; -+ -+ return 0; -+err: -+ dev_dbg(&client->dev, "failed=%d", ret); -+ return ret; -+} -+ -+static int tda18250_set_agc(struct dvb_frontend *fe) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ struct dtv_frontend_properties *c = &fe->dtv_property_cache; -+ int ret; -+ u8 utmp, utmp2; -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ ret = regmap_write_bits(dev->regmap, R1F_RF_BPF, 0x87, 0x06); -+ if (ret) -+ goto err; -+ -+ utmp = ((c->frequency < 100000000) && -+ ((c->delivery_system == SYS_DVBC_ANNEX_A) || -+ (c->delivery_system == SYS_DVBC_ANNEX_C)) && -+ (c->bandwidth_hz == 6000000)) ? 0x80 : 0x00; -+ ret = regmap_write(dev->regmap, R5A_H3H5, utmp); -+ if (ret) -+ goto err; -+ -+ /* AGC1 */ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ utmp = 4; -+ break; -+ default: /* DVB-C/QAM */ -+ switch (c->bandwidth_hz) { -+ case 6000000: -+ utmp = (c->frequency < 800000000) ? 6 : 4; -+ break; -+ default: /* 7.935 and 8 MHz */ -+ utmp = (c->frequency < 100000000) ? 2 : 3; -+ break; -+ } -+ break; -+ } -+ -+ ret = regmap_write_bits(dev->regmap, R0C_AGC11, 0x07, utmp); -+ if (ret) -+ goto err; -+ -+ /* AGC2 */ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ utmp = (c->frequency < 320000000) ? 20 : 16; -+ utmp2 = (c->frequency < 320000000) ? 22 : 18; -+ break; -+ default: /* DVB-C/QAM */ -+ switch (c->bandwidth_hz) { -+ case 6000000: -+ if (c->frequency < 600000000) { -+ utmp = 18; -+ utmp2 = 22; -+ } else if (c->frequency < 800000000) { -+ utmp = 16; -+ utmp2 = 20; -+ } else { -+ utmp = 14; -+ utmp2 = 16; -+ } -+ break; -+ default: /* 7.935 and 8 MHz */ -+ utmp = (c->frequency < 320000000) ? 16 : 18; -+ utmp2 = (c->frequency < 320000000) ? 18 : 20; -+ break; -+ } -+ break; -+ } -+ ret = regmap_write_bits(dev->regmap, R58_AGC2_UP1, 0x1f, utmp2+8); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, R13_AGC22, 0x1f, utmp); -+ if (ret) -+ goto err; -+ ret = regmap_write_bits(dev->regmap, R14_AGC23, 0x1f, utmp2); -+ if (ret) -+ goto err; -+ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ utmp = 98; -+ break; -+ default: /* DVB-C/QAM */ -+ utmp = 90; -+ break; -+ } -+ ret = regmap_write_bits(dev->regmap, R16_AGC25, 0xf8, utmp); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R12_AGC21, 0x60, -+ (c->frequency > 800000000) ? 0x40 : 0x20); -+ if (ret) -+ goto err; -+ -+ /* AGC3 */ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ utmp = (c->frequency < 320000000) ? 5 : 7; -+ utmp2 = (c->frequency < 320000000) ? 10 : 12; -+ break; -+ default: /* DVB-C/QAM */ -+ utmp = 7; -+ utmp2 = 12; -+ break; -+ } -+ ret = regmap_write(dev->regmap, R17_AGC31, (utmp << 4) | utmp2); -+ if (ret) -+ goto err; -+ -+ /* S2D */ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ if (c->bandwidth_hz == 8000000) -+ utmp = 0x04; -+ else -+ utmp = (c->frequency < 320000000) ? 0x04 : 0x02; -+ break; -+ default: /* DVB-C/QAM */ -+ if (c->bandwidth_hz == 6000000) -+ utmp = ((c->frequency > 172544000) && -+ (c->frequency < 320000000)) ? 0x04 : 0x02; -+ else /* 7.935 and 8 MHz */ -+ utmp = ((c->frequency > 320000000) && -+ (c->frequency < 600000000)) ? 0x02 : 0x04; -+ break; -+ } -+ ret = regmap_write_bits(dev->regmap, R20_IR_MIX, 0x06, utmp); -+ if (ret) -+ goto err; -+ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ utmp = 0; -+ break; -+ default: /* DVB-C/QAM */ -+ utmp = (c->frequency < 600000000) ? 0 : 3; -+ break; -+ } -+ ret = regmap_write_bits(dev->regmap, R16_AGC25, 0x03, utmp); -+ if (ret) -+ goto err; -+ -+ utmp = 0x09; -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ if (c->bandwidth_hz == 8000000) -+ utmp = 0x0c; -+ break; -+ default: /* DVB-C/QAM */ -+ utmp = 0x0c; -+ break; -+ } -+ ret = regmap_write_bits(dev->regmap, R0F_AGC14, 0x3f, utmp); -+ if (ret) -+ goto err; -+ -+ return 0; -+err: -+ dev_dbg(&client->dev, "failed=%d", ret); -+ return ret; -+} -+ -+static int tda18250_pll_calc(struct dvb_frontend *fe, u8 *rdiv, -+ u8 *ndiv, u8 *icp) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ struct dtv_frontend_properties *c = &fe->dtv_property_cache; -+ int ret; -+ unsigned int uval, exp, lopd, scale; -+ unsigned long fvco; -+ -+ ret = regmap_read(dev->regmap, R34_MD1, &uval); -+ if (ret) -+ goto err; -+ -+ exp = (uval & 0x70) >> 4; -+ if (exp > 5) -+ exp = 0; -+ lopd = 1 << (exp - 1); -+ scale = uval & 0x0f; -+ fvco = lopd * scale * ((c->frequency / 1000) + dev->if_frequency); -+ -+ switch (dev->xtal_freq) { -+ case TDA18250_XTAL_FREQ_16MHZ: -+ *rdiv = 1; -+ *ndiv = 0; -+ *icp = (fvco < 6622000) ? 0x05 : 0x02; -+ break; -+ case TDA18250_XTAL_FREQ_24MHZ: -+ case TDA18250_XTAL_FREQ_25MHZ: -+ *rdiv = 3; -+ *ndiv = 1; -+ *icp = (fvco < 6622000) ? 0x05 : 0x02; -+ break; -+ case TDA18250_XTAL_FREQ_27MHZ: -+ if (fvco < 6643000) { -+ *rdiv = 2; -+ *ndiv = 0; -+ *icp = 0x05; -+ } else if (fvco < 6811000) { -+ *rdiv = 2; -+ *ndiv = 0; -+ *icp = 0x06; -+ } else { -+ *rdiv = 3; -+ *ndiv = 1; -+ *icp = 0x02; -+ } -+ break; -+ case TDA18250_XTAL_FREQ_30MHZ: -+ *rdiv = 2; -+ *ndiv = 0; -+ *icp = (fvco < 6811000) ? 0x05 : 0x02; -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ dev_dbg(&client->dev, -+ "lopd=%d scale=%u fvco=%lu, rdiv=%d ndiv=%d icp=%d", -+ lopd, scale, fvco, *rdiv, *ndiv, *icp); -+ return 0; -+err: -+ return ret; -+} -+ -+static int tda18250_set_params(struct dvb_frontend *fe) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ struct dtv_frontend_properties *c = &fe->dtv_property_cache; -+ u32 if_khz; -+ int ret; -+ unsigned int i, j; -+ u8 utmp; -+ u8 buf[3]; -+ -+ #define REG 0 -+ #define MASK 1 -+ #define DVBT_6 2 -+ #define DVBT_7 3 -+ #define DVBT_8 4 -+ #define DVBC_6 5 -+ #define DVBC_8 6 -+ #define ATSC 7 -+ -+ static const u8 delsys_params[][16] = { -+ [REG] = { 0x22, 0x23, 0x24, 0x21, 0x0d, 0x0c, 0x0f, 0x14, -+ 0x0e, 0x12, 0x58, 0x59, 0x1a, 0x19, 0x1e, 0x30 }, -+ [MASK] = { 0x77, 0xff, 0xff, 0x87, 0xf0, 0x78, 0x07, 0xe0, -+ 0x60, 0x0f, 0x60, 0x0f, 0x33, 0x30, 0x80, 0x06 }, -+ [DVBT_6] = { 0x51, 0x03, 0x83, 0x82, 0x40, 0x48, 0x01, 0xe0, -+ 0x60, 0x0f, 0x60, 0x05, 0x03, 0x10, 0x00, 0x04 }, -+ [DVBT_7] = { 0x52, 0x03, 0x85, 0x82, 0x40, 0x48, 0x01, 0xe0, -+ 0x60, 0x0f, 0x60, 0x05, 0x03, 0x10, 0x00, 0x04 }, -+ [DVBT_8] = { 0x53, 0x03, 0x87, 0x82, 0x40, 0x48, 0x06, 0xe0, -+ 0x60, 0x07, 0x60, 0x05, 0x03, 0x10, 0x00, 0x04 }, -+ [DVBC_6] = { 0x32, 0x05, 0x86, 0x82, 0x50, 0x00, 0x06, 0x60, -+ 0x40, 0x0e, 0x60, 0x05, 0x33, 0x10, 0x00, 0x04 }, -+ [DVBC_8] = { 0x53, 0x03, 0x88, 0x82, 0x50, 0x00, 0x06, 0x60, -+ 0x40, 0x0e, 0x60, 0x05, 0x33, 0x10, 0x00, 0x04 }, -+ [ATSC] = { 0x51, 0x03, 0x83, 0x82, 0x40, 0x48, 0x01, 0xe0, -+ 0x40, 0x0e, 0x60, 0x05, 0x03, 0x00, 0x80, 0x04 }, -+ }; -+ -+ dev_dbg(&client->dev, -+ "delivery_system=%d frequency=%u bandwidth_hz=%u", -+ c->delivery_system, c->frequency, c->bandwidth_hz); -+ -+ -+ switch (c->delivery_system) { -+ case SYS_ATSC: -+ j = ATSC; -+ if_khz = dev->if_atsc; -+ break; -+ case SYS_DVBT: -+ case SYS_DVBT2: -+ if (c->bandwidth_hz == 0) { -+ ret = -EINVAL; -+ goto err; -+ } else if (c->bandwidth_hz <= 6000000) { -+ j = DVBT_6; -+ if_khz = dev->if_dvbt_6; -+ } else if (c->bandwidth_hz <= 7000000) { -+ j = DVBT_7; -+ if_khz = dev->if_dvbt_7; -+ } else if (c->bandwidth_hz <= 8000000) { -+ j = DVBT_8; -+ if_khz = dev->if_dvbt_8; -+ } else { -+ ret = -EINVAL; -+ goto err; -+ } -+ break; -+ case SYS_DVBC_ANNEX_A: -+ case SYS_DVBC_ANNEX_C: -+ if (c->bandwidth_hz == 0) { -+ ret = -EINVAL; -+ goto err; -+ } else if (c->bandwidth_hz <= 6000000) { -+ j = DVBC_6; -+ if_khz = dev->if_dvbc_6; -+ } else if (c->bandwidth_hz <= 8000000) { -+ j = DVBC_8; -+ if_khz = dev->if_dvbc_8; -+ } else { -+ ret = -EINVAL; -+ goto err; -+ } -+ break; -+ default: -+ ret = -EINVAL; -+ dev_err(&client->dev, "unsupported delivery system=%d", -+ c->delivery_system); -+ goto err; -+ } -+ -+ /* set delivery system dependent registers */ -+ for (i = 0; i < 16; i++) { -+ ret = regmap_write_bits(dev->regmap, delsys_params[REG][i], -+ delsys_params[MASK][i], delsys_params[j][i]); -+ if (ret) -+ goto err; -+ } -+ -+ /* set IF if needed */ -+ if (dev->if_frequency != if_khz) { -+ utmp = DIV_ROUND_CLOSEST(if_khz, 50); -+ ret = regmap_write(dev->regmap, R26_IF, utmp); -+ if (ret) -+ goto err; -+ dev->if_frequency = if_khz; -+ dev_dbg(&client->dev, "set IF=%u kHz", if_khz); -+ -+ } -+ -+ ret = tda18250_set_agc(fe); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R1A_AGCK, 0x03, 0x01); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R14_AGC23, 0x40, 0x00); -+ if (ret) -+ goto err; -+ -+ /* set frequency */ -+ buf[0] = ((c->frequency / 1000) >> 16) & 0xff; -+ buf[1] = ((c->frequency / 1000) >> 8) & 0xff; -+ buf[2] = ((c->frequency / 1000) >> 0) & 0xff; -+ ret = regmap_bulk_write(dev->regmap, R27_RF1, buf, 3); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write(dev->regmap, R0A_IRQ3, TDA18250_IRQ_TUNE); -+ if (ret) -+ goto err; -+ -+ /* initial tune */ -+ ret = regmap_write(dev->regmap, R2A_MSM1, 0x01); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write(dev->regmap, R2B_MSM2, 0x01); -+ if (ret) -+ goto err; -+ -+ ret = tda18250_wait_for_irq(fe, 500, 10, TDA18250_IRQ_TUNE); -+ if (ret) -+ goto err; -+ -+ /* calc ndiv and rdiv */ -+ ret = tda18250_pll_calc(fe, &buf[0], &buf[1], &buf[2]); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R4F_XTALFLX3, 0xe0, -+ (buf[0] << 6) | (buf[1] << 5)); -+ if (ret) -+ goto err; -+ -+ /* clear IRQ */ -+ ret = regmap_write(dev->regmap, R0A_IRQ3, TDA18250_IRQ_TUNE); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R46_CPUMP, 0x07, 0x00); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R39_SD5, 0x03, 0x00); -+ if (ret) -+ goto err; -+ -+ /* tune again */ -+ ret = regmap_write(dev->regmap, R2A_MSM1, 0x01); /* tune */ -+ if (ret) -+ goto err; -+ -+ ret = regmap_write(dev->regmap, R2B_MSM2, 0x01); /* go */ -+ if (ret) -+ goto err; -+ -+ ret = tda18250_wait_for_irq(fe, 500, 10, TDA18250_IRQ_TUNE); -+ if (ret) -+ goto err; -+ -+ /* pll locking */ -+ msleep(20); -+ -+ ret = regmap_write_bits(dev->regmap, R2B_MSM2, 0x04, 0x04); -+ if (ret) -+ goto err; -+ -+ msleep(20); -+ -+ /* restore AGCK */ -+ ret = regmap_write_bits(dev->regmap, R1A_AGCK, 0x03, 0x03); -+ if (ret) -+ goto err; -+ -+ ret = regmap_write_bits(dev->regmap, R14_AGC23, 0x40, 0x40); -+ if (ret) -+ goto err; -+ -+ /* charge pump */ -+ ret = regmap_write_bits(dev->regmap, R46_CPUMP, 0x07, buf[2]); -+ -+ return 0; -+err: -+ return ret; -+} -+ -+static int tda18250_get_if_frequency(struct dvb_frontend *fe, u32 *frequency) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ -+ *frequency = dev->if_frequency * 1000; -+ return 0; -+} -+ -+static int tda18250_sleep(struct dvb_frontend *fe) -+{ -+ struct i2c_client *client = fe->tuner_priv; -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ int ret; -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ /* power down LNA */ -+ ret = regmap_write_bits(dev->regmap, R0C_AGC11, 0x80, 0x00); -+ if (ret) -+ return ret; -+ -+ /* set if freq to 0 in order to make sure it's set after wake up */ -+ dev->if_frequency = 0; -+ -+ ret = tda18250_power_control(fe, TDA18250_POWER_STANDBY); -+ return ret; -+} -+ -+static const struct dvb_tuner_ops tda18250_ops = { -+ .info = { -+ .name = "NXP TDA18250", -+ .frequency_min = 42000000, -+ .frequency_max = 870000000, -+ }, -+ -+ .init = tda18250_init, -+ .set_params = tda18250_set_params, -+ .get_if_frequency = tda18250_get_if_frequency, -+ .sleep = tda18250_sleep, -+}; -+ -+static int tda18250_probe(struct i2c_client *client, -+ const struct i2c_device_id *id) -+{ -+ struct tda18250_config *cfg = client->dev.platform_data; -+ struct dvb_frontend *fe = cfg->fe; -+ struct tda18250_dev *dev; -+ int ret; -+ unsigned char chip_id[3]; -+ -+ /* some registers are always read from HW */ -+ static const struct regmap_range tda18250_yes_ranges[] = { -+ regmap_reg_range(R05_POWER1, R0B_IRQ4), -+ regmap_reg_range(R21_IF_AGC, R21_IF_AGC), -+ regmap_reg_range(R2A_MSM1, R2B_MSM2), -+ regmap_reg_range(R2F_RSSI1, R31_IRQ_CTRL), -+ }; -+ -+ static const struct regmap_access_table tda18250_volatile_table = { -+ .yes_ranges = tda18250_yes_ranges, -+ .n_yes_ranges = ARRAY_SIZE(tda18250_yes_ranges), -+ }; -+ -+ static const struct regmap_config tda18250_regmap_config = { -+ .reg_bits = 8, -+ .val_bits = 8, -+ .max_register = TDA18250_NUM_REGS - 1, -+ .volatile_table = &tda18250_volatile_table, -+ }; -+ -+ dev = kzalloc(sizeof(*dev), GFP_KERNEL); -+ if (!dev) { -+ ret = -ENOMEM; -+ goto err; -+ } -+ -+ i2c_set_clientdata(client, dev); -+ -+ dev->fe = cfg->fe; -+ dev->loopthrough = cfg->loopthrough; -+ if (cfg->xtal_freq < TDA18250_XTAL_FREQ_MAX) { -+ dev->xtal_freq = cfg->xtal_freq; -+ } else { -+ ret = -EINVAL; -+ dev_err(&client->dev, "xtal_freq invalid=%d", cfg->xtal_freq); -+ goto err_kfree; -+ } -+ dev->if_dvbt_6 = cfg->if_dvbt_6; -+ dev->if_dvbt_7 = cfg->if_dvbt_7; -+ dev->if_dvbt_8 = cfg->if_dvbt_8; -+ dev->if_dvbc_6 = cfg->if_dvbc_6; -+ dev->if_dvbc_8 = cfg->if_dvbc_8; -+ dev->if_atsc = cfg->if_atsc; -+ -+ dev->if_frequency = 0; -+ dev->warm = false; -+ -+ dev->regmap = devm_regmap_init_i2c(client, &tda18250_regmap_config); -+ if (IS_ERR(dev->regmap)) { -+ ret = PTR_ERR(dev->regmap); -+ goto err_kfree; -+ } -+ -+ /* read the three chip ID registers */ -+ regmap_bulk_read(dev->regmap, R00_ID1, &chip_id, 3); -+ dev_dbg(&client->dev, "chip_id=%02x:%02x:%02x", -+ chip_id[0], chip_id[1], chip_id[2]); -+ -+ switch (chip_id[0]) { -+ case 0xc7: -+ dev->slave = false; -+ break; -+ case 0x47: -+ dev->slave = true; -+ break; -+ default: -+ ret = -ENODEV; -+ goto err_kfree; -+ } -+ -+ if (chip_id[1] != 0x4a) { -+ ret = -ENODEV; -+ goto err_kfree; -+ } -+ -+ switch (chip_id[2]) { -+ case 0x20: -+ dev_info(&client->dev, -+ "NXP TDA18250AHN/%s successfully identified", -+ dev->slave ? "S" : "M"); -+ break; -+ case 0x21: -+ dev_info(&client->dev, -+ "NXP TDA18250BHN/%s successfully identified", -+ dev->slave ? "S" : "M"); -+ break; -+ default: -+ ret = -ENODEV; -+ goto err_kfree; -+ } -+ -+ fe->tuner_priv = client; -+ memcpy(&fe->ops.tuner_ops, &tda18250_ops, -+ sizeof(struct dvb_tuner_ops)); -+ -+ /* put the tuner in standby */ -+ tda18250_power_control(fe, TDA18250_POWER_STANDBY); -+ -+ return 0; -+err_kfree: -+ kfree(dev); -+err: -+ dev_dbg(&client->dev, "failed=%d", ret); -+ return ret; -+} -+ -+static int tda18250_remove(struct i2c_client *client) -+{ -+ struct tda18250_dev *dev = i2c_get_clientdata(client); -+ struct dvb_frontend *fe = dev->fe; -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); -+ fe->tuner_priv = NULL; -+ kfree(dev); -+ -+ return 0; -+} -+ -+static const struct i2c_device_id tda18250_id_table[] = { -+ {"tda18250", 0}, -+ {} -+}; -+MODULE_DEVICE_TABLE(i2c, tda18250_id_table); -+ -+static struct i2c_driver tda18250_driver = { -+ .driver = { -+ .name = "tda18250", -+ }, -+ .probe = tda18250_probe, -+ .remove = tda18250_remove, -+ .id_table = tda18250_id_table, -+}; -+ -+module_i2c_driver(tda18250_driver); -+ -+MODULE_DESCRIPTION("NXP TDA18250 silicon tuner driver"); -+MODULE_AUTHOR("Olli Salonen "); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/media/tuners/tda18250.h b/drivers/media/tuners/tda18250.h -new file mode 100644 -index 0000000..fb56906 ---- /dev/null -+++ b/drivers/media/tuners/tda18250.h -@@ -0,0 +1,51 @@ -+/* -+ * NXP TDA18250BHN silicon tuner driver -+ * -+ * Copyright (C) 2017 Olli Salonen -+ * -+ * This program 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. -+ * -+ * This program 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. -+ */ -+ -+#ifndef TDA18250_H -+#define TDA18250_H -+ -+#include -+#include -+#include "dvb_frontend.h" -+ -+#define TDA18250_XTAL_FREQ_16MHZ 0 -+#define TDA18250_XTAL_FREQ_24MHZ 1 -+#define TDA18250_XTAL_FREQ_25MHZ 2 -+#define TDA18250_XTAL_FREQ_27MHZ 3 -+#define TDA18250_XTAL_FREQ_30MHZ 4 -+#define TDA18250_XTAL_FREQ_MAX 5 -+ -+struct tda18250_config { -+ u16 if_dvbt_6; -+ u16 if_dvbt_7; -+ u16 if_dvbt_8; -+ u16 if_dvbc_6; -+ u16 if_dvbc_8; -+ u16 if_atsc; -+ u8 xtal_freq; -+ bool loopthrough; -+ -+ /* -+ * frontend -+ */ -+ struct dvb_frontend *fe; -+ -+#if defined(CONFIG_MEDIA_CONTROLLER) -+ struct media_device *mdev; -+#endif -+}; -+ -+#endif -diff --git a/drivers/media/tuners/tda18250_priv.h b/drivers/media/tuners/tda18250_priv.h -new file mode 100644 -index 0000000..4a6f801 ---- /dev/null -+++ b/drivers/media/tuners/tda18250_priv.h -@@ -0,0 +1,145 @@ -+/* -+ * NXP TDA18250BHN silicon tuner driver -+ * -+ * Copyright (C) 2017 Olli Salonen -+ * -+ * This program 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. -+ * -+ * This program 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. -+ */ -+ -+#ifndef TDA18250_PRIV_H -+#define TDA18250_PRIV_H -+ -+#include "tda18250.h" -+ -+#define R00_ID1 0x00 /* ID byte 1 */ -+#define R01_ID2 0x01 /* ID byte 2 */ -+#define R02_ID3 0x02 /* ID byte 3 */ -+#define R03_THERMO1 0x03 /* Thermo byte 1 */ -+#define R04_THERMO2 0x04 /* Thermo byte 2 */ -+#define R05_POWER1 0x05 /* Power byte 1 */ -+#define R06_POWER2 0x06 /* Power byte 2 */ -+#define R07_GPIO 0x07 /* GPIO */ -+#define R08_IRQ1 0x08 /* IRQ */ -+#define R09_IRQ2 0x09 /* IRQ */ -+#define R0A_IRQ3 0x0a /* IRQ */ -+#define R0B_IRQ4 0x0b /* IRQ */ -+#define R0C_AGC11 0x0c /* AGC1 byte 1 */ -+#define R0D_AGC12 0x0d /* AGC1 byte 2 */ -+#define R0E_AGC13 0x0e /* AGC1 byte 3 */ -+#define R0F_AGC14 0x0f /* AGC1 byte 4 */ -+#define R10_LT1 0x10 /* LT byte 1 */ -+#define R11_LT2 0x11 /* LT byte 2 */ -+#define R12_AGC21 0x12 /* AGC2 byte 1 */ -+#define R13_AGC22 0x13 /* AGC2 byte 2 */ -+#define R14_AGC23 0x14 /* AGC2 byte 3 */ -+#define R15_AGC24 0x15 /* AGC2 byte 4 */ -+#define R16_AGC25 0x16 /* AGC2 byte 5 */ -+#define R17_AGC31 0x17 /* AGC3 byte 1 */ -+#define R18_AGC32 0x18 /* AGC3 byte 2 */ -+#define R19_AGC33 0x19 /* AGC3 byte 3 */ -+#define R1A_AGCK 0x1a -+#define R1B_GAIN1 0x1b -+#define R1C_GAIN2 0x1c -+#define R1D_GAIN3 0x1d -+#define R1E_WI_FI 0x1e /* Wireless Filter */ -+#define R1F_RF_BPF 0x1f /* RF Band Pass Filter */ -+#define R20_IR_MIX 0x20 /* IR Mixer */ -+#define R21_IF_AGC 0x21 -+#define R22_IF1 0x22 /* IF byte 1 */ -+#define R23_IF2 0x23 /* IF byte 2 */ -+#define R24_IF3 0x24 /* IF byte 3 */ -+#define R25_REF 0x25 /* reference byte */ -+#define R26_IF 0x26 /* IF frequency */ -+#define R27_RF1 0x27 /* RF frequency byte 1 */ -+#define R28_RF2 0x28 /* RF frequency byte 2 */ -+#define R29_RF3 0x29 /* RF frequency byte 3 */ -+#define R2A_MSM1 0x2a -+#define R2B_MSM2 0x2b -+#define R2C_PS1 0x2c /* power saving mode byte 1 */ -+#define R2D_PS2 0x2d /* power saving mode byte 2 */ -+#define R2E_PS3 0x2e /* power saving mode byte 3 */ -+#define R2F_RSSI1 0x2f -+#define R30_RSSI2 0x30 -+#define R31_IRQ_CTRL 0x31 -+#define R32_DUMMY 0x32 -+#define R33_TEST 0x33 -+#define R34_MD1 0x34 -+#define R35_SD1 0x35 -+#define R36_SD2 0x36 -+#define R37_SD3 0x37 -+#define R38_SD4 0x38 -+#define R39_SD5 0x39 -+#define R3A_SD_TEST 0x3a -+#define R3B_REGU 0x3b -+#define R3C_RCCAL1 0x3c -+#define R3D_RCCAL2 0x3d -+#define R3E_IRCAL1 0x3e -+#define R3F_IRCAL2 0x3f -+#define R40_IRCAL3 0x40 -+#define R41_IRCAL4 0x41 -+#define R42_IRCAL5 0x42 -+#define R43_PD1 0x43 /* power down byte 1 */ -+#define R44_PD2 0x44 /* power down byte 2 */ -+#define R45_PD 0x45 /* power down */ -+#define R46_CPUMP 0x46 /* charge pump */ -+#define R47_LNAPOL 0x47 /* LNA polar casc */ -+#define R48_SMOOTH1 0x48 /* smooth test byte 1 */ -+#define R49_SMOOTH2 0x49 /* smooth test byte 2 */ -+#define R4A_SMOOTH3 0x4a /* smooth test byte 3 */ -+#define R4B_XTALOSC1 0x4b -+#define R4C_XTALOSC2 0x4c -+#define R4D_XTALFLX1 0x4d -+#define R4E_XTALFLX2 0x4e -+#define R4F_XTALFLX3 0x4f -+#define R50_XTALFLX4 0x50 -+#define R51_XTALFLX5 0x51 -+#define R52_IRLOOP0 0x52 -+#define R53_IRLOOP1 0x53 -+#define R54_IRLOOP2 0x54 -+#define R55_IRLOOP3 0x55 -+#define R56_IRLOOP4 0x56 -+#define R57_PLL_LOG 0x57 -+#define R58_AGC2_UP1 0x58 -+#define R59_AGC2_UP2 0x59 -+#define R5A_H3H5 0x5a -+#define R5B_AGC_AUTO 0x5b -+#define R5C_AGC_DEBUG 0x5c -+ -+#define TDA18250_NUM_REGS 93 -+ -+#define TDA18250_POWER_STANDBY 0 -+#define TDA18250_POWER_NORMAL 1 -+ -+#define TDA18250_IRQ_CAL 0x81 -+#define TDA18250_IRQ_HW_INIT 0x82 -+#define TDA18250_IRQ_TUNE 0x88 -+ -+struct tda18250_dev { -+ struct mutex i2c_mutex; -+ struct dvb_frontend *fe; -+ struct i2c_adapter *i2c; -+ struct regmap *regmap; -+ u8 xtal_freq; -+ /* IF in kHz */ -+ u16 if_dvbt_6; -+ u16 if_dvbt_7; -+ u16 if_dvbt_8; -+ u16 if_dvbc_6; -+ u16 if_dvbc_8; -+ u16 if_atsc; -+ u16 if_frequency; -+ bool slave; -+ bool loopthrough; -+ bool warm; -+ u8 regs[TDA18250_NUM_REGS]; -+}; -+ -+#endif -diff --git a/drivers/media/usb/dvb-usb/Kconfig b/drivers/media/usb/dvb-usb/Kconfig -index f1a8276..1958d9e 100644 ---- a/drivers/media/usb/dvb-usb/Kconfig -+++ b/drivers/media/usb/dvb-usb/Kconfig -@@ -86,6 +86,7 @@ config DVB_USB_DIB0700 - select DVB_USB_DIB3000MC if MEDIA_SUBDRV_AUTOSELECT - select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT - select DVB_LGDT3305 if MEDIA_SUBDRV_AUTOSELECT -+ select DVB_MN88472 if MEDIA_SUBDRV_AUTOSELECT - select DVB_TUNER_DIB0070 if MEDIA_SUBDRV_AUTOSELECT - select DVB_TUNER_DIB0090 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT -@@ -94,6 +95,7 @@ config DVB_USB_DIB0700 - select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_XC4000 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_MXL5007T if MEDIA_SUBDRV_AUTOSELECT -+ select MEDIA_TUNER_TDA18250 if MEDIA_SUBDRV_AUTOSELECT - help - Support for USB2.0/1.1 DVB receivers based on the DiB0700 USB bridge. The - USB bridge is also present in devices having the DiB7700 DVB-T-USB -diff --git a/drivers/media/usb/dvb-usb/dib0700.h b/drivers/media/usb/dvb-usb/dib0700.h -index f89ab3b..3a9d4c2 100644 ---- a/drivers/media/usb/dvb-usb/dib0700.h -+++ b/drivers/media/usb/dvb-usb/dib0700.h -@@ -51,6 +51,8 @@ struct dib0700_state { - int (*read_status)(struct dvb_frontend *, enum fe_status *); - int (*sleep)(struct dvb_frontend* fe); - u8 buf[255]; -+ struct i2c_client *i2c_client_demod; -+ struct i2c_client *i2c_client_tuner; - }; - - extern int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion, -diff --git a/drivers/media/usb/dvb-usb/dib0700_core.c b/drivers/media/usb/dvb-usb/dib0700_core.c -index 1ee7ec5..94bd176 100644 ---- a/drivers/media/usb/dvb-usb/dib0700_core.c -+++ b/drivers/media/usb/dvb-usb/dib0700_core.c -@@ -911,10 +911,34 @@ static int dib0700_probe(struct usb_interface *intf, - return -ENODEV; - } - -+static void dib0700_disconnect(struct usb_interface *intf) -+{ -+ struct dvb_usb_device *d = usb_get_intfdata(intf); -+ struct dib0700_state *st = d->priv; -+ struct i2c_client *client; -+ -+ /* remove I2C client for tuner */ -+ client = st->i2c_client_tuner; -+ if (client) { -+ module_put(client->dev.driver->owner); -+ i2c_unregister_device(client); -+ } -+ -+ /* remove I2C client for demodulator */ -+ client = st->i2c_client_demod; -+ if (client) { -+ module_put(client->dev.driver->owner); -+ i2c_unregister_device(client); -+ } -+ -+ dvb_usb_device_exit(intf); -+} -+ -+ - static struct usb_driver dib0700_driver = { - .name = "dvb_usb_dib0700", - .probe = dib0700_probe, -- .disconnect = dvb_usb_device_exit, -+ .disconnect = dib0700_disconnect, - .id_table = dib0700_usb_id_table, - }; - -diff --git a/drivers/media/usb/dvb-usb/dib0700_devices.c b/drivers/media/usb/dvb-usb/dib0700_devices.c -index 92098c1..8afcd11 100644 ---- a/drivers/media/usb/dvb-usb/dib0700_devices.c -+++ b/drivers/media/usb/dvb-usb/dib0700_devices.c -@@ -23,6 +23,9 @@ - #include "dib0090.h" - #include "lgdt3305.h" - #include "mxl5007t.h" -+#include "mn88472.h" -+#include "tda18250.h" -+ - - static int force_lna_activation; - module_param(force_lna_activation, int, 0644); -@@ -3725,6 +3728,90 @@ static int mxl5007t_tuner_attach(struct dvb_usb_adapter *adap) - &hcw_mxl5007t_config) == NULL ? -ENODEV : 0; - } - -+static int xbox_one_attach(struct dvb_usb_adapter *adap) -+{ -+ struct dib0700_state *st = adap->dev->priv; -+ struct i2c_client *client_demod, *client_tuner; -+ struct dvb_usb_device *d = adap->dev; -+ struct mn88472_config mn88472_config = { }; -+ struct tda18250_config tda18250_config; -+ struct i2c_board_info info; -+ -+ st->fw_use_new_i2c_api = 1; -+ st->disable_streaming_master_mode = 1; -+ -+ /* fe power enable */ -+ dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0); -+ msleep(30); -+ dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1); -+ msleep(30); -+ -+ /* demod reset */ -+ dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); -+ msleep(30); -+ dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0); -+ msleep(30); -+ dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); -+ msleep(30); -+ -+ /* attach demod */ -+ mn88472_config.fe = &adap->fe_adap[0].fe; -+ mn88472_config.i2c_wr_max = 22; -+ mn88472_config.xtal = 20500000; -+ mn88472_config.ts_mode = PARALLEL_TS_MODE; -+ mn88472_config.ts_clock = FIXED_TS_CLOCK; -+ memset(&info, 0, sizeof(struct i2c_board_info)); -+ strlcpy(info.type, "mn88472", I2C_NAME_SIZE); -+ info.addr = 0x18; -+ info.platform_data = &mn88472_config; -+ request_module(info.type); -+ client_demod = i2c_new_device(&d->i2c_adap, &info); -+ if (client_demod == NULL || client_demod->dev.driver == NULL) -+ goto fail_demod_device; -+ if (!try_module_get(client_demod->dev.driver->owner)) -+ goto fail_demod_module; -+ -+ st->i2c_client_demod = client_demod; -+ -+ adap->fe_adap[0].fe = mn88472_config.get_dvb_frontend(client_demod); -+ -+ /* attach tuner */ -+ memset(&tda18250_config, 0, sizeof(tda18250_config)); -+ tda18250_config.if_dvbt_6 = 3950; -+ tda18250_config.if_dvbt_7 = 4450; -+ tda18250_config.if_dvbt_8 = 4950; -+ tda18250_config.if_dvbc_6 = 4950; -+ tda18250_config.if_dvbc_8 = 4950; -+ tda18250_config.if_atsc = 4079; -+ tda18250_config.loopthrough = true; -+ tda18250_config.xtal_freq = TDA18250_XTAL_FREQ_27MHZ; -+ tda18250_config.fe = adap->fe_adap[0].fe; -+ -+ memset(&info, 0, sizeof(struct i2c_board_info)); -+ strlcpy(info.type, "tda18250", I2C_NAME_SIZE); -+ info.addr = 0x60; -+ info.platform_data = &tda18250_config; -+ -+ request_module(info.type); -+ client_tuner = i2c_new_device(&adap->dev->i2c_adap, &info); -+ if (client_tuner == NULL || client_tuner->dev.driver == NULL) -+ goto fail_tuner_device; -+ if (!try_module_get(client_tuner->dev.driver->owner)) -+ goto fail_tuner_module; -+ -+ st->i2c_client_tuner = client_tuner; -+ return 0; -+ -+fail_tuner_module: -+ i2c_unregister_device(client_tuner); -+fail_tuner_device: -+ module_put(client_demod->dev.driver->owner); -+fail_demod_module: -+ i2c_unregister_device(client_demod); -+fail_demod_device: -+ return -ENODEV; -+} -+ - - /* DVB-USB and USB stuff follows */ - struct usb_device_id dib0700_usb_id_table[] = { -@@ -3816,7 +3903,8 @@ struct usb_device_id dib0700_usb_id_table[] = { - { USB_DEVICE(USB_VID_PCTV, USB_PID_PCTV_2002E_SE) }, - { USB_DEVICE(USB_VID_PCTV, USB_PID_DIBCOM_STK8096PVR) }, - { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK8096PVR) }, -- { USB_DEVICE(USB_VID_HAMA, USB_PID_HAMA_DVBT_HYBRID) }, -+/* 85 */{ USB_DEVICE(USB_VID_HAMA, USB_PID_HAMA_DVBT_HYBRID) }, -+ { USB_DEVICE(USB_VID_MICROSOFT, USB_PID_XBOX_ONE_TUNER) }, - { 0 } /* Terminating entry */ - }; - MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); -@@ -5040,6 +5128,25 @@ struct dvb_usb_device_properties dib0700_devices[] = { - RC_PROTO_BIT_NEC, - .change_protocol = dib0700_change_protocol, - }, -+ }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, -+ .num_adapters = 1, -+ .adapter = { -+ { -+ DIB0700_NUM_FRONTENDS(1), -+ .fe = {{ -+ .frontend_attach = xbox_one_attach, -+ -+ DIB0700_DEFAULT_STREAMING_CONFIG(0x82), -+ } }, -+ }, -+ }, -+ .num_device_descs = 1, -+ .devices = { -+ { "Microsoft Xbox One Digital TV Tuner", -+ { &dib0700_usb_id_table[86], NULL }, -+ { NULL }, -+ }, -+ }, - }, - }; - --- -2.14.1 - diff --git a/packages/linux-driver-addons/dvb/depends/media_tree_cc/package.mk b/packages/linux-driver-addons/dvb/depends/media_tree_cc/package.mk new file mode 100644 index 0000000000..a564033661 --- /dev/null +++ b/packages/linux-driver-addons/dvb/depends/media_tree_cc/package.mk @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="media_tree_cc" +PKG_VERSION="2018-08-17" +PKG_SHA256="1ffaafeeec85eece9697693efa22c8955a5ff63b7697eb0976f830ba92247147" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="https://bitbucket.org/CrazyCat/media_build/downloads/" +PKG_URL="$DISTRO_SRC/$PKG_NAME-$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 +}