These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / media / pci / saa7164 / saa7164.h
index cd1a07c..8337524 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  Driver for the NXP SAA7164 PCIe bridge
  *
- *  Copyright (c) 2010 Steven Toth <stoth@kernellabs.com>
+ *  Copyright (c) 2010-2015 Steven Toth <stoth@kernellabs.com>
  *
  *  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
@@ -54,8 +54,6 @@
 
 #include <media/tuner.h>
 #include <media/tveeprom.h>
-#include <media/videobuf-dma-sg.h>
-#include <media/videobuf-dvb.h>
 #include <dvb_demux.h>
 #include <dvb_frontend.h>
 #include <dvb_net.h>
@@ -64,6 +62,8 @@
 #include <media/v4l2-common.h>
 #include <media/v4l2-ioctl.h>
 #include <media/v4l2-device.h>
+#include <media/v4l2-ctrls.h>
+#include <media/v4l2-event.h>
 
 #include "saa7164-reg.h"
 #include "saa7164-types.h"
@@ -83,6 +83,9 @@
 #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3      8
 #define SAA7164_BOARD_HAUPPAUGE_HVR2200_4      9
 #define SAA7164_BOARD_HAUPPAUGE_HVR2200_5      10
+#define SAA7164_BOARD_HAUPPAUGE_HVR2255proto   11
+#define SAA7164_BOARD_HAUPPAUGE_HVR2255                12
+#define SAA7164_BOARD_HAUPPAUGE_HVR2205                13
 
 #define SAA7164_MAX_UNITS              8
 #define SAA7164_TS_NUMBER_OF_LINES     312
 #define DBGLVL_CPU 8192
 
 #define SAA7164_NORMS \
-       (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_443)
+       (V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP)
+
+/* TV frequency range copied from tuner-core.c */
+#define SAA7164_TV_MIN_FREQ (44U * 16U)
+#define SAA7164_TV_MAX_FREQ (958U * 16U)
 
 enum port_t {
        SAA7164_MPEG_UNDEFINED = 0,
@@ -182,11 +189,13 @@ struct saa7164_subid {
 };
 
 struct saa7164_encoder_fh {
+       struct v4l2_fh fh;
        struct saa7164_port *port;
        atomic_t v4l_reading;
 };
 
 struct saa7164_vbi_fh {
+       struct v4l2_fh fh;
        struct saa7164_port *port;
        atomic_t v4l_reading;
 };
@@ -371,17 +380,18 @@ struct saa7164_port {
 
        /* --- DVB Transport Specific --- */
        struct saa7164_dvb dvb;
+       struct i2c_client *i2c_client_demod;
+       struct i2c_client *i2c_client_tuner;
 
        /* --- Encoder/V4L related attributes --- */
        /* Encoder */
        /* Defaults established in saa7164-encoder.c */
        struct saa7164_tvnorm encodernorm;
+       struct v4l2_ctrl_handler ctrl_handler;
        v4l2_std_id std;
        u32 height;
        u32 width;
        u32 freq;
-       u32 ts_packet_size;
-       u32 ts_packet_count;
        u8 mux_input;
        u8 encoder_profile;
        u8 video_format;
@@ -414,6 +424,7 @@ struct saa7164_port {
        /* V4L VBI */
        struct tmComResVBIFormatDescrHeader vbi_fmt_ntsc;
        struct saa7164_vbi_params vbi_params;
+       struct saa7164_port *enc_port;
 
        /* Debug */
        u32 sync_errors;
@@ -459,6 +470,7 @@ struct saa7164_dev {
        /* Interrupt status and ack registers */
        u32 int_status;
        u32 int_ack;
+       bool msi;
 
        struct cmd                      cmds[SAA_CMD_MAX_MSG_UNITS];
        struct mutex                    lock;
@@ -588,6 +600,16 @@ extern int saa7164_buffer_zero_offsets(struct saa7164_port *port, int i);
 
 /* ----------------------------------------------------------- */
 /* saa7164-encoder.c                                            */
+int saa7164_s_std(struct saa7164_port *port, v4l2_std_id id);
+int saa7164_g_std(struct saa7164_port *port, v4l2_std_id *id);
+int saa7164_enum_input(struct file *file, void *priv, struct v4l2_input *i);
+int saa7164_g_input(struct saa7164_port *port, unsigned int *i);
+int saa7164_s_input(struct saa7164_port *port, unsigned int i);
+int saa7164_g_tuner(struct file *file, void *priv, struct v4l2_tuner *t);
+int saa7164_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *t);
+int saa7164_g_frequency(struct saa7164_port *port, struct v4l2_frequency *f);
+int saa7164_s_frequency(struct saa7164_port *port,
+                       const struct v4l2_frequency *f);
 int saa7164_encoder_register(struct saa7164_port *port);
 void saa7164_encoder_unregister(struct saa7164_port *port);