Commit d73f822c authored by Pete Eberlein's avatar Pete Eberlein Committed by Greg Kroah-Hartman

Staging: go7007: saa7134 updates

- Added documentation including README files from the original go7007
  driver package.
- Added Video4Linux2 MPEG controls.
- Added Video4Linux2 audio ioctls, which pass thru to the i2c driver.
- Improved saa7134 interface, to pass thru controls and video settings.
- Fixed a bug in sony tuner, as reported by Bifferos on the Go7007 wiki.
Signed-off-by: default avatarPete Eberlein <pete@sensoray.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent b2d6a78d
...@@ -227,7 +227,7 @@ static int init_i2c_module(struct i2c_adapter *adapter, int id, int addr) ...@@ -227,7 +227,7 @@ static int init_i2c_module(struct i2c_adapter *adapter, int id, int addr)
return 0; return 0;
if (modname != NULL) if (modname != NULL)
printk(KERN_INFO printk(KERN_INFO
"go7007: probing for module %s failed", modname); "go7007: probing for module %s failed\n", modname);
else else
printk(KERN_INFO printk(KERN_INFO
"go7007: sensor %u seems to be unsupported!\n", id); "go7007: sensor %u seems to be unsupported!\n", id);
......
...@@ -104,6 +104,7 @@ struct go7007_hpi_ops { ...@@ -104,6 +104,7 @@ struct go7007_hpi_ops {
int (*stream_start)(struct go7007 *go); int (*stream_start)(struct go7007 *go);
int (*stream_stop)(struct go7007 *go); int (*stream_stop)(struct go7007 *go);
int (*send_firmware)(struct go7007 *go, u8 *data, int len); int (*send_firmware)(struct go7007 *go, u8 *data, int len);
int (*send_command)(struct go7007 *go, unsigned int cmd, void *arg);
}; };
/* The video buffer size must be a multiple of PAGE_SIZE */ /* The video buffer size must be a multiple of PAGE_SIZE */
......
...@@ -225,7 +225,7 @@ static struct go7007_usb_board board_px_tv402u = { ...@@ -225,7 +225,7 @@ static struct go7007_usb_board board_px_tv402u = {
.inputs = { .inputs = {
{ {
.video_input = 1, .video_input = 1,
.audio_input = TVAUDIO_INPUT_EXTERN, .audio_input = TVAUDIO_INPUT_EXTERN,
.name = "Composite", .name = "Composite",
}, },
{ {
......
This diff is collapsed.
This diff is collapsed.
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#include <linux/usb.h> #include <linux/usb.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <media/audiochip.h> #include <media/v4l2-common.h>
#include "saa7134-reg.h" #include "saa7134-reg.h"
#include "saa7134.h" #include "saa7134.h"
...@@ -314,7 +314,13 @@ static int saa7134_go7007_stream_start(struct go7007 *go) ...@@ -314,7 +314,13 @@ static int saa7134_go7007_stream_start(struct go7007 *go)
static int saa7134_go7007_stream_stop(struct go7007 *go) static int saa7134_go7007_stream_stop(struct go7007 *go)
{ {
struct saa7134_go7007 *saa = go->hpi_context; struct saa7134_go7007 *saa = go->hpi_context;
struct saa7134_dev *dev = saa->dev; struct saa7134_dev *dev;
if (!saa)
return -EINVAL;
dev = saa->dev;
if (!dev)
return -EINVAL;
/* Shut down TS FIFO */ /* Shut down TS FIFO */
saa_clearl(SAA7134_MAIN_CTRL, SAA7134_MAIN_CTRL_TE5); saa_clearl(SAA7134_MAIN_CTRL, SAA7134_MAIN_CTRL_TE5);
...@@ -373,6 +379,47 @@ static int saa7134_go7007_send_firmware(struct go7007 *go, u8 *data, int len) ...@@ -373,6 +379,47 @@ static int saa7134_go7007_send_firmware(struct go7007 *go, u8 *data, int len)
return 0; return 0;
} }
static int saa7134_go7007_send_command(struct go7007 *go, unsigned int cmd,
void *arg)
{
struct saa7134_go7007 *saa = go->hpi_context;
struct saa7134_dev *dev = saa->dev;
switch (cmd) {
case VIDIOC_S_STD:
{
v4l2_std_id *std = arg;
return saa7134_s_std_internal(dev, NULL, std);
}
case VIDIOC_G_STD:
{
v4l2_std_id *std = arg;
*std = dev->tvnorm->id;
return 0;
}
case VIDIOC_QUERYCTRL:
{
struct v4l2_queryctrl *ctrl = arg;
if (V4L2_CTRL_ID2CLASS(ctrl->id) == V4L2_CTRL_CLASS_USER)
return saa7134_queryctrl(NULL, NULL, ctrl);
}
case VIDIOC_G_CTRL:
{
struct v4l2_control *ctrl = arg;
if (V4L2_CTRL_ID2CLASS(ctrl->id) == V4L2_CTRL_CLASS_USER)
return saa7134_g_ctrl_internal(dev, NULL, ctrl);
}
case VIDIOC_S_CTRL:
{
struct v4l2_control *ctrl = arg;
if (V4L2_CTRL_ID2CLASS(ctrl->id) == V4L2_CTRL_CLASS_USER)
return saa7134_s_ctrl_internal(dev, NULL, ctrl);
}
}
return -EINVAL;
}
static struct go7007_hpi_ops saa7134_go7007_hpi_ops = { static struct go7007_hpi_ops saa7134_go7007_hpi_ops = {
.interface_reset = saa7134_go7007_interface_reset, .interface_reset = saa7134_go7007_interface_reset,
.write_interrupt = saa7134_go7007_write_interrupt, .write_interrupt = saa7134_go7007_write_interrupt,
...@@ -380,6 +427,7 @@ static struct go7007_hpi_ops saa7134_go7007_hpi_ops = { ...@@ -380,6 +427,7 @@ static struct go7007_hpi_ops saa7134_go7007_hpi_ops = {
.stream_start = saa7134_go7007_stream_start, .stream_start = saa7134_go7007_stream_start,
.stream_stop = saa7134_go7007_stream_stop, .stream_stop = saa7134_go7007_stream_stop,
.send_firmware = saa7134_go7007_send_firmware, .send_firmware = saa7134_go7007_send_firmware,
.send_command = saa7134_go7007_send_command,
}; };
/********************* Add/remove functions *********************/ /********************* Add/remove functions *********************/
......
...@@ -604,7 +604,7 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg) ...@@ -604,7 +604,7 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
{ {
struct v4l2_tuner *tun = arg; struct v4l2_tuner *tun = arg;
memset(t, 0, sizeof(*tun)); memset(tun, 0, sizeof(*tun));
strcpy(tun->name, "Television"); strcpy(tun->name, "Television");
tun->type = V4L2_TUNER_ANALOG_TV; tun->type = V4L2_TUNER_ANALOG_TV;
tun->rangelow = 0UL; /* does anything use these? */ tun->rangelow = 0UL; /* does anything use these? */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment