Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: V4L/DVB (13372): staging/go7007: fix mutex function usage for s2250 staging/go7007: Fix compilation by re-adding the missing s2250-loader.h V4L/DVB (13530): Fix wrong parameter order in memset V4L/DVB (13481): sh_mobile_ceu_camera: fix compile warning V4L/DVB (13436): cxusb: Fix hang on DViCO FusionHDTV DVB-T Dual Digital 4 (rev 1) V4L/DVB (13412): SMS_SIANO_MDTV should depend on HAS_DMA V4L/DVB (13372a): MAINTAINERS: addition of gspca_gl860 driver V4L/DVB (13371): davinci: remove stray duplicate config pointer V4L/DVB (13366): em28xx: fix Reddo DVB-C USB TV Box GPIO V4L/DVB (13345): soc-camera: sh_mobile_ceu_camera: call pm_runtime_disable V4L/DVB (13344): soc-camera: properly initialise the device object when reusing V4L/DVB (13343): v4l: add more missing linux/sched.h includes V4L/DVB (13321): radio-gemtek-pci: fix double mutex_lock
This commit is contained in:
@@ -2312,6 +2312,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/video/gspca/finepix.c
|
F: drivers/media/video/gspca/finepix.c
|
||||||
|
|
||||||
|
GSPCA GL860 SUBDRIVER
|
||||||
|
M: Olivier Lorin <o.lorin@laposte.net>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/video/gspca/gl860/
|
||||||
|
|
||||||
GSPCA M5602 SUBDRIVER
|
GSPCA M5602 SUBDRIVER
|
||||||
M: Erik Andren <erik.andren@gmail.com>
|
M: Erik Andren <erik.andren@gmail.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
|
@@ -64,7 +64,7 @@ void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
|
|||||||
|
|
||||||
ir->ir_type = ir_type;
|
ir->ir_type = ir_type;
|
||||||
|
|
||||||
memset(ir->ir_codes, sizeof(ir->ir_codes), 0);
|
memset(ir->ir_codes, 0, sizeof(ir->ir_codes));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: This is a temporary workaround to use the new IR tables
|
* FIXME: This is a temporary workaround to use the new IR tables
|
||||||
|
@@ -663,6 +663,14 @@ static struct zl10353_config cxusb_zl10353_xc3028_config = {
|
|||||||
.parallel_ts = 1,
|
.parallel_ts = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct zl10353_config cxusb_zl10353_xc3028_config_no_i2c_gate = {
|
||||||
|
.demod_address = 0x0f,
|
||||||
|
.if2 = 45600,
|
||||||
|
.no_tuner = 1,
|
||||||
|
.parallel_ts = 1,
|
||||||
|
.disable_i2c_gate_ctrl = 1,
|
||||||
|
};
|
||||||
|
|
||||||
static struct mt352_config cxusb_mt352_xc3028_config = {
|
static struct mt352_config cxusb_mt352_xc3028_config = {
|
||||||
.demod_address = 0x0f,
|
.demod_address = 0x0f,
|
||||||
.if2 = 4560,
|
.if2 = 4560,
|
||||||
@@ -894,7 +902,7 @@ static int cxusb_dualdig4_frontend_attach(struct dvb_usb_adapter *adap)
|
|||||||
cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1);
|
cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1);
|
||||||
|
|
||||||
if ((adap->fe = dvb_attach(zl10353_attach,
|
if ((adap->fe = dvb_attach(zl10353_attach,
|
||||||
&cxusb_zl10353_xc3028_config,
|
&cxusb_zl10353_xc3028_config_no_i2c_gate,
|
||||||
&adap->dev->i2c_adap)) == NULL)
|
&adap->dev->i2c_adap)) == NULL)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
config SMS_SIANO_MDTV
|
config SMS_SIANO_MDTV
|
||||||
tristate "Siano SMS1xxx based MDTV receiver"
|
tristate "Siano SMS1xxx based MDTV receiver"
|
||||||
depends on DVB_CORE && INPUT
|
depends on DVB_CORE && INPUT && HAS_DMA
|
||||||
---help---
|
---help---
|
||||||
Choose Y or M here if you have MDTV receiver with a Siano chipset.
|
Choose Y or M here if you have MDTV receiver with a Siano chipset.
|
||||||
|
|
||||||
|
@@ -181,12 +181,10 @@ static void gemtek_pci_mute(struct gemtek_pci *card)
|
|||||||
|
|
||||||
static void gemtek_pci_unmute(struct gemtek_pci *card)
|
static void gemtek_pci_unmute(struct gemtek_pci *card)
|
||||||
{
|
{
|
||||||
mutex_lock(&card->lock);
|
|
||||||
if (card->mute) {
|
if (card->mute) {
|
||||||
gemtek_pci_setfrequency(card, card->current_frequency);
|
gemtek_pci_setfrequency(card, card->current_frequency);
|
||||||
card->mute = false;
|
card->mute = false;
|
||||||
}
|
}
|
||||||
mutex_unlock(&card->lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gemtek_pci_getsignal(struct gemtek_pci *card)
|
static int gemtek_pci_getsignal(struct gemtek_pci *card)
|
||||||
|
@@ -1426,7 +1426,6 @@ static __init int vpif_probe(struct platform_device *pdev)
|
|||||||
struct vpif_display_config *config;
|
struct vpif_display_config *config;
|
||||||
int i, j = 0, k, q, m, err = 0;
|
int i, j = 0, k, q, m, err = 0;
|
||||||
struct i2c_adapter *i2c_adap;
|
struct i2c_adapter *i2c_adap;
|
||||||
struct vpif_config *config;
|
|
||||||
struct common_obj *common;
|
struct common_obj *common;
|
||||||
struct channel_obj *ch;
|
struct channel_obj *ch;
|
||||||
struct video_device *vfd;
|
struct video_device *vfd;
|
||||||
|
@@ -1584,8 +1584,8 @@ struct em28xx_board em28xx_boards[] = {
|
|||||||
[EM2870_BOARD_REDDO_DVB_C_USB_BOX] = {
|
[EM2870_BOARD_REDDO_DVB_C_USB_BOX] = {
|
||||||
.name = "Reddo DVB-C USB TV Box",
|
.name = "Reddo DVB-C USB TV Box",
|
||||||
.tuner_type = TUNER_ABSENT,
|
.tuner_type = TUNER_ABSENT,
|
||||||
|
.tuner_gpio = reddo_dvb_c_usb_box,
|
||||||
.has_dvb = 1,
|
.has_dvb = 1,
|
||||||
.dvb_gpio = reddo_dvb_c_usb_box,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
|
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
#include <linux/version.h>
|
#include <linux/version.h>
|
||||||
#include <linux/videodev2.h>
|
#include <linux/videodev2.h>
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#include <media/v4l2-common.h>
|
#include <media/v4l2-common.h>
|
||||||
#include <media/v4l2-dev.h>
|
#include <media/v4l2-dev.h>
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/videodev2.h>
|
#include <linux/videodev2.h>
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#include <media/v4l2-common.h>
|
#include <media/v4l2-common.h>
|
||||||
#include <media/v4l2-dev.h>
|
#include <media/v4l2-dev.h>
|
||||||
@@ -1723,11 +1724,12 @@ static int __devinit sh_mobile_ceu_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
err = soc_camera_host_register(&pcdev->ici);
|
err = soc_camera_host_register(&pcdev->ici);
|
||||||
if (err)
|
if (err)
|
||||||
goto exit_free_irq;
|
goto exit_free_clk;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
exit_free_irq:
|
exit_free_clk:
|
||||||
|
pm_runtime_disable(&pdev->dev);
|
||||||
free_irq(pcdev->irq, pcdev);
|
free_irq(pcdev->irq, pcdev);
|
||||||
exit_release_mem:
|
exit_release_mem:
|
||||||
if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
|
if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
|
||||||
@@ -1747,6 +1749,7 @@ static int __devexit sh_mobile_ceu_remove(struct platform_device *pdev)
|
|||||||
struct sh_mobile_ceu_dev, ici);
|
struct sh_mobile_ceu_dev, ici);
|
||||||
|
|
||||||
soc_camera_host_unregister(soc_host);
|
soc_camera_host_unregister(soc_host);
|
||||||
|
pm_runtime_disable(&pdev->dev);
|
||||||
free_irq(pcdev->irq, pcdev);
|
free_irq(pcdev->irq, pcdev);
|
||||||
if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
|
if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
|
||||||
dma_release_declared_memory(&pdev->dev);
|
dma_release_declared_memory(&pdev->dev);
|
||||||
|
@@ -1097,6 +1097,13 @@ static int default_s_crop(struct soc_camera_device *icd, struct v4l2_crop *a)
|
|||||||
return v4l2_subdev_call(sd, video, s_crop, a);
|
return v4l2_subdev_call(sd, video, s_crop, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void soc_camera_device_init(struct device *dev, void *pdata)
|
||||||
|
{
|
||||||
|
dev->platform_data = pdata;
|
||||||
|
dev->bus = &soc_camera_bus_type;
|
||||||
|
dev->release = dummy_release;
|
||||||
|
}
|
||||||
|
|
||||||
int soc_camera_host_register(struct soc_camera_host *ici)
|
int soc_camera_host_register(struct soc_camera_host *ici)
|
||||||
{
|
{
|
||||||
struct soc_camera_host *ix;
|
struct soc_camera_host *ix;
|
||||||
@@ -1158,6 +1165,7 @@ void soc_camera_host_unregister(struct soc_camera_host *ici)
|
|||||||
|
|
||||||
list_for_each_entry(icd, &devices, list) {
|
list_for_each_entry(icd, &devices, list) {
|
||||||
if (icd->iface == ici->nr) {
|
if (icd->iface == ici->nr) {
|
||||||
|
void *pdata = icd->dev.platform_data;
|
||||||
/* The bus->remove will be called */
|
/* The bus->remove will be called */
|
||||||
device_unregister(&icd->dev);
|
device_unregister(&icd->dev);
|
||||||
/*
|
/*
|
||||||
@@ -1169,6 +1177,7 @@ void soc_camera_host_unregister(struct soc_camera_host *ici)
|
|||||||
* device private data.
|
* device private data.
|
||||||
*/
|
*/
|
||||||
memset(&icd->dev, 0, sizeof(icd->dev));
|
memset(&icd->dev, 0, sizeof(icd->dev));
|
||||||
|
soc_camera_device_init(&icd->dev, pdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1200,10 +1209,7 @@ static int soc_camera_device_register(struct soc_camera_device *icd)
|
|||||||
* man, stay reasonable... */
|
* man, stay reasonable... */
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
icd->devnum = num;
|
icd->devnum = num;
|
||||||
icd->dev.bus = &soc_camera_bus_type;
|
|
||||||
|
|
||||||
icd->dev.release = dummy_release;
|
|
||||||
icd->use_count = 0;
|
icd->use_count = 0;
|
||||||
icd->host_priv = NULL;
|
icd->host_priv = NULL;
|
||||||
mutex_init(&icd->video_lock);
|
mutex_init(&icd->video_lock);
|
||||||
@@ -1311,12 +1317,13 @@ static int __devinit soc_camera_pdrv_probe(struct platform_device *pdev)
|
|||||||
icd->iface = icl->bus_id;
|
icd->iface = icl->bus_id;
|
||||||
icd->pdev = &pdev->dev;
|
icd->pdev = &pdev->dev;
|
||||||
platform_set_drvdata(pdev, icd);
|
platform_set_drvdata(pdev, icd);
|
||||||
icd->dev.platform_data = icl;
|
|
||||||
|
|
||||||
ret = soc_camera_device_register(icd);
|
ret = soc_camera_device_register(icd);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto escdevreg;
|
goto escdevreg;
|
||||||
|
|
||||||
|
soc_camera_device_init(&icd->dev, icl);
|
||||||
|
|
||||||
icd->user_width = DEFAULT_WIDTH;
|
icd->user_width = DEFAULT_WIDTH;
|
||||||
icd->user_height = DEFAULT_HEIGHT;
|
icd->user_height = DEFAULT_HEIGHT;
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/pagemap.h>
|
#include <linux/pagemap.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
#include <media/videobuf-dma-contig.h>
|
#include <media/videobuf-dma-contig.h>
|
||||||
|
|
||||||
struct videobuf_dma_contig_memory {
|
struct videobuf_dma_contig_memory {
|
||||||
|
@@ -261,7 +261,7 @@ static int read_reg_fp(struct i2c_client *client, u16 addr, u16 *val)
|
|||||||
|
|
||||||
memset(buf, 0xcd, 6);
|
memset(buf, 0xcd, 6);
|
||||||
usb = go->hpi_context;
|
usb = go->hpi_context;
|
||||||
if (down_interruptible(&usb->i2c_lock) != 0) {
|
if (mutex_lock_interruptible(&usb->i2c_lock) != 0) {
|
||||||
printk(KERN_INFO "i2c lock failed\n");
|
printk(KERN_INFO "i2c lock failed\n");
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
return -EINTR;
|
return -EINTR;
|
||||||
@@ -270,7 +270,7 @@ static int read_reg_fp(struct i2c_client *client, u16 addr, u16 *val)
|
|||||||
kfree(buf);
|
kfree(buf);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
up(&usb->i2c_lock);
|
mutex_unlock(&usb->i2c_lock);
|
||||||
|
|
||||||
*val = (buf[0] << 8) | buf[1];
|
*val = (buf[0] << 8) | buf[1];
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
|
24
drivers/staging/go7007/s2250-loader.h
Normal file
24
drivers/staging/go7007/s2250-loader.h
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2006 Micronas USA Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License (Version 2) as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _S2250_LOADER_H_
|
||||||
|
#define _S2250_LOADER_H_
|
||||||
|
|
||||||
|
extern int s2250loader_init(void);
|
||||||
|
extern void s2250loader_cleanup(void);
|
||||||
|
|
||||||
|
#endif
|
Reference in New Issue
Block a user