- Fix two linux/dvb ioctls in multimedia/v4l_compat , multimedia/webcamd ,

and multimedia/linux_dvbwrapper : CA_GET_SLOT_INFO and CA_GET_MSG
  need to be _IOWR not _IOR.
- Bump PORTREVISION for multimedia/vdr too since it uses one of the ioctls.
  (This fixes the CI slot of at last the TT CT-3650 DVB-C/T tuner.)

Approved by:	hselasky (maintainer of multimedia/webcamd)
This commit is contained in:
Juergen Lock 2012-06-28 17:49:51 +00:00
parent 3b3ad926b5
commit ef16d2e450
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=300170
7 changed files with 47 additions and 3 deletions

View File

@ -7,6 +7,7 @@
PORTNAME= linux_dvbwrapper-kmod
PORTVERSION= 1.0
PORTREVISION= 1
CATEGORIES= multimedia kld
DISTFILES= # none

View File

@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: /tmp/pcvs/ports/multimedia/linux_dvbwrapper-kmod/files/linux_dvbwrapper.c,v 1.2 2011-09-27 17:37:18 nox Exp $");
__FBSDID("$FreeBSD: /tmp/pcvs/ports/multimedia/linux_dvbwrapper-kmod/files/linux_dvbwrapper.c,v 1.3 2012-06-28 17:49:51 nox Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -263,13 +263,13 @@ linux_ioctl_dvb(struct thread *td, struct linux_ioctl_args *args)
case LINUX_FE_GET_FRONTEND:
case LINUX_FE_GET_EVENT:
case LINUX_CA_GET_CAP:
case LINUX_CA_GET_SLOT_INFO:
case LINUX_CA_GET_DESCR_INFO:
case LINUX_CA_GET_MSG:
args->cmd = (args->cmd & ~IOC_DIRMASK) | IOC_OUT;
break;
case LINUX_DMX_GET_STC:
case LINUX_CA_GET_SLOT_INFO:
case LINUX_CA_GET_MSG:
case LINUX_NET_GET_IF:
net_add_if:
args->cmd = (args->cmd & ~IOC_DIRMASK) | IOC_INOUT;

View File

@ -7,6 +7,7 @@
PORTNAME= v4l_compat
PORTVERSION= 1.0.${DUMMYDATE}
PORTREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= LOCAL/kwm

View File

@ -0,0 +1,20 @@
--- dvb/ca.h.orig
+++ dvb/ca.h
@@ -80,9 +80,17 @@ typedef struct ca_pid {
#define CA_RESET _IO('o', 128)
#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
+
+/* At least CA_GET_SLOT_INFO and CA_GET_MSG need to be _IOWR not _IOR.
+ * This is wrong on Linux too but there the driver doesn't care.
+ *
#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
+ */
+#define CA_GET_SLOT_INFO _IOWR('o', 130, ca_slot_info_t)
+#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
+#define CA_GET_MSG _IOWR('o', 132, ca_msg_t)
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
#define CA_SET_PID _IOW('o', 135, ca_pid_t)

View File

@ -7,6 +7,7 @@
PORTNAME= vdr
PORTVERSION= 1.7.28
PORTREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= ftp://ftp.tvdr.de/vdr/Developer/

View File

@ -7,6 +7,7 @@
PORTNAME= webcamd
PORTVERSION= 3.6.0.1
PORTREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= http://www.selasky.org/hans_petter/distfiles/ \
http://hselasky.homeunix.org:8192/distfiles/

View File

@ -0,0 +1,20 @@
--- media_tree/include/linux/dvb/ca.h.orig
+++ media_tree/include/linux/dvb/ca.h
@@ -80,9 +80,17 @@ typedef struct ca_pid {
#define CA_RESET _IO('o', 128)
#define CA_GET_CAP _IOR('o', 129, ca_caps_t)
+
+/* At least CA_GET_SLOT_INFO and CA_GET_MSG need to be _IOWR not _IOR.
+ * This is wrong on Linux too but there the driver doesn't care.
+ *
#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t)
#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
+ */
+#define CA_GET_SLOT_INFO _IOWR('o', 130, ca_slot_info_t)
+#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t)
+#define CA_GET_MSG _IOWR('o', 132, ca_msg_t)
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
#define CA_SET_PID _IOW('o', 135, ca_pid_t)