diff -upr v4l_compat-3.3-rc4/linux/dvb/frontend.h /usr/local/include/linux/dvb/frontend.h --- v4l_compat-3.3-rc4/linux/dvb/frontend.h 2012-02-19 16:19:51.000000000 +0100 +++ /usr/local/include/linux/dvb/frontend.h 2011-09-18 06:15:16.000000000 +0200 @@ -396,7 +373,13 @@ struct dtv_properties { }; #define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties) -#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties) +/* + * This is broken on linux as well but they workaround it in the driver. + * Since this is impossible to do on FreeBSD fix the header instead. + * Detailed and discussion : + * http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-April/010958.html + */ +#define FE_GET_PROPERTY _IOW('o', 83, struct dtv_properties) /** diff -upr v4l_compat-3.3-rc4/linux/input.h /usr/local/include/linux/input.h --- v4l_compat-3.3-rc4/linux/input.h 2012-02-19 16:18:52.000000000 +0100 +++ /usr/local/include/linux/input.h 2011-09-18 06:15:16.000000000 +0200 @@ -140,8 +140,12 @@ struct input_keymap_entry { #define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat settings */ #define EVIOCSREP _IOW('E', 0x03, unsigned int[2]) /* set repeat settings */ -#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2]) /* get keycode */ -#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry) +/* + * These two need to be _IOWR not _IOR (they're wrong on Linux too but + * there the driver doesn't care.) + */ +#define EVIOCGKEYCODE _IOWR('E', 0x04, unsigned int[2]) /* get keycode */ +#define EVIOCGKEYCODE_V2 _IOWR('E', 0x04, struct input_keymap_entry) #define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2]) /* set keycode */ #define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)