Hello Mauro, On 17/12/2015 13:55, Mauro Carvalho Chehab wrote: > Mason wrote: > >> I have a TechnoTrend TT-TVStick CT2-4400v2 USB tuner, as described here: >> http://linuxtv.org/wiki/index.php/TechnoTrend_TT-TVStick_CT2-4400 >> >> According to the article, the device is supported since kernel 3.19 >> and indeed, if I use a 4.1 kernel, I can pick CONFIG_DVB_USB_DVBSKY >> and everything seems to work. >> >> Unfortunately (for me), I've been asked to make this driver work on >> an ancient 3.4 kernel. >> >> The linuxtv article mentions: >> >> "Drivers are included in kernel 3.17 (for version 1) and 3.19 (for version 2). >> They can be built with media_build for older kernels." >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> >> This seems to imply that I can use the media_build framework to >> automatically (??) back-port a 3.19 driver to a 3.4 kernel? > > "automatically" is a complex word ;) If I get it working, I think you can even say "auto-magically" ;-) >> This sounds too good to be true... >> How far back can I go? > > The goal is to allow compilation since 2.6.32, but please notice that > not all drivers will go that far. Basically, when the backport seems too > complex, we just remove the driver from the list of drivers that are > compiled for a given legacy version. > > Se the file v4l/versions.txt to double-check if the drivers you need > have such restrictions. I suspect that, in the specific case of > DVB_USB_DVBSKY, it should compile. That is great news. > That doesn't mean that it was tested there. We don't test those > backports to check against regressions. We only work, at best > effort basis, to make them to build. So, use it with your own > risk. If you find any problems, feel free to send us patches > fixing it. My first problem is that compilation fails on the first file ;-) See attached log. My steps are: cd media_build/linux make tar DIR=/tmp/sandbox/media_tree make untar cd .. make release DIR=/tmp/sandbox/custom-linux-3.4 make I will investigate and report back. Regards.
/tmp/sandbox$ cd media_build/linux /tmp/sandbox/media_build/linux$ make tar DIR=/tmp/sandbox/media_tree rm -f /tmp/sandbox/media_build/linux/linux-media.tar.bz2 tar cf /tmp/sandbox/media_build/linux/linux-media.tar -C /tmp/sandbox/media_tree sound/pci/bt87x.c mm/frame_vector.c include/linux/mmc/sdio_ids.h include/sound/aci.h include/uapi/linux/usb/video.h include/linux/via-core.h include/linux/ti_wilink_st.h include/linux/dma-buf.h include/linux/fence.h include/linux/of_graph.h include/linux/kconfig.h include/linux/hdmi.h include/linux/compiler-gcc.h include/linux/dma/xilinx_dma.h include/trace/events/v4l2.h include/trace/events/vb2.h include/linux/pci_ids.h include/misc/altera.h include/uapi/linux/lirc.h include/uapi/linux/videodev2.h include/uapi/linux/meye.h include/uapi/linux/ivtv.h include/uapi/linux/ivtvfb.h include/uapi/linux/media.h include/uapi/linux/media-bus-format.h include/uapi/linux/v4l2-dv-timings.h include/uapi/linux/v4l2-controls.h include/uapi/linux/uvcvideo.h include/uapi/linux/vsp1.h include/uapi/linux/xilinx-v4l2-controls.h include/uapi/linux/smiapp.h include/uapi/linux/v4l2-subdev.h include/uapi/linux/v4l2-common.h include/uapi/linux/v4l2-mediabus.h include/linux/fixp-arith.h firmware/av7110/bootcode.bin.ihex firmware/av7110/Boot.S firmware/cpia2/stv0672_vp4.bin.ihex firmware/ihex2fw.c firmware/vicam/firmware.H16 firmware/ttusb-budget/dspbootcode.bin.ihex git --git-dir /tmp/sandbox/media_tree/.git log --pretty=oneline -n3 |sed -r 's,([\x22]),,g; s,([\x25\x5c]),\1\1,g' >git_log perl -e 'while (<>) { $a=$1 if (m/^\s*VERSION\s*=\s*(\d+)/); $b=$1 if (m/^\s*PATCHLEVEL\s*=\s*(\d+)/); $c=$1 if (m/^\s*SUBLEVEL\s*=\s*(\d+)/); } printf "#define V4L2_VERSION %d\n", ((($a) << 16) + (($b) << 8) + ($c))' /tmp/sandbox/media_tree/Makefile > kernel_version.h tar rvf /tmp/sandbox/media_build/linux/linux-media.tar git_log kernel_version.h git_log kernel_version.h for i in drivers/media/ drivers/staging/media/ drivers/misc/altera-stapl/ include/media/ include/dt-bindings/media/ include/linux/platform_data/media/ include/uapi/linux/dvb/; do \ if [ "`echo $i|grep Documentation`" = "" ]; then \ dir="`(cd /tmp/sandbox/media_tree; find $i -type f -name '*.[ch]')`"; \ dir="$dir `(cd /tmp/sandbox/media_tree; find $i -type f -name Makefile)`"; \ dir="$dir `(cd /tmp/sandbox/media_tree; find $i -type f -name Kconfig)`"; \ tar rvf /tmp/sandbox/media_build/linux/linux-media.tar -C /tmp/sandbox/media_tree $dir; \ else \ tar rvf /tmp/sandbox/media_build/linux/linux-media.tar -C /tmp/sandbox/media_tree $i; \ fi; done; bzip2 /tmp/sandbox/media_build/linux/linux-media.tar [snip list of 2247 files] /tmp/sandbox/media_build/linux$ make untar tar xfj linux-media.tar.bz2 rm -f .patches_applied .linked_dir .git_log.md5 /tmp/sandbox/media_build/linux$ cd .. /tmp/sandbox/media_build$ make release DIR=/tmp/sandbox/custom-linux-3.4 make -C /tmp/sandbox/media_build/v4l release make[1]: Entering directory `/tmp/sandbox/media_build/v4l' Searching in /tmp/sandbox/custom-linux-3.4/Makefile for kernel version. Forcing compiling to version 3.4.3913 make[1]: Leaving directory `/tmp/sandbox/media_build/v4l' /tmp/sandbox/media_build$ make make -C /tmp/sandbox/media_build/v4l make[1]: Entering directory `/tmp/sandbox/media_build/v4l' scripts/make_makefile.pl Updating/Creating .config make[2]: Entering directory `/tmp/sandbox/media_build/linux' Applying patches for kernel 3.4.3913 patch -s -f -N -p1 -i ../backports/api_version.patch patch -s -f -N -p1 -i ../backports/pr_fmt.patch patch -s -f -N -p1 -i ../backports/debug.patch patch -s -f -N -p1 -i ../backports/drx39xxj.patch patch -s -f -N -p1 -i ../backports/v4.1_pat_enabled.patch patch -s -f -N -p1 -i ../backports/v4.0_dma_buf_export.patch patch -s -f -N -p1 -i ../backports/v4.0_drop_trace.patch patch -s -f -N -p1 -i ../backports/v4.0_fwnode.patch patch -s -f -N -p1 -i ../backports/v3.19_get_user_pages_locked.patch Patched drivers/media/dvb-core/dvbdev.c Patched drivers/media/v4l2-core/v4l2-dev.c Patched drivers/media/rc/rc-main.c make[2]: Leaving directory `/tmp/sandbox/media_build/linux' Preparing to compile for kernel version 3.4.3913 WARNING: This is the V4L/DVB backport tree, with experimental drivers backported to run on legacy kernels from the development tree at: http://git.linuxtv.org/media-tree.git. It is generally safe to use it for testing a new driver or feature, but its usage on production environments is risky. Don't use it in production. You've been warned. V4L2_FLASH_LED_CLASS: Requires at least kernel 4.2.0 VIDEOBUF2_DMA_CONTIG: Requires at least kernel 3.6.0 IR_HIX5HD2: Requires at least kernel 3.10.0 IR_IMG: Requires at least kernel 3.9.0 RC_ST: Requires at least kernel 3.15.0 DVB_USB_RTL28XXU: Requires at least kernel 3.7.0 VIDEO_FB_IVTV: Requires at least kernel 3.11.0 DVB_PT3: Requires at least kernel 3.11.0 DVB_NETUP_UNIDVB: Requires at least kernel 3.7.0 VIDEO_RCAR_VIN: Requires at least kernel 3.9.0 VIDEO_XILINX: Requires at least kernel 3.17.0 VIDEO_CODA: Requires at least kernel 3.5.0 VIDEO_SH_VEU: Requires at least kernel 3.9.0 VIDEO_RENESAS_VSP1: Requires at least kernel 3.9.0 RADIO_SI4713: Requires at least kernel 3.13.0 I2C_SI4713: Requires at least kernel 3.17.0 VIDEO_ADV7183: Requires at least kernel 3.5.0 VIDEO_ADV7604: Requires at least kernel 3.17.0 VIDEO_TC358743: Requires at least kernel 3.17.0 VIDEO_OV2659: Requires at least kernel 3.5.0 VIDEO_OV9650: Requires at least kernel 3.5.0 VIDEO_VS6624: Requires at least kernel 3.5.0 VIDEO_MT9P031: Requires at least kernel 3.17.0 VIDEO_MT9T001: Requires at least kernel 3.5.0 VIDEO_MT9V032: Requires at least kernel 3.19.0 VIDEO_NOON010PC30: Requires at least kernel 3.5.0 VIDEO_M5MOLS: Requires at least kernel 3.6.0 VIDEO_S5K6AA: Requires at least kernel 3.5.0 VIDEO_S5K6A3: Requires at least kernel 3.5.0 VIDEO_S5K5BAF: Requires at least kernel 3.5.0 VIDEO_SMIAPP: Requires at least kernel 4.0.0 VIDEO_S5C73M3: Requires at least kernel 3.6.0 VIDEO_ADP1653: Requires at least kernel 3.17.0 SOC_CAMERA_OV2640: Requires at least kernel 3.17.0 MEDIA_TUNER_E4000: Requires at least kernel 3.5.0 DVB_M88DS3103: Requires at least kernel 3.8.0 DVB_TS2020: Requires at least kernel 3.8.0 DVB_RTL2830: Requires at least kernel 3.8.0 DVB_RTL2832: Requires at least kernel 3.8.0 Created default (all yes) .config file ./scripts/make_myconfig.pl make[1]: Leaving directory `/tmp/sandbox/media_build/v4l' make[1]: Entering directory `/tmp/sandbox/media_build/v4l' scripts/make_makefile.pl make[1]: Leaving directory `/tmp/sandbox/media_build/v4l' make[1]: Entering directory `/tmp/sandbox/media_build/v4l' perl scripts/make_config_compat.pl /tmp/sandbox/custom-linux-3.4 ./.myconfig ./config-compat.h creating symbolic links... make -C firmware prep make[2]: Entering directory `/tmp/sandbox/media_build/v4l/firmware' make[2]: Leaving directory `/tmp/sandbox/media_build/v4l/firmware' make -C firmware make[2]: Entering directory `/tmp/sandbox/media_build/v4l/firmware' CC ihex2fw Generating vicam/firmware.fw Generating ttusb-budget/dspbootcode.bin Generating cpia2/stv0672_vp4.bin Generating av7110/bootcode.bin make[2]: Leaving directory `/tmp/sandbox/media_build/v4l/firmware' Kernel build directory is /tmp/sandbox/custom-linux-3.4 make -C ../linux apply_patches make[2]: Entering directory `/tmp/sandbox/media_build/linux' Patches for 3.4.3913 already applied. make[2]: Leaving directory `/tmp/sandbox/media_build/linux' make -C /tmp/sandbox/custom-linux-3.4 SUBDIRS=/tmp/sandbox/media_build/v4l modules make[2]: Entering directory `/tmp/sandbox/custom-linux-3.4' CC [M] /tmp/sandbox/media_build/v4l/aptina-pll.o In file included from <command-line>:0:0: /tmp/sandbox/media_build/v4l/compat.h:1568:0: warning: "writel_relaxed" redefined #define writel_relaxed writel ^ In file included from include/linux/scatterlist.h:10:0, from /tmp/sandbox/media_build/v4l/compat.h:1255, from <command-line>:0: /tmp/sandbox/custom-linux-3.4/arch/arm/include/asm/io.h:235:0: note: this is the location of the previous definition #define writel_relaxed(v,c) ((void)__raw_writel((__force u32) \ ^ In file included from <command-line>:0:0: /tmp/sandbox/media_build/v4l/compat.h: In function 'kvfree': /tmp/sandbox/media_build/v4l/compat.h:1631:3: error: implicit declaration of function 'vfree' [-Werror=implicit-function-declaration] vfree(addr); ^ cc1: some warnings being treated as errors make[3]: *** [/tmp/sandbox/media_build/v4l/aptina-pll.o] Error 1 make[2]: *** [_module_/tmp/sandbox/media_build/v4l] Error 2 make[2]: Leaving directory `/tmp/sandbox/custom-linux-3.4' make[1]: *** [default] Error 2 make[1]: Leaving directory `/tmp/sandbox/media_build/v4l' make: *** [all] Error 2