, DVB-S2 TBS-6980) при помощи полу-самопального патча (за основу взял Dolot'овский патч):
--- contrib/sasc-ng/dvbloopback/module/dvblb_forward.c 2011-04-25 02:44:10.511089600 +0300
+++ contrib/sasc-ng/dvbloopback/module/dvblb_forward.c 2011-04-24 21:04:17.000000000 +0300
@@ -166,9 +166,9 @@
struct file *ftmp = find_forwardmap(lbdev, f->private_data);
if (!ftmp || IS_ERR(ftmp))
return -EFAULT;
- if (lbdev->forward_dev->fops &&lbdev->forward_dev->fops->ioctl)
- return lbdev->forward_dev->fops->ioctl(
- ftmp->f_dentry->d_inode, ftmp, cmd, arg);
+ if (lbdev->forward_dev->fops &&lbdev->forward_dev->fops->unlocked_ioctl)
+ return lbdev->forward_dev->fops->unlocked_ioctl(
+ ftmp, cmd, arg);
return -EFAULT;
}
--- contrib/sasc-ng/dvbloopback/module/dvb_loopback.c 2011-04-25 02:44:10.511089600 +0300
+++ contrib/sasc-ng/dvbloopback/module/dvb_loopback.c 2011-04-25 00:42:54.234135688 +0300
@@ -118,9 +118,9 @@
/* This is a copy of dvb_usercopy. We need to do this because it isn't exported
by dvbdev
*/
-static int dvblb_usercopy(struct inode *inode, struct file *file,
+static int dvblb_usercopy(struct file *file,
unsigned int cmd, unsigned long arg,
- int (*func)(struct inode *inode, struct file *file,
+ int (*func)(struct file *file,
unsigned int cmd, void *arg))
{
char sbuf[128];
@@ -180,7 +180,7 @@
}
/* call driver */
- if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD)
+ if ((err = func(file, cmd, parg)) == -ENOIOCTLCMD)
err = -EINVAL;
if (err < 0)
@@ -663,7 +663,7 @@
dvb_generic_ioctl) which is called by dvblb_ioctl for device-0. It is
used to forward ioctl commands back to the userspace application
*/
-static int dvblb_looped_ioctl(struct inode *inode, struct file *f,
+static int dvblb_looped_ioctl(struct file *f,
unsigned int cmd, void *parg)
{
int ret;
@@ -692,7 +692,7 @@
return ret;
}
-static int dvblb_ioctl(struct inode *inode, struct file *f,
+static long dvblb_ioctl(struct file *f,
unsigned int cmd, unsigned long arg)
{
void * parg = (void *)arg;
@@ -723,7 +723,7 @@
if (lbdev->forward_dev)
return dvblb_forward_ioctl(lbdev, f, cmd, arg);
- return dvblb_usercopy (inode, f, cmd, arg,
+ return dvblb_usercopy (f, cmd, arg,
dvbdev->kernel_ioctl);
}
/* This is the userspace control device */
@@ -978,7 +978,7 @@
.write = dvblb_write,
.poll = dvblb_poll,
.mmap = dvblb_mmap,
- .ioctl = dvblb_ioctl,
+ .unlocked_ioctl = dvblb_ioctl,
};
static struct dvb_device dvbdev_looped = {
@@ -998,7 +998,7 @@
.write = dvblb_write,
.poll = dvblb_poll,
.mmap = dvblb_mmap,
- .ioctl = dvblb_ioctl,
+ .unlocked_ioctl = dvblb_ioctl,
};
static struct dvb_device dvbdev_userspace = {
--- contrib/sasc-ng/Makefile 2011-04-25 02:44:10.507089818 +0300
+++ contrib/sasc-ng/Makefile 2011-04-25 00:40:31.390323663 +0300
@@ -8,7 +8,7 @@
CC ?= gcc
CXX ?= g++
-CXXFLAGS ?= -Wall -D__user= -Werror
+CXXFLAGS ?= -Wall -D__user= #-Werror
CFLAGS ?= -Wall -D__user=
ifdef DVB_DIR
@@ -17,7 +17,7 @@
endif
DEFINES += -DRELEASE_VERSION=\"$(VERSION)\" -D__KERNEL_STRICT_NAMES
-INCLUDES += -Idvbloopback/module -I/lib/modules/$(shell uname -r)/build/include
+INCLUDES += -Idvbloopback/module -I/usr/include
LBDIR = dvbloopback/src
SCDIR = sc/PLUGINS/src/$(SCVER)
SC_FLAGS = -O2 -fPIC -Wall -Woverloaded-virtual
@@ -57,7 +57,7 @@
INC_DEPS := $(shell ls $(LBDIR)/*.h) dvbloopback/module/dvbloopback.h
INC_DEPS_LB := $(shell ls dvblb_plugins/*.h)
-LIBS = -lpthread -lcrypto -lcrypt
+LIBS = -lpthread -lcrypto -lcrypt -lv4l1
all: $(TOOL) libscanwrap.so
--- contrib/sasc-ng/sc/dvbdevice.cpp 2011-04-25 02:44:10.519089162 +0300
+++ contrib/sasc-ng/sc/dvbdevice.cpp 2011-04-24 21:04:17.000000000 +0300
@@ -10,7 +10,7 @@
#include "include/vdr/dvbdevice.h"
#include <errno.h>
#include <limits.h>
-#include <linux/videodev.h>
+#include <libv4l1-videodev.h>
#include <linux/dvb/audio.h>
#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
diff -u -r systems/constcw/constcw.c systems/constcw/constcw.c
--- systems/constcw/constcw.c 2011-04-25 02:44:10.567086537 +0300
+++ systems/constcw/constcw.c 2011-04-25 02:39:59.527575519 +0300
@@ -70,7 +70,7 @@
bool cPlainKeyConstCw::Matches(const cEcmInfo *ecm)
{
- return ecm->prgId==prgId && ecm->source==source && ecm->transponder==transponder;
+ return ecm->prgId==prgId;
}
bool cPlainKeyConstCw::Parse(const char *line)
ЗЫ: Керн 2.6.38, в настоящее время, идёт с полностью "убитыми" DVB-драйверами.
Linuxtv.org V4L-DVB репозиторий, по всей видимости, тоже пока не готов к 2.6.38.
). У меня с этим пропатченым драйвером, помимо собственно TBS-6980, так-же нормально заработали Hauppauge HVR-1300 и Nova-T Stick - при необходимости могу здесь оным решением поделиться...