summaryrefslogtreecommitdiff
path: root/v4l
diff options
context:
space:
mode:
Diffstat (limited to 'v4l')
-rw-r--r--v4l/.cvsignore7
-rw-r--r--v4l/Make.config119
-rw-r--r--v4l/Makefile695
-rw-r--r--v4l/Makefile.ivtv25
-rw-r--r--v4l/Makefile.kern2428
-rw-r--r--v4l/compat.h14
-rwxr-xr-xv4l/scripts/gentree.pl93
-rwxr-xr-xv4l/scripts/make_kconfig.pl178
-rwxr-xr-xv4l/scripts/make_makefile.pl163
-rwxr-xr-xv4l/scripts/make_noconfig.pl57
-rwxr-xr-xv4l/scripts/makelinks.sh2
-rw-r--r--v4l/versions.txt206
12 files changed, 951 insertions, 636 deletions
diff --git a/v4l/.cvsignore b/v4l/.cvsignore
deleted file mode 100644
index 88be5bcbc..000000000
--- a/v4l/.cvsignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.ko
-*.o.flags
-*.mod.c
-.*.cmd
-.version
-.snapshot
-.tmp_versions
diff --git a/v4l/Make.config b/v4l/Make.config
deleted file mode 100644
index 7d8ae8e8d..000000000
--- a/v4l/Make.config
+++ /dev/null
@@ -1,119 +0,0 @@
-MDIR := v4l2
-snap := video4linux
-
-CONFIG_VIDEO_BTTV := m
-CONFIG_VIDEO_SAA7134 := m
-CONFIG_VIDEO_IR := m
-CONFIG_VIDEO_TUNER := m
-CONFIG_VIDEO_TVAUDIO := m
-CONFIG_VIDEO_CX88 := m
-
-CONFIG_TVP5150 := m
-
-#enable experimental support for xc3028 tuner
-CONFIG_XC3028 := m
-
-CONFIG_VIDEO_DECODER := m
-
-CONFIG_VIDEO_ALSA := y
-
-CONFIG_VIDEO_ADV_DEBUG := y
-
-CONFIG_VIDEO_PVRUSB2 := m
-
-CONFIG_VIDEO_IVTV := n
-
-CONFIG_DVB_FIRESAT := n
-
-CONFIG_VIRTUAL_DEVICE := m
-CONFIG_VIDEO_CPIA2 := m
-
-CONFIG_VIDEO_CX88_IVTV := n
-
-CONFIG_VIDEO_MXB := m
-
-# doesn't build on older kernels
-
-CONFIG_DVB_CORE := n
-CONFIG_VIDEO_BUF_DVB := n
-CONFIG_VIDEO_CX88_DVB := n
-CONFIG_VIDEO_SAA7134_DVB := n
-
-# requires dvb-core
-
-CONFIG_DVB_BT8XX := n
-CONFIG_DVB_FRONTENDS := n
-CONFIG_DVB_B2C2_FLEXCOP := n
-CONFIG_DVB_B2C2_FLEXCOP_PCI := n
-CONFIG_DVB_B2C2_FLEXCOP_USB := n
-CONFIG_DVB_CINERGYT2 := n
-CONFIG_DVB_USB := n
-CONFIG_DVB_USB_VP7045 := n
-CONFIG_DVB_USB_VP702X := n
-CONFIG_DVB_USB_DTT200U := n
-CONFIG_DVB_USB_A800 := n
-CONFIG_DVB_USB_DIBUSB_MB := n
-CONFIG_DVB_USB_DIBUSB_MC := n
-CONFIG_DVB_USB_NOVA_T_USB2 := n
-CONFIG_DVB_USB_UMT_010 := n
-CONFIG_DVB_USB_DIGITV := n
-CONFIG_DVB_USB_CXUSB := n
-CONFIG_DVB_PLUTO2 := n
-CONFIG_DVB_BUDGET := n
-CONFIG_DVB_BUDGET_AV := n
-CONFIG_DVB_BUDGET_CI := n
-CONFIG_DVB_BUDGET_PATCH := n
-CONFIG_DVB_AV7110 := n
-CONFIG_DVB_TTUSB_BUDGET := n
-CONFIG_DVB_TTUSB_DEC := n
-CONFIG_VIDEO_SAA7146 := n
-CONFIG_VIDEO_SAA7146_VV := n
-
-ifneq ($(KERNELRELEASE),)
- CONFIG_DVB_CORE := $(shell test $(SUBLEVEL) -ge 10 -a $(PATCHLEVEL) -ge 6 && echo m)
- CONFIG_VIDEO_BUF_DVB := $(shell test $(SUBLEVEL) -ge 12 -a $(PATCHLEVEL) -ge 6 && echo m)
- CONFIG_VIDEO_DEV := $(shell test $(PATCHLEVEL) -ge 6 && echo m)
- CONFIG_EM28XX := $(shell test $(PATCHLEVEL) -ge 6 && echo m)
-endif
-
-ifeq ($(CONFIG_VIDEO_BUF_DVB),m)
- CONFIG_VIDEO_CX88_DVB := m
- CONFIG_VIDEO_SAA7134_DVB := m
-endif
-
-ifeq ($(CONFIG_DVB_CORE),m)
- CONFIG_DVB_BT8XX := m
- CONFIG_DVB_FRONTENDS := m
- CONFIG_DVB_B2C2_FLEXCOP := m
- CONFIG_DVB_B2C2_FLEXCOP_PCI := m
- CONFIG_DVB_B2C2_FLEXCOP_USB := m
- CONFIG_DVB_CINERGYT2 := m
- CONFIG_DVB_USB := m
- CONFIG_DVB_USB_VP7045 := m
- CONFIG_DVB_USB_VP702X := m
- CONFIG_DVB_USB_DTT200U := m
- CONFIG_DVB_USB_A800 := m
- CONFIG_DVB_USB_DIBUSB_MB := m
- CONFIG_DVB_USB_DIBUSB_MC := m
- CONFIG_DVB_USB_NOVA_T_USB2 := m
- CONFIG_DVB_USB_UMT_010 := m
- CONFIG_DVB_USB_DIGITV := m
- CONFIG_DVB_USB_CXUSB := m
- CONFIG_DVB_PLUTO2 := m
- CONFIG_DVB_BUDGET := m
- CONFIG_DVB_BUDGET_AV := m
- CONFIG_DVB_BUDGET_CI := m
- CONFIG_DVB_BUDGET_PATCH := m
- CONFIG_DVB_AV7110 := m
- CONFIG_DVB_AV7110_OSD := y
-# Uncomment the next two lines to compile the av7110 firmware into the driver.
-# CONFIG_DVB_AV7110_FIRMWARE := y
-# CONFIG_DVB_AV7110_FIRMWARE_FILE := /path/to/firmware/dvb-ttpci-01.fw
- CONFIG_DVB_TTUSB_BUDGET := m
- CONFIG_DVB_TTUSB_DEC := m
- CONFIG_VIDEO_SAA7146 := m
- CONFIG_VIDEO_SAA7146_VV := m
-endif
-
-CONFIG_VIDEO_IVTV := $(if $(wildcard $(src)/ivtv-svnversion.h),m)
-CONFIG_VIDEO_CX88_IVTV := $(if $(wildcard $(src)/cx88-ivtv.c),m)
diff --git a/v4l/Makefile b/v4l/Makefile
index ab94f891f..b8eba1a44 100644
--- a/v4l/Makefile
+++ b/v4l/Makefile
@@ -3,233 +3,64 @@ obj = .
endif
#################################################
-# configuration
+# Version Check
-include $(obj)/Make.config
+ifneq ($(KERNELRELEASE),)
-# symbol exports
-export-objs := video-buf.o v4l1-compat.o v4l2-common.o
-export-objs += ir-common.o
-ifeq ($(CONFIG_VIDEO_DEV),m)
-export-objs += videodev.o
-endif
-export-objs += bttv-if.o btcx-risc.o
-export-objs += cx88-cards.o cx88-core.o
-export-objs += saa7134-core.o saa7134-tvaudio.o
-
-# drivers objects
-ir-common-objs := ir-keymaps.o ir-functions.o
-bttv-objs := bttv-driver.o bttv-cards.o bttv-risc.o bttv-if.o \
- bttv-vbi.o bttv-i2c.o bttv-input.o
-saa7134-objs := saa7134-core.o saa7134-i2c.o saa7134-video.o \
- saa7134-vbi.o saa7134-tvaudio.o \
- saa7134-cards.o saa7134-ts.o saa7134-input.o
-
-
-cx88xx-objs := cx88-cards.o cx88-core.o cx88-i2c.o cx88-tvaudio.o \
- cx88-input.o
-cx8800-objs := cx88-video.o cx88-vbi.o
-cx8802-objs := cx88-mpeg.o
-tuner-objs := tuner-core.o tuner-types.o tuner-simple.o mt20xx.o tda8290.o tea5767.o
-ifeq ($(CONFIG_XC3028),m)
-tuner-objs += xc3028.o
-endif
-msp3400-objs := msp3400-driver.o msp3400-kthreads.o
-list-multi := bttv.o saa7134.o cx88xx.o cx8800.o cx88-alsa.o cx8802.o
-em28xx-objs := em28xx-video.o em28xx-i2c.o em28xx-cards.o em28xx-core.o \
- em28xx-input.o
-cx25840-objs := cx25840-core.o cx25840-audio.o cx25840-firmware.o \
- cx25840-vbi.o
-dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o \
- dvb_ca_en50221.o dvb_frontend.o \
- dvb_net.o dvb_ringbuffer.o
-b2c2-flexcop-objs := flexcop.o flexcop-fe-tuner.o flexcop-i2c.o \
- flexcop-sram.o flexcop-eeprom.o flexcop-misc.o \
- flexcop-hw-filter.o flexcop-dma.o
-b2c2-flexcop-pci-objs := flexcop-pci.o
-b2c2-flexcop-usb-objs := flexcop-usb.o
-dvb-usb-objs := dvb-usb-firmware.o dvb-usb-init.o dvb-usb-urb.o \
- dvb-usb-i2c.o dvb-usb-dvb.o dvb-usb-remote.o
-dvb-usb-vp7045-objs := vp7045.o vp7045-fe.o
-dvb-usb-vp702x-objs := vp702x.o vp702x-fe.o
-dvb-usb-dtt200u-objs := dtt200u.o dtt200u-fe.o
-dvb-usb-dibusb-common-objs := dibusb-common.o
-dvb-usb-a800-objs := a800.o
-dvb-usb-dibusb-mb-objs := dibusb-mb.o
-dvb-usb-dibusb-mc-objs := dibusb-mc.o
-dvb-usb-nova-t-usb2-objs := nova-t-usb2.o
-dvb-usb-umt-010-objs := umt-010.o
-dvb-usb-digitv-objs := digitv.o
-dvb-usb-cxusb-objs := cxusb.o
-dvb-ttpci-objs := av7110_hw.o av7110_v4l.o av7110_av.o \
- av7110_ca.o av7110.o av7110_ipack.o av7110_ir.o
-saa7146-objs := saa7146_i2c.o saa7146_core.o
-saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o \
- saa7146_video.o saa7146_hlp.o saa7146_vbi.o
-pvrusb2-objs := pvrusb2-i2c-core.o pvrusb2-i2c-cmd-v4l2.o \
- pvrusb2-audio.o pvrusb2-i2c-chips-v4l2.o \
- pvrusb2-encoder.o pvrusb2-video-v4l.o \
- pvrusb2-eeprom.o pvrusb2-tuner.o pvrusb2-demod.o \
- pvrusb2-main.o pvrusb2-hdw.o pvrusb2-v4l2.o \
- pvrusb2-sysfs.o pvrusb2-context.o pvrusb2-io.o \
- pvrusb2-ioread.o pvrusb2-debugifc.o
-dvb-firesat-objs := firesat.o avc_api.o cmp.o firesat-rc.o
-ivtv-objs := ivtv-driver.o ivtv-fileops.o ivtv-i2c.o ivtv-streams.o \
- ivtv-firmware.o ivtv-reset.o ivtv-gpio.o ivtv-queue.o \
- ivtv-irq.o ivtv-mailbox.o ivtv-vbi.o ivtv-kthreads.o \
- ivtv-audio.o ivtv-ioctl.o ivtv-controls.o ivtv-video.o \
- ivtv-cards.o ivtv-yuv.o
-ivtv-fb-objs := ivtv-osd.o ivtv-queue.o
-cpia2-objs := cpia2_core.o cpia2_usb.o cpia2_v4l.o
-
-obj-m := video-buf.o v4l1-compat.o v4l2-common.o
-obj-m += compat_ioctl32.o
-ifeq ($(CONFIG_VIDEO_DEV),m)
-obj-m += videodev.o
-endif
+-include $(TOPDIR)/Rules.make
-obj-$(CONFIG_VIDEO_MXB) += mxb.o tea6420.o tea6415c.o tda9840.o
-obj-$(CONFIG_VIDEO_DPC) += dpc7146.o
-obj-$(CONFIG_VIDEO_HEXIUM_ORION)+= hexium_orion.o
-obj-$(CONFIG_VIDEO_HEXIUM_GEMINI)+= hexium_gemini.o
-obj-$(CONFIG_VIDEO_BTTV) += btcx-risc.o ir-common.o bttv.o tveeprom.o
-obj-$(CONFIG_VIDEO_CX88) += btcx-risc.o cx88xx.o cx8800.o cx8802.o \
- cx88-blackbird.o tveeprom.o
-obj-$(CONFIG_VIDEO_CX88_IVTV) += cx88-ivtv.o
-obj-$(CONFIG_TVP5150) += tvp5150.o
-obj-$(CONFIG_EM28XX) += em28xx.o tveeprom.o
-obj-$(CONFIG_VIDEO_DECODER) += saa7115.o cx25840.o saa7127.o bt832.o
-
-ifeq ($(CONFIG_VIDEO_ALSA),y)
- EXTRA_CFLAGS += -DUSING_CX88_ALSA=1
- obj-$(CONFIG_VIDEO_CX88) += cx88-alsa.o
- obj-$(CONFIG_VIDEO_SAA7134) += saa7134-alsa.o
-## This one is installed by ALSA as snd_bt87x
-# obj-$(CONFIG_VIDEO_BTTV) += bt87x.o
-endif
+else
-obj-$(CONFIG_VIRTUAL_DEVICE) += vivi.o
-obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o saa7134-empress.o saa6752hs.o
-obj-$(CONFIG_VIDEO_SAA7134) += saa7134-oss.o
-obj-$(CONFIG_VIDEO_IR) += ir-common.o
-obj-$(CONFIG_VIDEO_TUNER) += tuner.o tda9887.o saa6588.o
-obj-$(CONFIG_VIDEO_TVAUDIO) += msp3400.o tvaudio.o tvmixer.o wm8775.o \
- cs53l32a.o tda7432.o tda9875.o
-obj-$(CONFIG_VIDEO_CPIA2) += cpia2.o
-
-obj-$(CONFIG_VIDEO_CX88_DVB) += video-buf-dvb.o cx88-dvb.o cx88-vp3054-i2c.o
-obj-$(CONFIG_VIDEO_SAA7134_DVB) += video-buf-dvb.o saa7134-dvb.o
-obj-$(CONFIG_DVB_BT8XX) += bt878.o dvb-bt8xx.o dst.o dst_ca.o
-obj-$(CONFIG_DVB_FRONTENDS) += dvb-pll.o cx22702.o or51132.o lgdt330x.o \
- mt352.o tda1004x.o sp887x.o nxt6000.o \
- cx24110.o or51211.o nxt200x.o cx24123.o \
- mt312.o stv0299.o bcm3510.o \
- dib3000-common.o dib3000mb.o dib3000mc.o \
- ves1820.o cx22700.o tda8083.o ves1x93.o \
- stv0297.o sp8870.o l64781.o s5h1420.o \
- tda10021.o at76c651.o tda80xx.o zl10353.o
-obj-$(CONFIG_DVB_CORE) += dvb-core.o
-obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o
-obj-$(CONFIG_DVB_B2C2_FLEXCOP) += stv0297_cs2.o
-obj-$(CONFIG_DVB_B2C2_FLEXCOP_PCI) += b2c2-flexcop-pci.o
-obj-$(CONFIG_DVB_B2C2_FLEXCOP_USB) += b2c2-flexcop-usb.o
-obj-$(CONFIG_DVB_CINERGYT2) += cinergyT2.o
-obj-$(CONFIG_DVB_PLUTO2) += pluto2.o
-obj-$(CONFIG_DVB_TTUSB_BUDGET) += dvb-ttusb-budget.o
-obj-$(CONFIG_DVB_TTUSB_DEC) += ttusb_dec.o ttusbdecfe.o
-obj-$(CONFIG_DVB_USB) += dvb-usb.o
-obj-$(CONFIG_DVB_USB_VP7045) += dvb-usb-vp7045.o
-obj-$(CONFIG_DVB_USB_VP702X) += dvb-usb-vp702x.o
-obj-$(CONFIG_DVB_USB_DTT200U) += dvb-usb-dtt200u.o
-obj-$(CONFIG_DVB_USB_A800) += dvb-usb-dibusb-common.o dvb-usb-a800.o
-obj-$(CONFIG_DVB_USB_DIBUSB_MB) += dvb-usb-dibusb-common.o dvb-usb-dibusb-mb.o
-obj-$(CONFIG_DVB_USB_DIBUSB_MC) += dvb-usb-dibusb-common.o dvb-usb-dibusb-mc.o
-obj-$(CONFIG_DVB_USB_NOVA_T_USB2) += dvb-usb-dibusb-common.o \
- dvb-usb-nova-t-usb2.o
-obj-$(CONFIG_DVB_USB_UMT_010) += dvb-usb-dibusb-common.o dvb-usb-umt-010.o
-obj-$(CONFIG_DVB_USB_DIGITV) += dvb-usb-digitv.o
-obj-$(CONFIG_DVB_USB_CXUSB) += dvb-usb-cxusb.o
-obj-$(CONFIG_DVB_BUDGET) += budget-core.o budget.o ttpci-eeprom.o
-obj-$(CONFIG_DVB_BUDGET_AV) += budget-core.o budget-av.o ttpci-eeprom.o
-obj-$(CONFIG_DVB_BUDGET_CI) += budget-core.o budget-ci.o ttpci-eeprom.o
-obj-$(CONFIG_DVB_BUDGET_PATCH) += budget-core.o budget-patch.o ttpci-eeprom.o
-obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o ttpci-eeprom.o
-obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o
-obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o
-obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2.o
-obj-$(CONFIG_DVB_FIRESAT) += dvb-firesat.o
-obj-$(CONFIG_VIDEO_IVTV) += ivtv.o ivtv-fb.o
-
-# 2.6-only stuff
-ifeq ($(VERSION).$(PATCHLEVEL),2.6)
- ifeq ($(CONFIG_VIDEO_BTTV),m)
- bttv-objs += bttv-gpio.o
- obj-$(CONFIG_VIDEO_IR) += ir-kbd-i2c.o
- endif
- ifeq ($(CONFIG_VIDEO_SAA7134),m)
- obj-$(CONFIG_VIDEO_IR) += ir-kbd-i2c.o
- endif
+# take version info from last module build if available
+-include $(obj)/.version
+
+ifneq ($(SRCDIR),)
+KDIR := $(SRCDIR)
+else
+KDIR := /lib/modules/$(KERNELRELEASE)/build
endif
-ifeq ($(CONFIG_VIDEO_ADV_DEBUG),y)
- EXTRA_CFLAGS += -DCONFIG_VIDEO_ADV_DEBUG=1
endif
+#################################################
+# default compilation rule
+
+default:: config-compat.h Makefile.media links .version
+ echo srcdir $(SRCDIR)
+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules
+
+#################################################
+# Object specific rules
+
+-include $(obj)/.myconfig
+-include $(obj)/Makefile.media
+-include $(obj)/Makefile.ivtv
+
+#################################################
+# CFLAGS configuration
+
ifeq ($(CONFIG_XC3028),m)
EXTRA_CFLAGS += -DCONFIG_XC3028=1
endif
-# for DVB
-EXTRA_CFLAGS += -DDVB_CVS=1
-EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core/
-EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/frontends/
ifeq ($(CONFIG_DVB_FIRESAT),m)
- EXTRA_CFLAGS += -I$(srctree)/drivers/ieee1394/
-endif
-ifeq ($(CONFIG_VIDEO_CX88_DVB),m)
- EXTRA_CFLAGS += -DCONFIG_VIDEO_CX88_DVB_MODULE=1
- EXTRA_CFLAGS += -DHAVE_CX22702=1
- EXTRA_CFLAGS += -DHAVE_OR51132=1
- EXTRA_CFLAGS += -DHAVE_LGDT330X=1
- EXTRA_CFLAGS += -DHAVE_MT352=1
- EXTRA_CFLAGS += -DHAVE_ZL10353=1
- EXTRA_CFLAGS += -DHAVE_NXT200X=1
- EXTRA_CFLAGS += -DHAVE_CX24123=1
- EXTRA_CFLAGS += -DHAVE_VP3054_I2C=1
-endif
-ifeq ($(CONFIG_VIDEO_SAA7134_DVB),m)
- EXTRA_CFLAGS += -DHAVE_MT352=1
- EXTRA_CFLAGS += -DHAVE_TDA1004X=1
- EXTRA_CFLAGS += -DHAVE_NXT200X=1
-endif
-ifeq ($(CONFIG_VIDEO_BUF_DVB),m)
- EXTRA_CFLAGS += -DHAVE_VIDEO_BUF_DVB=1
+ EXTRA_CFLAGS += -I$(srctree)/drivers/ieee1394/
endif
+
ifeq ($(CONFIG_DVB_AV7110_OSD),y)
EXTRA_CFLAGS += -DCONFIG_DVB_AV7110_OSD=1
endif
-ifeq ($(CONFIG_DVB_AV7110_FIRMWARE),y)
-src := $(PWD)
-
-$(src)/av7110.c: $(obj)/av7110_firm.h
-$(obj)/fdump:
- $(CC) -o $@ $(src)/fdump.c
-
-$(obj)/av7110_firm.h: $(obj)/fdump
- $(obj)/fdump $(CONFIG_DVB_AV7110_FIRMWARE_FILE) dvb_ttpci_fw $@
-
-EXTRA_CFLAGS += -DCONFIG_DVB_AV7110_FIRMWARE_FILE
+ifeq ($(CONFIG_DVB_AV7110_FIRMWARE),y)
+ EXTRA_CFLAGS += -DCONFIG_DVB_AV7110_FIRMWARE_FILE
endif
-ifeq ($(ARCH),)
-ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
- -e s/arm.*/arm/ -e s/sa110/arm/ \
- -e s/s390x/s390/ -e s/parisc64/parisc/ )
-endif
+EXTRA_CFLAGS += -g
+
+EXTRA_CFLAGS += $(if $(wildcard $(srctree)/.mm), -DMM_KERNEL)
#################################################
-# compile modules
+# Kernel 2.4/2.6 specific rules
ifneq ($(KERNELRELEASE),)
@@ -237,15 +68,17 @@ ifeq ($(VERSION).$(PATCHLEVEL),2.6)
export-objs :=
list-multi :=
else
+include $(obj)/Makefile.kern24
+
multi-m := $(filter $(list-multi), $(obj-m))
int-m := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs)))
export-objs := $(filter $(int-m) $(obj-m),$(export-objs))
endif
-CC += -I$(obj)
-EXTRA_CFLAGS += -g
+endif
-EXTRA_CFLAGS += $(if $(wildcard $(srctree)/.mm), -DMM_KERNEL)
+#################################################
+# Directories to be used
snapshot := $(wildcard $(obj)/.snapshot)
ifneq ($(snapshot),)
@@ -253,44 +86,15 @@ SNAPSHOT_CFLAGS := -DSNAPSHOT='$(shell cat $(snapshot))'
EXTRA_CFLAGS += $(SNAPSHOT_CFLAGS)
endif
-#
-# Need to compile with kernel 2.4
-#
-bttv.o: $(bttv-objs)
- $(LD) -r -o $@ $(bttv-objs)
-
-cx25840.o: $(cx25840-objs)
- $(LD) -g -r -o $@ $(cx25840-objs)
-
-cx8800.o: $(cx8800-objs)
- $(LD) -g -r -o $@ $(cx8800-objs)
-
-cx8802.o: $(cx8802-objs)
- $(LD) -g -r -o $@ $(cx8802-objs)
-
-cx88xx.o: $(cx88xx-objs)
- $(LD) -g -r -o $@ $(cx88xx-objs)
-
-em28xx.o: $(em28xx-objs)
- $(LD) -g -r -o $@ $(em28xx-objs)
-
-saa7134.o: $(saa7134-objs)
- $(LD) -g -r -o $@ $(saa7134-objs)
-
-tuner.o: $(tuner-objs)
- $(LD) -g -r -o $@ $(tuner-objs)
-
--include $(TOPDIR)/Rules.make
-else
-# take version info from last module build if available
--include $(obj)/.version
-endif
-
-KDIR := /lib/modules/$(KERNELRELEASE)/build
PWD := $(shell pwd)
-DEST := /lib/modules/$(KERNELRELEASE)/$(MDIR)
+DEST := /lib/modules/$(KERNELRELEASE)/v4l2
KDIR26 := /lib/modules/$(KERNELRELEASE)/kernel/drivers/media
-KDIRUSB := /lib/modules/$(KERNELRELEASE)/kernel/drivers/usb/media
+
+#################################################
+# Compiler fixup rules
+
+HOSTCC:=$(CC)
+CC += -I$(obj)
ifeq ($(VERSION).$(PATCHLEVEL),2.6)
CPPFLAGS := -I$(SUBDIRS)/../linux/include $(CPPFLAGS) -I$(SUBDIRS)/
@@ -299,176 +103,237 @@ else
MYCFLAGS := CFLAGS="-I../linux/include -D__KERNEL__ -I$(KDIR)/include -DEXPORT_SYMTAB"
endif
+
+#################################################
# which files to install?
+
inst-m := $(wildcard *.ko)
ifeq ($(inst-m),)
inst-m := $(obj-m)
endif
-inst_common := ir-common.ko
-inst_video := btcx-risc.ko bttv.ko tda9887.ko tuner.ko tvaudio.ko tveeprom.ko saa6588.ko
-#inst_video += bt87x.ko
-inst_video += tvmixer.ko v4l1-compat.ko v4l2-common.ko wm8775.ko cs53l32a.ko
-inst_video += video-buf.ko video-buf-dvb.ko
-inst_video += videodev.ko
-inst_video += ir-kbd-i2c.ko msp3400.ko
-inst_video += tvp5150.ko saa7134-alsa.ko saa7134-oss.ko
-inst_video += saa7115.ko cx25840.ko saa7127.ko compat_ioctl32.ko
-inst_cx88 := cx88xx.ko cx8800.ko cx8802.ko cx88-alsa.ko cx88-dvb.ko
-inst_video += vivi.ko
-inst_cx88 += cx88-blackbird.ko cx88-vp3054-i2c.ko cx88-ivtv.ko
-inst_saa7134 := saa6752hs.ko saa7134.ko saa7134-empress.ko saa7134-dvb.ko
-inst_em28xx := em28xx.ko
-inst_bt8xx := bt878.ko dvb-bt8xx.ko dst.ko dst_ca.ko
-inst_frontends := cx22702.ko dvb-pll.ko lgdt330x.ko or51132.ko tda1004x.ko
-inst_frontends += mt352.ko sp887x.ko nxt6000.ko cx24110.ko or51211.ko
-inst_frontends += nxt200x.ko cx24123.ko mt312.ko stv0299.ko
-inst_frontends += bcm3510.ko dib3000mb.ko dib3000mc.ko ves1820.ko
-inst_frontends += cx22700.ko tda8083.ko ves1x93.ko stv0297.ko sp8870.ko
-inst_frontends += l64781.ko s5h1420.ko tda10021.ko at76c651.ko tda80xx.ko
-inst_frontends += stv0297_cs2.ko zl10353.ko
-inst_dvb-core := dvb-core.ko
-inst_saa7146 := saa7146.ko saa7146_vv.ko
-inst_b2c2 := b2c2-flexcop.ko b2c2-flexcop-pci.ko b2c2-flexcop-usb.ko
-inst_cinergyT2 := cinergyT2.ko
-inst_dvb-usb := dvb-usb.ko dvb-usb-vp7045.ko dvb-usb-vp702x.ko
-inst_dvb-usb += dvb-usb-dtt200u.ko dvb-usb-a800.ko dvb-usb-dibusb-mb.ko
-inst_dvb-usb += dvb-usb-dibusb-mc.ko dvb-usb-nova-t-usb2.ko
-inst_dvb-usb += dvb-usb-umt-010.ko dvb-usb-digitv.ko dvb-usb-cxusb.ko
-inst_pluto2 := pluto2.ko
-inst_ttpci := budget-core.ko budget.ko ttpci-eeprom.ko budget-av.ko
-inst_ttpci += budget-ci.ko budget-patch.ko dvb-ttpci.ko
-inst_ttusb-budget := dvb-ttusb-budget.ko
-inst_ttusb-dec := ttusb_dec.ko ttusbdecfe.ko
-inst_pvrusb2 := pvrusb2.ko
-inst_firesat := dvb-firesat.ko
-inst_ivtv := ivtv.ko ivtv-fb.ko
-
v4l_modules := $(shell /sbin/lsmod|cut -d' ' -f1 ) $(patsubst %.ko,%,$(inst-m))
+#################################################
# locales seem to cause trouble sometimes.
LC_ALL = POSIX
export LC_ALL
-all:: default
-default:: links .version
- $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules
+#################################################
+# Generic wildcard rules
-qconfig:: links .version
- ./scripts/make_kconfig.pl /usr/src/linux-2.6.14 $(ARCH)
- $(KDIR)/scripts/kconfig/qconf Kconfig
+%.asm: %.o
+ objdump -S $< > $@
-ivtv-checkout::
- @if [ ! -d ivtv ]; then \
- echo retrieving the latest ivtv sources from ivtvdriver.org; \
- echo this step requires subversion to be installed; \
- svn co http://ivtvdriver.org/svn/ivtv/trunk ivtv; \
- fi
+#################################################
+# all file compilation rule
-ivtv-update ivtv-up:: ivtv
- @svn up ivtv
+all:: allmodconfig default
-ivtv-links:: ivtv-checkout
- @echo creating ivtv symbolic links...
- @find ivtv/driver -name '*.[ch]' -type f -exec ln -sf '{}' . \;
- @find ivtv/i2c-drivers -name '*.[ch]' -type f -exec ln -sf '{}' . \;
+#################################################
+# installation invocation rules
-ivtv:: ivtv-links
- @echo '#define IVTV_DRIVER_VERSION_COMMENT ' \
- '"(v4l-dvb + ivtv virtual merge)' \
- "`svn info ivtv | grep Revision`"'"' > ivtv-svnversion.h
- @echo ivtv trunk merged. Run make to build the entire tree.
+install:: media-install ivtv-install
-cx88-ivtv::
- @echo creating cx88-ivtv symbolic links...
- @ln -sf ../v4l_experimental/cx88-ivtv.c .
+remove rminstall:: media-rminstall ivtv-rminstall
+
+#################################################
+# Compiling preparation rules
+
+Makefile.media:: .version
+ scripts/make_makefile.pl
+
+.version::
+ifneq ($(KERNELRELEASE),)
+ @echo -e VERSION=$(VERSION)\\nPATCHLEVEL:=$(PATCHLEVEL)\\nSUBLEVEL:=$(SUBLEVEL)\\nKERNELRELEASE:=$(KERNELRELEASE) > $(obj)/.version
+ifneq ($(SRCDIR),)
+ @echo -e SRCDIR=$(SRCDIR)\\n >> $(obj)/.version
+endif
+else
+ @echo "No version yet."
+ @uname -r|perl -ne 'if (/^([0-9]*)\.([0-9])*\.([0-9]*)(.*)$$/) { printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",$$1,$$2,$$3,$$1,$$2,$$3,$$4); };' > $(obj)/.version
+endif
+
+release::
+ifneq ($(VER),)
+ @echo "Forcing compiling to version $(VER)."
+ @echo $(VER)|perl -ne 'if (/^([0-9]*)\.([0-9])*\.([0-9]*)(.*)$$/) { printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",$$1,$$2,$$3,$$1,$$2,$$3,$$4); };' > $(obj)/.version
+else
+ifneq ($(DIR),)
+ @perl -e 'open IN,"<$(DIR)/Makefile"; \
+ while (<IN>) { \
+ if (/^VERSION\s*=\s*([0-9]+)/){ $$version=$$1; next; }\
+ if (/^PATCHLEVEL\s*=\s*([0-9]+)/){ $$level=$$1; next; }\
+ if (/^SUBLEVEL\s*=\s*([0-9]+)/){ $$sublevel=$$1; next; }\
+ if (/^EXTRAVERSION\s*=\s*([^\s]+)\n/){ $$extra=$$1; next; }\
+ }; \
+ printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n", \
+ $$version,$$level,$$sublevel,$$version,$$level,$$sublevel,$$extra); \
+ printf ("SRCDIR:=$(DIR)\n");' > $(obj)/.version
+ @cat .version|grep KERNELRELEASE:|sed s,'KERNELRELEASE:=','Forcing compiling to version ',
+
+ @if [ ! -f $(DIR)/scripts/kallsyms ]; then \
+ echo "*** Warning: You should configure and build kernel before compiling V4L"; \
+ fi
+
+else
+ @echo "No version specified. Using `uname -r`."
+ @uname -r|perl -ne 'if (/^([0-9]*)\.([0-9])*\.([0-9]*)(.*)$$/) { printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",$$1,$$2,$$3,$$1,$$2,$$3,$$4); };' > $(obj)/.version
+endif
+endif
links::
@echo creating symbolic links...
@find ../linux/drivers/media -name '*.[ch]' -type f -exec ln -sf '{}' . \;
@find ../linux/sound -name '*.[ch]' -type f -exec ln -sf '{}' . \;
-# @find ../linux/include -name '*.[h]' -type f -exec ln -sf '{}' . \;
+config-compat.h:: .myconfig
+ @echo \#ifndef __CONFIG_COMPAT_H__ > config-compat.h
+ @echo \#define __CONFIG_COMPAT_H__ >> config-compat.h
+ @echo >> config-compat.h
+ @echo \#include \<linux\/config\.h\> >> config-compat.h
+ @echo >> config-compat.h
+ @grep "CONFIG\_" .myconfig | grep -v "\:\= n" | \
+ sed s/"CONFIG\_"/"\#undef CONFIG\_"/1 | \
+ sed s/"\:\= .*"/""/1 >> config-compat.h >> config-compat.h
+ @echo >> config-compat.h
+ @grep "CONFIG\_" .myconfig | grep -v "\:\= n" | \
+ sed s/"CONFIG\_"/"\#define CONFIG\_"/1 | \
+ sed s/"\:\="/""/1 >> config-compat.h >> config-compat.h
+ @echo >> config-compat.h
+ @echo \#endif >> config-compat.h
kernel-links makelinks::
cd ..; v4l/scripts/makelinks.sh $(KDIR)
-install:: v4l-install dvb-install
-
-v4l-install:: v4l-rminstall
- @echo -e "\nInstalling new V4L modules at corresponding Kernel dir..."
-
- @strip --strip-debug $(inst-m)
+#################################################
+# Cardlist updating rule
- -install -d $(KDIR26)/common
- -install -m 644 -c $(inst_common) $(KDIR26)/common
+card cardlist cardlists::
+ scripts/cardlist
- -install -d $(KDIR26)/video
- -install -m 644 -c $(inst_video) $(KDIR26)/video
+#################################################
+# Cleaning rules
- -install -d $(KDIR26)/video/cx88
- -install -m 644 -c $(inst_cx88) $(KDIR26)/video/cx88
+clean::
+ @find . -name '*.c' -type l -exec rm '{}' \;
+ @find . -name '*.h' -type l -exec rm '{}' \;
+ -rm -f *~ *.o *.ko .*.o.cmd .*.ko.cmd *.mod.c av7110_firm.h fdump \
+ ivtv-svnversion.h config-compat.h
- -install -d $(KDIR26)/video/saa7134
- -install -m 644 -c $(inst_saa7134) $(KDIR26)/video/saa7134
+distclean:: clean
+ -rm -f .version .*.o.flags .*.o.d Makefile.media \
+ Kconfig Kconfig.kern .config .config.cmd
+ -rm -rf .tmp_versions
+ @find .. -name '*.orig' -exec rm '{}' \;
+ @find .. -name '*.rej' -exec rm '{}' \;
- -install -d $(KDIR26)/video/em28xx
- -install -m 644 -c $(inst_em28xx) $(KDIR26)/video/em28xx
+#################################################
+# Kernel module insert/removal rules
- -install -d $(KDIR26)/video/pvrusb2
- -install -m 644 -c $(inst_pvrusb2) $(KDIR26)/video/pvrusb2
+insmod load::
+ scripts/insmod.sh load
- -install -d $(KDIR26)/video/ivtv
- -install -m 644 -c $(inst_ivtv) $(KDIR26)/video/ivtv
+rmmod unload::
+ scripts/insmod.sh unload
-# -install -d $(KDIRUSB)
-# -install -m 644 -c $(inst_usb) $(KDIRUSB)/
+reload::
+ scripts/insmod.sh reload
- /sbin/depmod -a ${KERNELRELEASE}
+#################################################
+# Configuration rules
-dvb-install:: dvb-rminstall
- @echo -e "\nInstalling new DVB modules at corresponding Kernel dir..."
+# SHELL used by kbuild
+CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
+ else if [ -x /bin/bash ]; then echo /bin/bash; \
+ else echo sh; fi ; fi)
- @strip --strip-debug $(inst-m)
+build := srctree=$(KDIR) HOSTCXX="$(CXX)" HOSTCC="$(HOSTCC)" CONFIG_SHELL="$(CONFIG_SHELL)" -f $(KDIR)/scripts/Makefile.build obj
- -install -d $(KDIR26)/common
- -install -m 644 -c $(inst_saa7146) $(KDIR26)/common
+xconfig:: links .version
+ -if [ ! -f $(KDIR)/scripts/kconfig/qconf ]; then \
+ $(MAKE) -C $(KDIR) $(build)=scripts/kconfig qconf-target=1 scripts/kconfig/qconf; \
+ fi
+ ./scripts/make_kconfig.pl
+ $(KDIR)/scripts/kconfig/qconf Kconfig
+ ./scripts/make_noconfig.pl
- -install -d $(KDIR26)/dvb/frontends
- -install -m 644 -c $(inst_frontends) $(KDIR26)/dvb/frontends
+gconfig:: links .version
+ -if [ ! -f $(KDIR)/scripts/kconfig/gconf ]; then \
+ $(MAKE) -C $(KDIR) $(build)=scripts/kconfig scripts/kconfig/gconf; \
+ fi
+ ./scripts/make_kconfig.pl
+ $(KDIR)/scripts/kconfig/gconf Kconfig
+ ./scripts/make_noconfig.pl
- -install -d $(KDIR26)/dvb/bt8xx
- -install -m 644 -c $(inst_bt8xx) $(KDIR26)/dvb/bt8xx
+config:: links .version
+ -if [ ! -f $(KDIR)/scripts/kconfig/conf ]; then \
+ $(MAKE) -C $(KDIR) $(build)=scripts/kconfig scripts/kconfig/conf; \
+ fi
+ ./scripts/make_kconfig.pl
+ $(KDIR)/scripts/kconfig/conf Kconfig
+ ./scripts/make_noconfig.pl
+
+menuconfig:: links .version
+ ./scripts/make_kconfig.pl
+ -rm scripts/lxdialog scripts/kconfig
+ -if [ -d $(KDIR)/scripts/lxdialog ]; then \
+ if [ ! -f $(KDIR)/scripts/lxdialog/lxdialog ]; then \
+ $(MAKE) -C $(KDIR) $(build)=scripts/lxdialog; \
+ fi; \
+ ln -s $(KDIR)/scripts/lxdialog scripts/lxdialog; \
+ fi
- -install -d $(KDIR26)/dvb/dvb-core
- -install -m 644 -c $(inst_dvb-core) $(KDIR26)/dvb/dvb-core
+ -if [ -d $(KDIR)/scripts/kconfig ]; then \
+ if [ -d $(KDIR)/scripts/kconfig/lxdialog ]; then \
+ if [ ! -f $(KDIR)/scripts/kconfig/lxdialog ]; then \
+ $(MAKE) -C $(KDIR) $(build)=scripts/kconfig/lxdialog; \
+ fi; \
+ fi; \
+ if [ ! -f $(KDIR)/scripts/kconfig/mconf ]; then \
+ $(MAKE) -C $(KDIR) $(build)=scripts/kconfig scripts/kconfig/mconf; \
+ fi; \
+ ln -s $(KDIR)/scripts/kconfig scripts/kconfig; \
+ fi
- -install -d $(KDIR26)/dvb/b2c2
- -install -m 644 -c $(inst_b2c2) $(KDIR26)/dvb/b2c2
+ $(KDIR)/scripts/kconfig/mconf Kconfig
+ ./scripts/make_noconfig.pl
- -install -d $(KDIR26)/dvb/cinergyT2
- -install -m 644 -c $(inst_cinergyT2) $(KDIR26)/dvb/cinergyT2
+allyesconfig allmodconfig:: links .version
+ ./scripts/make_kconfig.pl 1
+ ./scripts/make_noconfig.pl
- -install -d $(KDIR26)/dvb/dvb-usb
- -install -m 644 -c $(inst_dvb-usb) $(KDIR26)/dvb/dvb-usb
+#################################################
+# IVTV link rules
- -install -d $(KDIR26)/dvb/pluto2
- -install -m 644 -c $(inst_pluto2) $(KDIR26)/dvb/pluto2
+ivtv-checkout::
+ @if [ ! -d ivtv ]; then \
+ echo retrieving the latest ivtv sources from ivtvdriver.org; \
+ echo this step requires subversion to be installed; \
+ svn co http://ivtvdriver.org/svn/ivtv/trunk ivtv; \
+ fi
- -install -d $(KDIR26)/dvb/ttpci
- -install -m 644 -c $(inst_ttpci) $(KDIR26)/dvb/ttpci
+ivtv-update ivtv-up:: ivtv
+ @svn up ivtv
- -install -d $(KDIR26)/dvb/ttusb-budget
- -install -m 644 -c $(inst_ttusb-budget) $(KDIR26)/dvb/ttusb-budget
+ivtv-links:: ivtv-checkout
+ @echo creating ivtv symbolic links...
+ @find ivtv/driver -name '*.[ch]' -type f -exec ln -sf '{}' . \;
+ @find ivtv/i2c-drivers -name '*.[ch]' -type f -exec ln -sf '{}' . \;
- -install -d $(KDIR26)/dvb/ttusb-dec
- -install -m 644 -c $(inst_ttusb-dec) $(KDIR26)/dvb/ttusb-dec
+ivtv:: ivtv-links
+ @echo '#define IVTV_DRIVER_VERSION_COMMENT ' \
+ '"(v4l-dvb + ivtv virtual merge)' \
+ "`svn info ivtv | grep Revision`"'"' > ivtv-svnversion.h
+ @echo ivtv trunk merged. Run make to build the entire tree.
- -install -d $(KDIR26)/dvb/firesat
- -install -m 644 -c $(inst_firesat) $(KDIR26)/dvb/firesat
+cx88-ivtv::
+ @echo creating cx88-ivtv symbolic links...
+ @ln -sf ../v4l_experimental/cx88-ivtv.c .
- /sbin/depmod -a ${KERNELRELEASE}
+#################################################
+# Old instalation rule
old-install:: rminstall
@echo -e "\nInstalling new V4L modules at $(DEST)..."
@@ -480,76 +345,8 @@ old-install:: rminstall
/sbin/depmod -a ${KERNELRELEASE}
-rminstall:: v4l-rminstall dvb-rminstall
-
-v4l-rminstall::
- @echo -e "\nEliminating old V4L modules (errors on this step is not a problem).."
-
- -@rm -r $(DEST) \
- $(addprefix $(KDIR26)/common/, $(inst_common)) \
- $(addprefix $(KDIR26)/video/, $(inst_video)) \
- $(addprefix $(KDIR26)/video/cx88/, $(inst_cx88)) \
- $(addprefix $(KDIR26)/video/saa7134/, $(inst_saa7134)) \
- $(addprefix $(KDIR26)/video/pvrusb2/, $(inst_pvrusb2)) \
- $(addprefix $(KDIR26)/video/ivtv/, $(inst_ivtv)) \
- $(addprefix $(KDIR26)/video/em28xx/, $(inst_em28xx)) \
- $(addprefix $(KDIRUSB)/, $(inst_em28xx)) \
- $(addprefix $(KDIR26)/common/, $(addsuffix .gz,$(inst_common))) \
- $(addprefix $(KDIR26)/video/, $(addsuffix .gz,$(inst_video))) \
- $(addprefix $(KDIR26)/video/cx88/, $(addsuffix .gz,$(inst_cx88))) \
- $(addprefix $(KDIR26)/video/saa7134/, $(addsuffix .gz,$(inst_saa7134))) 2>/dev/null \
- $(addprefix $(KDIR26)/video/pvrusb2/, $(addsuffix .gz,$(inst_pvrusb2))) 2>/dev/null \
- $(addprefix $(KDIR26)/video/ivtv/, $(addsuffix .gz,$(inst_ivtv))) 2>/dev/null \
- $(addprefix $(KDIR26)/video/em28xx/, $(addsuffix .gz,$(inst_em28xx))) 2>/dev/null \
- $(addprefix $(KDIRUSB)/, $(addsuffix .gz,$(inst_em28xx))) 2>/dev/null
- @echo
-
-dvb-rminstall::
- @echo -e "\nEliminating old DVB modules (errors on this step is not a problem).."
-
- -@rm -r $(DEST) \
- $(addprefix $(KDIR26)/dvb/bt8xx/, $(inst_bt8xx)) \
- $(addprefix $(KDIR26)/dvb/frontends/, $(inst_frontends)) \
- $(addprefix $(KDIR26)/dvb/dvb-core/, $(inst_dvb-core)) \
- $(addprefix $(KDIR26)/dvb/b2c2/, $(inst_b2c2)) \
- $(addprefix $(KDIR26)/dvb/cinergyT2/, $(inst_cinergyT2)) \
- $(addprefix $(KDIR26)/dvb/dvb-usb/, $(inst_dvb-usb)) \
- $(addprefix $(KDIR26)/dvb/pluto2/, $(inst_pluto2)) \
- $(addprefix $(KDIR26)/dvb/ttpci/, $(inst_ttpci)) \
- $(addprefix $(KDIR26)/dvb/ttusb-budget/, $(inst_ttusb-budget)) \
- $(addprefix $(KDIR26)/dvb/ttusb-dec/, $(inst_ttusb-dec)) \
- $(addprefix $(KDIR26)/dvb/firesat/, $(inst_firesat)) \
- $(addprefix $(KDIR26)/dvb/bt8xx/, $(addsuffix .gz,$(inst_bt8xx))) \
- $(addprefix $(KDIR26)/dvb/frontends/, $(addsuffix .gz,$(inst_frontends))) \
- $(addprefix $(KDIR26)/dvb/dvb-core/, $(addsuffix .gz,$(inst_dvb-core))) \
- $(addprefix $(KDIR26)/dvb/b2c2/, $(addsuffix .gz,$(inst_b2c2))) \
- $(addprefix $(KDIR26)/dvb/cinergyT2/, $(addsuffix .gz,$(inst_cinergyT2))) \
- $(addprefix $(KDIR26)/dvb/dvb-usb/, $(addsuffix .gz,$(inst_dvb-usb))) \
- $(addprefix $(KDIR26)/dvb/pluto2/, $(addsuffix .gz,$(inst_pluto2))) \
- $(addprefix $(KDIR26)/dvb/ttpci/, $(addsuffix .gz,$(inst_ttpci))) \
- $(addprefix $(KDIR26)/dvb/ttusb-budget/, $(addsuffix .gz,$(inst_ttusb-budget))) \
- $(addprefix $(KDIR26)/dvb/ttusb-dec/, $(addsuffix .gz,$(inst_ttusb-dec))) \
- $(addprefix $(KDIR26)/dvb/firesat/, $(addsuffix .gz,$(inst_firesat))) 2>/dev/null
- @echo
-
-rmmodules::
- rmmod -w $(shell echo "$(v4l_modules)"|sed s,' ','\n',g|sed s,'-','_',g|sort|uniq -d)
-
-clean::
- @find . -name '*.c' -type l -exec rm '{}' \;
- @find . -name '*.h' -type l -exec rm '{}' \;
- -rm -f *~ *.o *.ko .*.o.cmd .*.ko.cmd *.mod.c av7110_firm.h fdump \
- ivtv-svnversion.h \
- Kconfig Kconfig.kern .config .config.cmd
-
-distclean:: clean
- -rm -f .version .*.o.flags .*.o.d
- -rm -rf .tmp_versions
- @find .. -name '*.orig' -exec rm '{}' \;
- @find .. -name '*.rej' -exec rm '{}' \;
-
-change changes changelog::
- make -C .. changelog
+#################################################
+# Tree management rules
update::
make -C .. update
@@ -560,26 +357,13 @@ commit cvscommit hgcommit::
push::
make -C .. push
-insmod load::
- scripts/insmod.sh load
-
-rmmod unload::
- scripts/insmod.sh unload
-
-reload::
- scripts/insmod.sh reload
-
-.version:
-ifneq ($(KERNELRELEASE),)
- echo -e VERSION=$(VERSION)\\nPATCHLEVEL:=$(PATCHLEVEL)\\nSUBLEVEL:=$(SUBLEVEL)\\nKERNELRELEASE:=$(KERNELRELEASE) > $(obj)/.version
-else
- echo "No version yet."
- uname -r|perl -ne 'if (/^([0-9]*)\.([0-9])*\.([0-9]*)(.*)$$/) { printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",$$1,$$2,$$3,$$1,$$2,$$3,$$4); };' > $(obj)/.version
-
-endif
+#################################################
+# Help
+help::
+ @cat ../INSTALL
#################################################
-# build tarballs
+# build tarballs rules
RPWD := $(shell cd .. && pwd)
thisdir := $(notdir $(RPWD))
@@ -590,21 +374,10 @@ tardest ?= .
snapdir := $(HOME)/snapshot
snap := $(name)
-snapshot snap tarball: update distclean
+snapshot snap tarball:: update distclean
echo $(thisdir)
echo $(name)
echo $(date) > .snapshot
(cd ..; tar czf $(snapdir)/$(snap)-$(date).tar.gz .)
cp ChangeLog /$(snapdir)/$(snap)-ChangeLog-$(date)
$(MAKE) -C $(snapdir)
-
-
-#################################################
-# other stuff
-
-%.asm: %.o
- objdump -S $< > $@
-
-card cardlist cardlists:
- scripts/cardlist
-
diff --git a/v4l/Makefile.ivtv b/v4l/Makefile.ivtv
new file mode 100644
index 000000000..69962f9e4
--- /dev/null
+++ b/v4l/Makefile.ivtv
@@ -0,0 +1,25 @@
+#
+# ivtv build rules
+#
+CONFIG_VIDEO_IVTV := $(if $(wildcard $(src)/ivtv-svnversion.h),m)
+CONFIG_VIDEO_CX88_IVTV := $(if $(wildcard $(src)/cx88-ivtv.c),m)
+
+ivtv-objs := ivtv-driver.o ivtv-fileops.o ivtv-i2c.o \
+ ivtv-streams.o ivtv-firmware.o ivtv-reset.o \
+ ivtv-gpio.o ivtv-queue.o ivtv-irq.o ivtv-mailbox.o \
+ ivtv-vbi.o ivtv-kthreads.o ivtv-audio.o ivtv-ioctl.o \
+ ivtv-controls.o ivtv-video.o ivtv-cards.o ivtv-yuv.o
+ivtv-fb-objs := ivtv-osd.o ivtv-queue.o
+
+obj-$(CONFIG_VIDEO_IVTV) += ivtv.o ivtv-fb.o
+obj-$(CONFIG_VIDEO_CX88_IVTV) += cx88-ivtv.o
+
+ivtv-install::
+ @echo -e "\nInstalling $(KDIR26)/video/ivtv files:"
+ @install -d $(KDIR26)/video/ivtv
+ @files='ivtv.ko ivtv-fb.ko cx88-ivtv.ko '; for i in $$files;do if [ -e $$i ]; then echo -n "$$i "; install -m 644 -c $$i $(KDIR26)/video/ivtv; fi; done; echo;
+ /sbin/depmod -a ${KERNELRELEASE}
+
+ivtv-rminstall::
+ @echo -e "\nRemoving old $(KDIR26)/video/ivtv files:"
+ @files='ivtv.ko ivtv-fb.ko cx88-ivtv.ko '; for i in $$files;do if [ -e $(KDIR26)/video/ivtv/$$i ]; then echo -n "$$i "; rm $(KDIR26)/video/ivtv/$$i; fi; done; for i in $$files;do if [ -e $(KDIR26)/video/ivtv/$$i.gz ]; then echo -n "$$i.gz "; rm $(KDIR26)/video/ivtv/$$i.gz; fi; done; echo;
diff --git a/v4l/Makefile.kern24 b/v4l/Makefile.kern24
new file mode 100644
index 000000000..2bab09aee
--- /dev/null
+++ b/v4l/Makefile.kern24
@@ -0,0 +1,28 @@
+#
+# Need to compile with kernel 2.4
+#
+
+bttv.o: $(bttv-objs)
+ $(LD) -r -o $@ $(bttv-objs)
+
+cx25840.o: $(cx25840-objs)
+ $(LD) -g -r -o $@ $(cx25840-objs)
+
+cx8800.o: $(cx8800-objs)
+ $(LD) -g -r -o $@ $(cx8800-objs)
+
+cx8802.o: $(cx8802-objs)
+ $(LD) -g -r -o $@ $(cx8802-objs)
+
+cx88xx.o: $(cx88xx-objs)
+ $(LD) -g -r -o $@ $(cx88xx-objs)
+
+em28xx.o: $(em28xx-objs)
+ $(LD) -g -r -o $@ $(em28xx-objs)
+
+saa7134.o: $(saa7134-objs)
+ $(LD) -g -r -o $@ $(saa7134-objs)
+
+tuner.o: $(tuner-objs)
+ $(LD) -g -r -o $@ $(tuner-objs)
+
diff --git a/v4l/compat.h b/v4l/compat.h
index 9efcfebd1..b9138c7be 100644
--- a/v4l/compat.h
+++ b/v4l/compat.h
@@ -10,6 +10,7 @@
#include <linux/version.h>
#include <linux/utsname.h>
#include <linux/sched.h>
+#include "config-compat.h"
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18)
# define minor(x) MINOR(x)
@@ -131,19 +132,6 @@ static inline unsigned long msleep_interruptible(unsigned int msecs)
}
#endif
-#ifndef DVB_CVS
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
-#undef HAVE_LGDT330X
-#undef HAVE_TDA1004X
-#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15)
-#undef HAVE_NXT200X
-#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-#undef HAVE_CX24123
-#endif
-#endif
-
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
/* some keys from 2.6.x which are not (yet?) in 2.4.x */
# define KEY_PLAY 207
diff --git a/v4l/scripts/gentree.pl b/v4l/scripts/gentree.pl
index 0ae296b93..e58d410c2 100755
--- a/v4l/scripts/gentree.pl
+++ b/v4l/scripts/gentree.pl
@@ -2,12 +2,10 @@
use strict;
use File::Find;
use Fcntl ':mode';
-use Cwd;
my $VER = shift;
my $SRC = shift;
my $DESTDIR = shift;
-my $cwd;
my $extra;
@@ -70,9 +68,9 @@ sub filter_source ($$) {
if ($line =~ m/^#include \"compat.h\"/) {
next;
}
- if ($line =~ m/[\$]Id:/) {
- next;
- }
+# if ($line =~ m/[\$]Id:/) {
+# next;
+# }
if ($line =~ /^#ifdef MM_KERNEL/) {
chomp($line);
$state{$level} = "if";
@@ -81,8 +79,20 @@ sub filter_source ($$) {
$level++;
next;
}
- if ($line =~ /^\s*#if 0\s.*[Kk][Ee][Ee][Pp].*/) {
- print OUT "#if 0\n";
+ if ($line =~ /^#ifdef _COMPAT_H/) {
+ chomp($line);
+ $state{$level} = "if";
+ $if{$level} = 0;
+ print STDERR "/* BP #if MM_KERNEL state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
+ $level++;
+ next;
+ }
+ if ($line =~ m|^\s*\#if\s+0\s*\/[\*]\s*[Kk][Ee].[Pp]\s*[\*]\/(.*)|) {
+ if ($1 eq ";") {
+ print OUT "#if 0\n";
+ } else {
+ print OUT "#if 0$1\n";
+ }
chomp($line);
$state{$level} = "ifother";
$if{$level} = 0;
@@ -90,6 +100,30 @@ sub filter_source ($$) {
$level++;
next;
}
+ if ($line =~ /^#ifdef\sSTV0297_CS2/) {
+ chomp($line);
+ $state{$level} = "if";
+ $if{$level} = 0;
+ print STDERR "/* BP #if 0 state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
+ $level++;
+ next;
+ }
+ if ($line =~ /^#ifndef\sBROKEN_XAWTV/) {
+ chomp($line);
+ $state{$level} = "if";
+ $if{$level} = 1;
+ print STDERR "/* BP #if 0 state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
+ $level++;
+ next;
+ }
+ if ($line =~ /^#ifndef\sSTV0297_CS2/) {
+ chomp($line);
+ $state{$level} = "if";
+ $if{$level} = 1;
+ print STDERR "/* BP #if 1 state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
+ $level++;
+ next;
+ }
if ($line =~ /^#if 0/) {
chomp($line);
$state{$level} = "if";
@@ -98,8 +132,8 @@ sub filter_source ($$) {
$level++;
next;
}
- if ($line =~ /^#if 1\s.*[Kk][Ee][Ee][Pp].*/) {
- print OUT "#if 1\n";
+ if ($line =~ m|^\s*\#if\s+1\s*\/[\*]\s*[Kk][Ee].[Pp]\s*[\*]\/(.*)|) {
+ print OUT "#if 1$1\n";
$state{$level} = "ifother";
$if{$level} = 1;
print STDERR "/* BP #if 1 (keep) state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
@@ -122,6 +156,14 @@ sub filter_source ($$) {
$level++;
next;
}
+ if ($line =~ /^#if.*CONFIG_XC3028/) {
+ chomp($line);
+ $state{$level} = "if";
+ $if{$level} = 0;
+ print STDERR "/* BP #if 1 state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
+ $level++;
+ next;
+ }
if ($line =~ /^#if.*I2C_CLASS_TV_ANALOG/) {
chomp($line);
$state{$level} = "if";
@@ -138,7 +180,15 @@ sub filter_source ($$) {
$level++;
next;
}
- if ($line =~ /^#if.*I2C_CLASS_TV_DIGITAL/) {
+ if ($line =~ /^#ifndef.\s*I2C_PEC/) {
+ chomp($line);
+ $state{$level} = "if";
+ $if{$level} = 0;
+ print STDERR "/* BP #if 1 state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
+ $level++;
+ next;
+ }
+ if ($line =~ /^#ifdef.\s*I2C_PEC/) {
chomp($line);
$state{$level} = "if";
$if{$level} = 1;
@@ -146,14 +196,14 @@ sub filter_source ($$) {
$level++;
next;
}
- if ($line =~ /^#if.*CONFIG_XC3028/) {
+ if ($line =~ /^#if.*I2C_CLASS_TV_DIGITAL/) {
chomp($line);
$state{$level} = "if";
- $if{$level} = 0;
- print STDERR "/* BP #if 1 state=$state{$level} if=$if{$level} level=$level$
+ $if{$level} = 1;
+ print STDERR "/* BP #if 1 state=$state{$level} if=$if{$level} level=$level ($line) */\n" if $DEBUG;
$level++;
next;
- }
+ }
if ($line =~ /^#if.*BTTV_VERSION_CODE/) {
chomp($line);
$line =~ s@^#if\s*@@;
@@ -280,9 +330,7 @@ sub parse_dir {
return;
}
- my $mode = (lstat("$cwd/$file"))[2];
-
-# printf "Permissions of %s/%s are %04o (dir=%s\n", $cwd,$file, $mode, cwd;
+ my $mode = (lstat("$file"))[2];
if ($mode & S_IFDIR) {
return;
@@ -291,14 +339,14 @@ sub parse_dir {
$srcdir =~ s/(.)/\[$1\]/g;
my $f2 = $file;
- $f2 =~ s,^$srcdir,$cwd/$DESTDIR/,;
+ $f2 =~ s,^$srcdir,$DESTDIR/,;
print "from $file to $f2\n";
my $tmp = "/tmp/src.$$";
if ($file =~ m/.*\.[ch]$/) {
- filter_source("$cwd/$file","$tmp");
+ filter_source("$file","$tmp");
} else {
- system("cp $cwd/$file $tmp");
+ system("cp $file $tmp");
}
my $dir = $f2;
@@ -315,12 +363,11 @@ sub parse_dir {
my $patchtmploc = "/tmp/temp.patch";
-printf STDERR <<EOF,$VER,$CODE;
+printf <<EOF,$VER,$CODE;
kernel is %s (0x%x)
EOF
-print STDERR "finding files at $SRC\n";
+print "finding files at $SRC\n";
-$cwd=cwd;
find(\&parse_dir, $SRC);
diff --git a/v4l/scripts/make_kconfig.pl b/v4l/scripts/make_kconfig.pl
index f612e83db..04430ccf2 100755
--- a/v4l/scripts/make_kconfig.pl
+++ b/v4l/scripts/make_kconfig.pl
@@ -1,37 +1,189 @@
#!/usr/bin/perl
use FileHandle;
-my $KDIR=shift;
-my $ARCH=shift;
+my %depend = ();
+my %minver = ();
+my %config = ();
+my %tristate = ();
+my $version, $level, $sublevel;
+
+my $force_kconfig=shift;
+
+sub add_bool($)
+{
+ my $arg=shift;
+
+ $tristate{$arg}="bool";
+# printf "Boolean:%s\n",$arg;
+}
+
+sub add_tristate($)
+{
+ my $arg=shift;
+
+ $tristate{$arg}="tristate";
+# printf "Tristate:%s\n",$arg;
+}
+
+sub add_config($)
+{
+ my $arg=shift;
+
+ if ($arg =~ m/^([A-Z0-9_]+)/) {
+ $config{$1} = 1;
+ }
+}
+
+sub check_deps($)
+{
+ my $arg=shift;
+ $arg=$arg." ";
+
+ while ($arg ne "") {
+ if ($arg =~ m/^([A-Z0-9_]+) /) {
+ my $val=$1;
+ my $prev=$depend{$val};
+ $depend { $val } = 1+$prev;
+ }
+ $arg =~ s/^[^ ]+ //;
+ }
+}
sub open_kconfig($$) {
my ($dir,$file)=@_;
my $in = new FileHandle;
+ my $skip=0;
+ my $key;
-print "opening $file\n";
+#print "opening $file\n";
open $in,"$file";
while (<$in>) {
- if (m;^\s*source[\s\"]+drivers/media/(video|dvb)/Kconfig;) {
- next;
- }
+# if (m;^\s*source[\s\"]+drivers/media/(video|dvb)/Kconfig;) {
+# next;
+# }
if (m|^\s*source[\s\"]+([^\n\s\"]+)[\n\s\"]|) {
open_kconfig($dir,"$dir/$1");
next;
}
+ if (m|^\s+depends on (.*)\n|) {
+ check_deps ($1);
+ }
+ if (m|^\s+select (.*)\n|) {
+ check_deps ($1);
+ }
+ if (m|^\s*bool\s+|) {
+ add_bool($key);
+ }
+ if (m|^\s*tristate\s+|) {
+ add_tristate($key);
+ }
+ if (m|^\s*config (.*)\n|) {
+ $key=$1;
+ add_config ($1);
+
+ my $min=$minver { $key };
+ my $minversion, $minlevel, $minsublevel;
+ if ($min =~ m/(\d+)\.(\d+)\.(\d+)/) {
+ $minversion=$1;
+ $minlevel=$2;
+ $minsublevel=$3;
+ } else {
+ die "Minimum version for $key not found at versions.txt";
+ }
+ if ( ($version < $minversion) |
+ ($level < $minlevel) |
+ ($sublevel < $minsublevel) ) {
+ $skip=1;
+ printf "$key requires version $minversion.$minlevel.$minsublevel\n";
+
+ print OUT "# $key disabled due to incorrect version\nconfig $key\n\ttristate\n\tdefault n\n\n";
+ next;
+ } else {
+# printf "OK: $key requires version $minversion.$minlevel.$minsublevel\n";
+ $skip=0;
+ }
+ }
+
s/^main(menu\s\"[^\"]+)/\1 - DON'T CHANGE IT!/;
- print OUT $_;
+ if (m/^[\w]/) {
+ $skip=0;
+ }
+ if (!$skip) {
+ print OUT $_;
+ }
}
close $in;
}
-open OUT,">Kconfig.kern";
-open_kconfig($KDIR,"$KDIR/arch/$ARCH/Kconfig");
-print OUT "endmenu\n";
-close OUT;
+sub parse_versions ()
+{
+ my $in = new FileHandle;
+ my $ver;
+
+ open $in,"versions.txt";
+ while (<$in>) {
+ if (m/\[([\d.]*)\]/) {
+ $ver=$1;
+ next;
+ }
+ s/\n//;
+ if (m/^\s*([\w\d_]+)/) {
+ $minver { $1 } = $ver;
+# printf ("%s=%s\n",$1,$ver);
+ }
+ }
+ close $in;
+}
+
+parse_versions;
+
+open IN,".version";
+while (<IN>) {
+ if (m/KERNELRELEASE\s*[:]*[=]+\s*(\d+)\.(\d+)\.(\d+)/) {
+ $version=$1;
+ $level=$2;
+ $sublevel=$3;
+ }
+}
+close IN;
+
+printf "Preparing to compile for kernel version %d.%d.%d\n",$version,$level,$sublevel;
open OUT,">Kconfig";
print OUT "mainmenu \"V4L/DVB menu\"\n";
-open_kconfig ("../linux","../linux/drivers/media/video/Kconfig");
-open_kconfig ("../linux","../linux/drivers/media/dvb/Kconfig");
+
print OUT "source Kconfig.kern\n";
+open_kconfig ("../linux","../linux/drivers/media/Kconfig");
+close OUT;
+
+while ( my ($key, $value) = each(%config) ) {
+ delete $depend{$key};
+}
+
+open OUT,">Kconfig.kern";
+
+print OUT "config MODULES\n\tboolean\n\tdefault y\n\n";
+$tristate{"MODULES"}="bool";
+
+while ( my ($key, $value) = each(%depend) ) {
+ print OUT "# $key with $value refs\nconfig $key\n\ttristate\n\tdefault m\n\n";
+}
close OUT;
+
+if (($force_kconfig eq 1) || !open IN,".config") {
+ open OUT,">.config";
+ while ( my ($key,$value) = each(%tristate) ) {
+
+ if ( ($key eq "DVB_AV7110_FIRMWARE") ||
+ ($key eq "DVB_CINERGYT2_TUNING") ) {
+ printf OUT "CONFIG_%s=n\n",$key;
+ } else {
+ if ($value eq "tristate") {
+ printf OUT "CONFIG_%s=m\n",$key;
+ } else {
+ printf OUT "CONFIG_%s=y\n",$key;
+ }
+ }
+ }
+ close OUT;
+}
diff --git a/v4l/scripts/make_makefile.pl b/v4l/scripts/make_makefile.pl
new file mode 100755
index 000000000..238c5082f
--- /dev/null
+++ b/v4l/scripts/make_makefile.pl
@@ -0,0 +1,163 @@
+#!/usr/bin/perl
+use FileHandle;
+
+my $instdir = ();
+
+sub check_line($$$)
+{
+ my $dir=shift;
+ my $obj=shift;
+ my $arg=shift;
+ my $arg2="";
+
+ my $idir = $dir;
+
+ $idir =~ s|^../linux/drivers/media/||;
+
+ $arg=$arg." ";
+
+ while ($arg ne "") {
+ if ($arg =~ m|^([^ /]+)/ |) {
+ my $newdir=$1;
+# print "include $dir/$newdir/Makefile\n";
+ open_makefile("$dir/$newdir/Makefile");
+ $arg =~ s/^[^ ]+ //;
+ } else {
+ $arg =~ s/^([^ ]+ )//;
+ my $cur=$1;
+ $arg2 = $arg2.$cur;
+
+ $cur =~ s/\s+$//;
+ $cur =~ s/\\$//;
+ $cur =~ s/\s+$//;
+ $cur =~ s/\.o$/.ko/;
+
+ if ( ($cur ne "") && (! ($instdir { $idir } =~ m/($cur) /))) {
+ $instdir { $idir } = $instdir { $idir }.$cur." ";
+ }
+ }
+ }
+ $arg2 =~ s/\s+$//;
+ if ($arg2 ne "") {
+# print "arg=$arg2\n";
+ print OUT "$obj$arg2\n";
+ }
+}
+
+sub remove_includes($$)
+{
+ my $obj=shift;
+ my $arg=shift;
+ my $arg2="";
+
+ $arg=$arg." ";
+
+ while ($arg ne "") {
+ if (!$arg =~ m|^(-I\s*[^ ]+) |) {
+ $arg2 = $arg2.$1;
+ $arg =~ s|^[^ ] ||;
+ } else {
+ $arg =~ s|^(-I\s*[^ ]+) ||;
+ }
+ }
+ if ($arg2 ne "") {
+ print OUT "$obj$arg2\n";
+ }
+}
+
+sub open_makefile($) {
+ my $file= shift;
+ my $in = new FileHandle;
+ my $dir= "";
+ my $count=0;
+
+ $file=~ m|^(.*)/[^/]*$|;
+ $dir=$1;
+
+#print "opening $file (dir=$dir)\n";
+ open $in,"$file";
+
+ while (<$in>) {
+ if (m|\s*#|) {
+ print OUT $_;
+ next;
+ }
+ if (m|^\s*include|) {
+ next;
+ }
+ if (count==1 || m|(^\s*EXTRA_CFLAGS.*=\s*)(.*/.*)\n|) {
+ remove_includes($1,$2);
+ if (m|[\\]\n|) {
+ $count=1;
+ } else {
+ $count=0;
+ }
+ next;
+ }
+# if (m|(^\s*obj.*=\s*)(.*/.*)\n|) {
+ if (count==2 || m|(^\s*obj.*=\s*)(.*)\n|) {
+ check_line($dir,$1,$2);
+ if (m|\\\n|) {
+ $count=1;
+ } else {
+ $count=0;
+ }
+ next;
+ }
+ print OUT $_;
+ }
+ close $in;
+}
+
+open OUT,">Makefile.media";
+open_makefile ("../linux/drivers/media/Makefile");
+
+# Creating Install rule
+printf OUT "media-install::\n";
+printf OUT "\t\@echo \"Stripping debug info from files:\"\n";
+printf OUT "\t\@strip --strip-debug \$(inst-m)\n\n";
+
+while ( my ($key, $value) = each(%instdir) ) {
+ printf OUT "\t\@echo -e \"\\nInstalling \$(KDIR26)/$key files:\"\n";
+ printf OUT "\t\@install -d \$(KDIR26)/$key\n";
+
+ printf OUT "\t\@files='$value'; ";
+ printf OUT "for i in \$\$files;do if [ -e \$\$i ]; then echo -n \"\$\$i \";";
+ printf OUT " install -m 644 -c \$\$i \$(KDIR26)/$key; fi; done; echo;\n\n";
+}
+printf OUT "\t/sbin/depmod -a \${KERNELRELEASE}\n\n";
+
+# Creating Remove rule
+printf OUT "media-rminstall::\n";
+printf OUT "\t\@echo -e \"\\nRemoving old \$(DEST) files\\n\"\n";
+
+while ( my ($key, $value) = each(%instdir) ) {
+ printf OUT "\t\@echo -e \"\\nRemoving old \$(KDIR26)/$key files:\"\n";
+ printf OUT "\t\@files='$value'; ";
+
+ printf OUT "for i in \$\$files;do if [ -e \$(KDIR26)/$key/\$\$i ]; then ";
+ printf OUT "echo -n \"\$\$i \";";
+ printf OUT " rm \$(KDIR26)/$key/\$\$i; fi; done; ";
+
+ printf OUT "for i in \$\$files;do if [ -e \$(KDIR26)/$key/\$\$i.gz ]; then ";
+ printf OUT "echo -n \"\$\$i.gz \";";
+ printf OUT " rm \$(KDIR26)/$key/\$\$i.gz; fi; done; echo;\n\n";
+}
+
+close OUT;
+
+while ( my ($key, $value) = each(%config) ) {
+ delete $depend{$key};
+}
+
+open OUT,">Kconfig.kern";
+while ( my ($key, $value) = each(%depend) ) {
+ print OUT "# $key with $value refs\nconfig $key\n\ttristate\n\tdefault m\n\n";
+}
+close OUT;
+
+if (open OUT,".myconfig") {
+ close IN;
+} else {
+ system "make allmodconfig";
+}
diff --git a/v4l/scripts/make_noconfig.pl b/v4l/scripts/make_noconfig.pl
new file mode 100755
index 000000000..a81e157e2
--- /dev/null
+++ b/v4l/scripts/make_noconfig.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+my $config = ();
+
+open IN,".config";
+while (<IN>) {
+ if (m/\s*([\d\w_]+)[=](.*)\n/) {
+#printf "%s=%s\n",$1,$2;
+ $config { $1 } = $2;
+ }
+}
+close IN;
+
+open IN,".version";
+while (<IN>) {
+ if (m/KERNELRELEASE\s*[:]*[=]+\s*(\d+)\.(\d+)\.(\d+)/) {
+ $version=$1;
+ $level=$2;
+ $sublevel=$3;
+ }
+}
+close IN;
+
+open IN,"versions.txt";
+while (<IN>) {
+ if (m/\[(\d+)\.(\d+)\.(\d+)\]/) {
+ $minversion=$1;
+ $minlevel=$2;
+ $minsublevel=$3;
+ next;
+ }
+ s/\n//;
+
+ if (m/DVB_AV7110_FIRMWARE_FILE/) {
+ next;
+ }
+ if (m/^\s*([\w\d_]+)/) {
+ if ( ($version < $minversion) |
+ ($level < $minlevel) |
+ ($sublevel < $minsublevel) ) {
+ $config { "CONFIG_$1" } = 'n';
+#print "CONFIG_$1 version is not supported\n";
+ next;
+ }
+ if (!($config { "CONFIG_$1" } ) ) {
+print "CONFIG_$1 is unset\n";
+ $config { "CONFIG_$1" } = 'n';
+ }
+ }
+}
+close IN;
+
+open OUT,">.myconfig";
+while ( my ($key, $value) = each(%config) ) {
+ printf OUT "%-44s := %s\n",$key,$value;
+}
+close OUT;
diff --git a/v4l/scripts/makelinks.sh b/v4l/scripts/makelinks.sh
index a66989771..03fd48849 100755
--- a/v4l/scripts/makelinks.sh
+++ b/v4l/scripts/makelinks.sh
@@ -39,10 +39,12 @@ done
for x in `find include -type d | grep -v CVS` ; do
ln -f -s $PWD/../v4l/compat.h $1/$x/compat.h
+ touch $1/$x/config-compat.h
done
for x in `find drivers/media -type d | grep -v CVS` ; do
ln -f -s $PWD/../v4l/compat.h $1/$x/compat.h
+ touch $1/$x/config-compat.h
done
cd ..
diff --git a/v4l/versions.txt b/v4l/versions.txt
new file mode 100644
index 000000000..1e71513fa
--- /dev/null
+++ b/v4l/versions.txt
@@ -0,0 +1,206 @@
+# Use this for stuff for drivers that don't compile
+[2.6.99]
+# This is broken for a long time
+VIDEO_ZR36120
+
+# This is also marked as broken
+VIDEO_PLANB
+
+# Those are architecture-dependent
+VIDEO_VINO
+VIDEO_M32R_AR_M64278
+
+[2.6.16]
+VIDEO_USBVIDEO
+USB_VICAM
+USB_IBMCAM
+USB_KONICAWC
+USB_QUICKCAM_MESSENGER
+USB_ET61X251
+USB_PWC
+USB_PWC_DEBUG
+USB_ZC0301
+VIDEO_ZORAN_AVS6EYES
+
+[2.6.14]
+VIDEO_ZORAN
+VIDEO_ZORAN_BUZ
+VIDEO_ZORAN_DC10
+VIDEO_ZORAN_DC30
+VIDEO_ZORAN_LML33
+VIDEO_ZORAN_LML33R10
+VIDEO_SAA5246A
+VIDEO_SAA5249
+VIDEO_BWQCAM
+VIDEO_CQCAM
+VIDEO_W9966
+VIDEO_PMS
+VIDEO_STRADIS
+VIDEO_CPIA
+VIDEO_CPIA_PP
+VIDEO_CPIA_USB
+VIDEO_MEYE
+VIDEO_MXB
+VIDEO_DPC
+TUNER_3036
+USB_DABUSB
+USB_DSBR
+USB_OV511
+USB_SE401
+USB_STV680
+USB_W9968CF
+VIDEO_M32R_AR
+RADIO_CADET
+RADIO_RTRACK
+RADIO_RTRACK_PORT
+RADIO_RTRACK2
+RADIO_RTRACK2_PORT
+RADIO_AZTECH
+RADIO_AZTECH_PORT
+RADIO_GEMTEK
+RADIO_GEMTEK_PORT
+RADIO_GEMTEK_PCI
+RADIO_MAXIRADIO
+RADIO_MAESTRO
+RADIO_MIROPCM20
+RADIO_MIROPCM20_RDS
+RADIO_SF16FMI
+RADIO_SF16FMR2
+RADIO_TERRATEC
+RADIO_TERRATEC_PORT
+RADIO_TRUST
+RADIO_TRUST_PORT
+RADIO_TYPHOON
+RADIO_TYPHOON_PROC_FS
+RADIO_TYPHOON_PORT
+RADIO_TYPHOON_MUTEFREQ
+RADIO_ZOLTRIX
+RADIO_ZOLTRIX_PORT
+
+[2.6.13]
+USB_SN9C102
+
+[2.6.12]
+VIDEO_VIVI
+VIDEO_DEV
+VIDEO_V4L1
+VIDEO_V4L2
+VIDEO_V4L1_COMPAT
+VIDEO_ADV_DEBUG
+VIDEO_BT848
+VIDEO_BT848_DVB
+VIDEO_SAA6588
+VIDEO_CPIA2
+VIDEO_SAA7134
+VIDEO_SAA7134_ALSA
+VIDEO_SAA7134_OSS
+VIDEO_SAA7134_DVB
+VIDEO_SAA7134_DVB_ALL_FRONTENDS
+VIDEO_SAA7134_DVB_MT352
+VIDEO_SAA7134_DVB_TDA1004X
+VIDEO_SAA7134_DVB_NXT200X
+VIDEO_HEXIUM_ORION
+VIDEO_HEXIUM_GEMINI
+VIDEO_CX88_VP3054
+VIDEO_CX88
+VIDEO_CX88_ALSA
+VIDEO_CX88_DVB
+VIDEO_CX88_DVB_ALL_FRONTENDS
+VIDEO_CX88_DVB_MT352
+VIDEO_CX88_DVB_VP3054
+VIDEO_CX88_DVB_ZL10353
+VIDEO_CX88_DVB_OR51132
+VIDEO_CX88_DVB_CX22702
+VIDEO_CX88_DVB_LGDT330X
+VIDEO_CX88_DVB_NXT200X
+VIDEO_CX88_DVB_CX24123
+VIDEO_OVCAMCHIP
+VIDEO_MSP3400
+VIDEO_CS53L32A
+VIDEO_WM8775
+VIDEO_WM8739
+VIDEO_CX25840
+VIDEO_SAA711X
+VIDEO_SAA7127
+VIDEO_UPD64031A
+VIDEO_UPD64083
+VIDEO_PVRUSB2
+VIDEO_PVRUSB2_24XXX
+VIDEO_PVRUSB2_SYSFS
+VIDEO_PVRUSB2_DEBUGIFC
+VIDEO_EM28XX
+DVB
+DVB_CORE
+DVB_AV7110
+DVB_AV7110_FIRMWARE
+DVB_AV7110_FIRMWARE_FILE
+DVB_AV7110_OSD
+DVB_BUDGET
+DVB_BUDGET_CI
+DVB_BUDGET_AV
+DVB_BUDGET_PATCH
+DVB_USB
+DVB_USB_DEBUG
+DVB_USB_A800
+DVB_USB_DIBUSB_MB
+DVB_USB_DIBUSB_MB_FAULTY
+DVB_USB_DIBUSB_MC
+DVB_USB_UMT_010
+DVB_USB_CXUSB
+DVB_USB_DIGITV
+DVB_USB_VP7045
+DVB_USB_VP702X
+DVB_USB_NOVA_T_USB2
+DVB_USB_DTT200U
+DVB_TTUSB_BUDGET
+DVB_TTUSB_DEC
+DVB_CINERGYT2
+DVB_CINERGYT2_TUNING
+DVB_CINERGYT2_STREAM_URB_COUNT
+DVB_CINERGYT2_STREAM_BUF_SIZE
+DVB_CINERGYT2_QUERY_INTERVAL
+DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE
+DVB_CINERGYT2_RC_QUERY_INTERVAL
+DVB_B2C2_FLEXCOP
+DVB_B2C2_FLEXCOP_PCI
+DVB_B2C2_FLEXCOP_USB
+DVB_B2C2_FLEXCOP_DEBUG
+DVB_BT8XX
+DVB_PLUTO2
+DVB_STV0299
+DVB_CX24110
+DVB_CX24123
+DVB_TDA8083
+DVB_MT312
+DVB_VES1X93
+DVB_S5H1420
+DVB_SP8870
+DVB_SP887X
+DVB_CX22700
+DVB_CX22702
+DVB_L64781
+DVB_TDA1004X
+DVB_NXT6000
+DVB_MT352
+DVB_ZL10353
+DVB_DIB3000MB
+DVB_DIB3000MC
+DVB_VES1820
+DVB_TDA10021
+DVB_STV0297
+DVB_NXT200X
+DVB_OR51211
+DVB_OR51132
+DVB_BCM3510
+DVB_LGDT330X
+DVB_LNBP21
+DVB_ISL6421
+VIDEO_SAA7146
+VIDEO_SAA7146_VV
+VIDEO_VIDEOBUF
+VIDEO_TUNER
+VIDEO_BUF
+VIDEO_BUF_DVB
+VIDEO_BTCX
+VIDEO_IR
+VIDEO_TVEEPROM