summaryrefslogtreecommitdiff
path: root/v4l_experimental/cx88-ivtv.c
diff options
context:
space:
mode:
Diffstat (limited to 'v4l_experimental/cx88-ivtv.c')
-rw-r--r--v4l_experimental/cx88-ivtv.c248
1 files changed, 0 insertions, 248 deletions
diff --git a/v4l_experimental/cx88-ivtv.c b/v4l_experimental/cx88-ivtv.c
deleted file mode 100644
index 8247d4286..000000000
--- a/v4l_experimental/cx88-ivtv.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * $Id: cx88-ivtv.c,v 1.1 2005/11/30 17:26:37 mchehab Exp $
- *
- * IVTV API emulation for the "blackbird" reference design.
- *
- * (c) 2005 Catalin Climov <catalin@climov.com>
- *
- * Includes parts from the ivtv driver( http://ivtv.sourceforge.net/),
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include "compat.h"
-#include <media/v4l2-common.h>
-#include "cx88.h"
-
-MODULE_DESCRIPTION("ivtv ioctl emulation module for blackbird TV cards");
-MODULE_AUTHOR("Catalin Climov <catalin@climov.com>");
-MODULE_LICENSE("GPL");
-
-static unsigned int debug = 0;
-module_param(debug,int,0644);
-MODULE_PARM_DESC(debug,"enable debug messages [blackbird]");
-
-#define dprintk(level,fmt, arg...) if (debug >= level) \
- printk(KERN_DEBUG "%s/2-bb: " fmt, dev->core->name , ## arg)
-
-static int (*prev_ioctl_hook)(struct inode *inode, struct file *file,
- unsigned int cmd, void *arg);
-static unsigned int (*prev_ioctl_translator)(unsigned int cmd);
-
-/* --- IVTV data structs -------------------------------------------- */
-
-struct ivtv_ioctl_codec {
- uint32_t aspect;
- uint32_t audio_bitmask;
- uint32_t bframes;
- uint32_t bitrate_mode;
- uint32_t bitrate;
- uint32_t bitrate_peak;
- uint32_t dnr_mode;
- uint32_t dnr_spatial;
- uint32_t dnr_temporal;
- uint32_t dnr_type;
- uint32_t framerate; /* read only, ignored on write */
- uint32_t framespergop; /* read only, ignored on write */
- uint32_t gop_closure;
- uint32_t pulldown;
- uint32_t stream_type;
-};
-
-struct ivtv_sliced_vbi_format {
- unsigned long service_set; /* one or more of the IVTV_SLICED_ defines */
- unsigned long packet_size; /* the size in bytes of the ivtv_sliced_data packet */
- unsigned long io_size; /* maximum number of bytes passed by one read() call */
- unsigned long reserved;
-};
-
-#define IVTV_IOC_G_CODEC _IOR ('@', 48, struct ivtv_ioctl_codec)
-#define IVTV_IOC_S_CODEC _IOW ('@', 49, struct ivtv_ioctl_codec)
-#define IVTV_IOC_S_VBI_MODE _IOWR('@', 35, struct ivtv_sliced_vbi_format)
-#define IVTV_IOC_G_VBI_MODE _IOR ('@', 36, struct ivtv_sliced_vbi_format)
-#define IVTV_IOC_S_VBI_EMBED _IOW ('@', 54, int)
-
-/* ------------------------------------------------------------------ */
-
-static unsigned int ivtv_translate_ioctl(unsigned int cmd)
-{
-#if 0
- printk( KERN_INFO "ivtv_translate_ioctl\n" );
-#endif
- switch( cmd )
- {
- case 0xFFEE7703: cmd = IVTV_IOC_G_CODEC; break;
- case 0xFFEE7704: cmd = IVTV_IOC_S_CODEC; break;
- case 0xFFEE7781: /*cmd = IVTV_IOC_PLAY; break;*/
- case 0xFFEE7782: /*cmd = IVTV_IOC_PAUSE; break;*/
- case 0xFFEE7783: /*cmd = IVTV_IOC_FRAMESYNC; break;*/
- case 0xFFEE7784: /*cmd = IVTV_IOC_GET_TIMING; break;*/
- case 0xFFEE7785: /*cmd = IVTV_IOC_S_SLOW_FAST; break;*/
- case 0xFFEE7786: /*cmd = IVTV_IOC_S_START_DECODE; break;*/
- case 0xFFEE7787: /*cmd = IVTV_IOC_S_STOP_DECODE; break;*/
- case 0xFFEE7789: /*cmd = IVTV_IOC_GET_FB; break;*/
- printk( KERN_INFO "IVTV: 0x%x\n", cmd );
- }
- return prev_ioctl_translator( cmd );
-}
-
-static int ivtv_do_ioctl(struct inode *inode, struct file *file,
- unsigned int cmd, void *arg)
-{
- struct cx8802_fh *fh = file->private_data;
- struct cx8802_dev *dev = fh->dev;
- /* struct cx88_core *core = dev->core; */
-
- /* int err; */
-
- if (debug > 1)
- v4l_print_ioctl(dev->core->name,cmd);
-#if 1
- printk( KERN_INFO "IVTV IOCTL: 0x%x\n", cmd );
- v4l_print_ioctl(dev->core->name,cmd);
-#endif
- dprintk( 1, "IVTV IOCTL: 0x%x\n", cmd );
-
- switch (cmd) {
-
- /* --- IVTV emulation layer --------------------------- */
- case IVTV_IOC_S_CODEC:
- printk( KERN_INFO "IVTV_IOC_S_CODEC\n" );
- case IVTV_IOC_G_CODEC:
- {
- struct ivtv_ioctl_codec *codec = arg;
-#if 1
- printk( KERN_INFO "IVTV_IOC_G/S_CODEC\n" );
- printk( KERN_INFO "CODEC: aspect: %d\n", codec->aspect );
- printk( KERN_INFO "CODEC: audio : %d\n", codec->audio_bitmask );
- printk( KERN_INFO "CODEC: bfrms : %d\n", codec->bframes );
- printk( KERN_INFO "CODEC: br_mod: %d\n", codec->bitrate_mode );
- printk( KERN_INFO "CODEC: btrate: %d\n", codec->bitrate );
- printk( KERN_INFO "CODEC: btr_pk: %d\n", codec->bitrate_peak );
- printk( KERN_INFO "CODEC: dnr_md: %d\n", codec->dnr_mode );
- printk( KERN_INFO "CODEC: dnr_sp: %d\n", codec->dnr_spatial );
- printk( KERN_INFO "CODEC: dnr_tp: %d\n", codec->dnr_temporal );
- printk( KERN_INFO "CODEC: dnr_ty: %d\n", codec->dnr_type );
- printk( KERN_INFO "CODEC: framer: %d\n", codec->framerate );
- printk( KERN_INFO "CODEC: grmgop: %d\n", codec->framespergop );
- printk( KERN_INFO "CODEC: gop_cl: %d\n", codec->gop_closure );
- printk( KERN_INFO "CODEC: pulldn: %d\n", codec->pulldown );
- printk( KERN_INFO "CODEC: strtyp: %d\n\n", codec->stream_type );
-#endif
-
- codec->aspect = 2; /* 4:3 */
- codec->audio_bitmask = (2 << 2) | (14 << 4); /* layer II | 384kbps */
- codec->bframes = 2;
- codec->bitrate_mode = 1; /* cbr */
- codec->bitrate = 4500000; /* bps */
- codec->bitrate_peak = 6000000; /* peak */
- codec->dnr_mode = 0; /* spatial=manual | temporal=manual */
- codec->dnr_spatial = 0;
- codec->dnr_temporal = 0;
- codec->dnr_type = 0; /* disabled */
- codec->framerate = 1; /* 25fps */
- codec->framespergop = 15;
- codec->gop_closure = 0; /* open */
- codec->pulldown = 0; /* enabled */
- codec->stream_type = 0; /* program stream */
-#if 1
- printk( KERN_INFO "CODEC: aspect: %d\n", codec->aspect );
- printk( KERN_INFO "CODEC: audio : %d\n", codec->audio_bitmask );
- printk( KERN_INFO "CODEC: bfrms : %d\n", codec->bframes );
- printk( KERN_INFO "CODEC: br_mod: %d\n", codec->bitrate_mode );
- printk( KERN_INFO "CODEC: btrate: %d\n", codec->bitrate );
- printk( KERN_INFO "CODEC: btr_pk: %d\n", codec->bitrate_peak );
- printk( KERN_INFO "CODEC: dnr_md: %d\n", codec->dnr_mode );
- printk( KERN_INFO "CODEC: dnr_sp: %d\n", codec->dnr_spatial );
- printk( KERN_INFO "CODEC: dnr_tp: %d\n", codec->dnr_temporal );
- printk( KERN_INFO "CODEC: dnr_ty: %d\n", codec->dnr_type );
- printk( KERN_INFO "CODEC: framer: %d\n", codec->framerate );
- printk( KERN_INFO "CODEC: grmgop: %d\n", codec->framespergop );
- printk( KERN_INFO "CODEC: gop_cl: %d\n", codec->gop_closure );
- printk( KERN_INFO "CODEC: pulldn: %d\n", codec->pulldown );
- printk( KERN_INFO "CODEC: strtyp: %d\n", codec->stream_type );
-#endif
- return 0;
- }
- case IVTV_IOC_S_VBI_MODE:
- {
- struct ivtv_sliced_vbi_format *fmt = arg;
- printk( KERN_INFO "IVTV_IOC_S_VBI_MODE: ss: %ld, ps: %ld, is: %ld\n",
- fmt->service_set, fmt->packet_size, fmt->io_size );
-#if 0
- fmt->service_set = 0; /* one or more of the IVTV_SLICED_ defines */
- fmt->packet_size = 0; /* the size in bytes of the ivtv_sliced_data packet */
- fmt->io_size = 0; /* maximum number of bytes passed by one read() call */
-#endif
- return 0;
- }
- case IVTV_IOC_G_VBI_MODE:
- {
- struct ivtv_sliced_vbi_format *fmt = arg;
-
- fmt->service_set = 1; /* one or more of the IVTV_SLICED_ defines */
- fmt->packet_size = 0; /* the size in bytes of the ivtv_sliced_data packet */
- fmt->io_size = 0; /* maximum number of bytes passed by one read() call */
- return 0;
- }
- case IVTV_IOC_S_VBI_EMBED:
- {
- int *embed = arg;
- printk( KERN_INFO "IVTV_IOC_S_VBI_EMBED: %d\n", *embed );
- return 0;
- }
-
- default:
- if( prev_ioctl_hook )
- return prev_ioctl_hook( inode, file, cmd, arg );
- else
- return -EINVAL;
- }
- return 0;
-}
-
-static int __init cx88_ivtv_init(void)
-{
- printk(KERN_INFO "ivtv emulation for blackbird version %d.%d.%d loaded\n",
- (CX88_VERSION_CODE >> 16) & 0xff,
- (CX88_VERSION_CODE >> 8) & 0xff,
- CX88_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
- request_module( "cx88-blackbird" );
- prev_ioctl_translator = cx88_ioctl_translator;
- cx88_ioctl_translator = ivtv_translate_ioctl;
- prev_ioctl_hook = cx88_ioctl_hook;
- cx88_ioctl_hook = ivtv_do_ioctl;
- return 0;
-}
-
-static void __exit cx88_ivtv_fini(void)
-{
- cx88_ioctl_hook = prev_ioctl_hook;
- cx88_ioctl_translator = prev_ioctl_translator;
-}
-
-module_init(cx88_ivtv_init);
-module_exit(cx88_ivtv_fini);
-
-/*
- * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
- */