Commit 50a5677d authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

media: saa7134: drop overlay support

Destructive overlay support (i.e. where the video frame is DMA-ed
straight into a framebuffer) is effectively dead. It was a
necessary evil in the early days when computers were not fast enough
to copy SDTV video frames around, but today that's no longer a problem.

It requires access to the framebuffer memory, which is a bad idea and
very hard to do safely. In addition, in drm it is today almost
impossible to get hold of the framebuffer address.

So drop support for this.
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 7777694f
...@@ -2116,7 +2116,6 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2116,7 +2116,6 @@ struct saa7134_board saa7134_boards[] = {
- Remote control doesn't initialize properly. - Remote control doesn't initialize properly.
- Audio volume starts muted, - Audio volume starts muted,
then gradually increases after channel change. then gradually increases after channel change.
- Overlay scaling problems (application error?)
- Composite S-Video untested. - Composite S-Video untested.
From: Konrad Rzepecki <hannibal@megapolis.pl> From: Konrad Rzepecki <hannibal@megapolis.pl>
*/ */
......
...@@ -51,10 +51,6 @@ static unsigned int latency = UNSET; ...@@ -51,10 +51,6 @@ static unsigned int latency = UNSET;
module_param(latency, int, 0444); module_param(latency, int, 0444);
MODULE_PARM_DESC(latency,"pci latency timer"); MODULE_PARM_DESC(latency,"pci latency timer");
int saa7134_no_overlay=-1;
module_param_named(no_overlay, saa7134_no_overlay, int, 0444);
MODULE_PARM_DESC(no_overlay, "allow override overlay default (0 disables, 1 enables) [some VIA/SIS chipsets are known to have problem with overlay]");
bool saa7134_userptr; bool saa7134_userptr;
module_param(saa7134_userptr, bool, 0644); module_param(saa7134_userptr, bool, 0644);
MODULE_PARM_DESC(saa7134_userptr, "enable page-aligned userptr support"); MODULE_PARM_DESC(saa7134_userptr, "enable page-aligned userptr support");
...@@ -400,13 +396,6 @@ int saa7134_set_dmabits(struct saa7134_dev *dev) ...@@ -400,13 +396,6 @@ int saa7134_set_dmabits(struct saa7134_dev *dev)
SAA7134_MAIN_CTRL_TE5; SAA7134_MAIN_CTRL_TE5;
} }
/* screen overlay -- dma 0 + video task B */
if (dev->ovenable) {
task |= 0x10;
ctrl |= SAA7134_MAIN_CTRL_TE1;
ov = dev->ovfield;
}
/* vbi capture -- dma 0 + vbi task A+B */ /* vbi capture -- dma 0 + vbi task A+B */
if (dev->vbi_q.curr) { if (dev->vbi_q.curr) {
task |= 0x22; task |= 0x22;
...@@ -1066,18 +1055,6 @@ static int saa7134_initdev(struct pci_dev *pci_dev, ...@@ -1066,18 +1055,6 @@ static int saa7134_initdev(struct pci_dev *pci_dev,
latency = 0x0A; latency = 0x0A;
} }
#endif #endif
if (pci_pci_problems & (PCIPCI_FAIL|PCIAGP_FAIL)) {
pr_info("%s: quirk: this driver and your chipset may not work together in overlay mode.\n",
dev->name);
if (!saa7134_no_overlay) {
pr_info("%s: quirk: overlay mode will be disabled.\n",
dev->name);
saa7134_no_overlay = 1;
} else {
pr_info("%s: quirk: overlay mode will be forced. Use this option at your own risk.\n",
dev->name);
}
}
} }
if (UNSET != latency) { if (UNSET != latency) {
pr_info("%s: setting pci latency timer to %d\n", pr_info("%s: setting pci latency timer to %d\n",
...@@ -1198,9 +1175,6 @@ static int saa7134_initdev(struct pci_dev *pci_dev, ...@@ -1198,9 +1175,6 @@ static int saa7134_initdev(struct pci_dev *pci_dev,
saa_call_all(dev, core, s_power, 0); saa_call_all(dev, core, s_power, 0);
/* register v4l devices */ /* register v4l devices */
if (saa7134_no_overlay > 0)
pr_info("%s: Overlay support disabled.\n", dev->name);
dev->video_dev = vdev_init(dev,&saa7134_video_template,"video"); dev->video_dev = vdev_init(dev,&saa7134_video_template,"video");
dev->video_dev->ctrl_handler = &dev->ctrl_handler; dev->video_dev->ctrl_handler = &dev->ctrl_handler;
dev->video_dev->lock = &dev->lock; dev->video_dev->lock = &dev->lock;
...@@ -1210,9 +1184,6 @@ static int saa7134_initdev(struct pci_dev *pci_dev, ...@@ -1210,9 +1184,6 @@ static int saa7134_initdev(struct pci_dev *pci_dev,
if (dev->tuner_type != TUNER_ABSENT && dev->tuner_type != UNSET) if (dev->tuner_type != TUNER_ABSENT && dev->tuner_type != UNSET)
dev->video_dev->device_caps |= V4L2_CAP_TUNER; dev->video_dev->device_caps |= V4L2_CAP_TUNER;
if (saa7134_no_overlay <= 0)
dev->video_dev->device_caps |= V4L2_CAP_VIDEO_OVERLAY;
err = video_register_device(dev->video_dev,VFL_TYPE_VIDEO, err = video_register_device(dev->video_dev,VFL_TYPE_VIDEO,
video_nr[dev->nr]); video_nr[dev->nr]);
if (err < 0) { if (err < 0) {
...@@ -1403,9 +1374,6 @@ static int __maybe_unused saa7134_suspend(struct device *dev_d) ...@@ -1403,9 +1374,6 @@ static int __maybe_unused saa7134_suspend(struct device *dev_d)
struct v4l2_device *v4l2_dev = pci_get_drvdata(pci_dev); struct v4l2_device *v4l2_dev = pci_get_drvdata(pci_dev);
struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev);
/* disable overlay - apps should enable it explicitly on resume*/
dev->ovenable = 0;
/* Disable interrupts, DMA, and rest of the chip*/ /* Disable interrupts, DMA, and rest of the chip*/
saa_writel(SAA7134_IRQ1, 0); saa_writel(SAA7134_IRQ1, 0);
saa_writel(SAA7134_IRQ2, 0); saa_writel(SAA7134_IRQ2, 0);
......
This diff is collapsed.
...@@ -429,7 +429,6 @@ struct saa7134_board { ...@@ -429,7 +429,6 @@ struct saa7134_board {
/* ----------------------------------------------------------- */ /* ----------------------------------------------------------- */
/* device / file handle status */ /* device / file handle status */
#define RESOURCE_OVERLAY 1
#define RESOURCE_VIDEO 2 #define RESOURCE_VIDEO 2
#define RESOURCE_VBI 4 #define RESOURCE_VBI 4
#define RESOURCE_EMPRESS 8 #define RESOURCE_EMPRESS 8
...@@ -589,17 +588,6 @@ struct saa7134_dev { ...@@ -589,17 +588,6 @@ struct saa7134_dev {
unsigned char eedata[256]; unsigned char eedata[256];
int has_rds; int has_rds;
/* video overlay */
struct v4l2_framebuffer ovbuf;
struct saa7134_format *ovfmt;
unsigned int ovenable;
enum v4l2_field ovfield;
struct v4l2_window win;
struct v4l2_clip clips[8];
unsigned int nclips;
struct v4l2_fh *overlay_owner;
/* video+ts+vbi capture */ /* video+ts+vbi capture */
struct saa7134_dmaqueue video_q; struct saa7134_dmaqueue video_q;
struct vb2_queue video_vbq; struct vb2_queue video_vbq;
...@@ -745,7 +733,6 @@ static inline bool is_empress(struct file *file) ...@@ -745,7 +733,6 @@ static inline bool is_empress(struct file *file)
extern struct list_head saa7134_devlist; extern struct list_head saa7134_devlist;
extern struct mutex saa7134_devlist_lock; extern struct mutex saa7134_devlist_lock;
extern int saa7134_no_overlay;
extern bool saa7134_userptr; extern bool saa7134_userptr;
void saa7134_track_gpio(struct saa7134_dev *dev, const char *msg); void saa7134_track_gpio(struct saa7134_dev *dev, const char *msg);
......
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