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 (10191a): Update MAINTAINERS entries on media drivers V4L/DVB (10190): cx88: Fix some Kbuild troubles V4L/DVB (10189): dm1105: Fix build with INPUT=m and DVB_DM1105=y V4L/DVB (10185): Use negated usb_endpoint_xfer_control, etc V4L/DVB (10182): tda8290: fix TDA8290 + TDA18271 initialization V4L/DVB (10181): v4l2-device: Fix some sparse warnings V4L/DVB (10180): drivers/media: Fix a number of sparse warnings V4L/DVB (10179): tda8290: Fix two sparse warnings V4L/DVB (10178): dvb_frontend: Fix some sparse warnings due to static symbols V4L/DVB (10177): Fix sparse warnings on em28xx V4L/DVB (10176b): pxa-camera: fix redefinition warnings and missing DMA definitions V4L/DVB (10176a): Switch remaining clear_user_page users over to clear_user_highpage
This commit is contained in:
commit
97c440ba41
65
MAINTAINERS
65
MAINTAINERS
@ -1024,16 +1024,17 @@ S: Maintained
|
|||||||
BTTV VIDEO4LINUX DRIVER
|
BTTV VIDEO4LINUX DRIVER
|
||||||
P: Mauro Carvalho Chehab
|
P: Mauro Carvalho Chehab
|
||||||
M: mchehab@infradead.org
|
M: mchehab@infradead.org
|
||||||
M: v4l-dvb-maintainer@linuxtv.org
|
L: linux-media@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: video4linux-list@redhat.com
|
||||||
W: http://linuxtv.org
|
W: http://linuxtv.org
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
|
CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
|
||||||
P: Jonathan Corbet
|
P: Jonathan Corbet
|
||||||
M: corbet@lwn.net
|
M: corbet@lwn.net
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
CALGARY x86-64 IOMMU
|
CALGARY x86-64 IOMMU
|
||||||
@ -1261,7 +1262,8 @@ P: Hans Verkuil, Andy Walls
|
|||||||
M: hverkuil@xs4all.nl, awalls@radix.net
|
M: hverkuil@xs4all.nl, awalls@radix.net
|
||||||
L: ivtv-devel@ivtvdriver.org
|
L: ivtv-devel@ivtvdriver.org
|
||||||
L: ivtv-users@ivtvdriver.org
|
L: ivtv-users@ivtvdriver.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://linuxtv.org
|
W: http://linuxtv.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -1487,10 +1489,10 @@ S: Maintained
|
|||||||
|
|
||||||
DVB SUBSYSTEM AND DRIVERS
|
DVB SUBSYSTEM AND DRIVERS
|
||||||
P: LinuxTV.org Project
|
P: LinuxTV.org Project
|
||||||
M: v4l-dvb-maintainer@linuxtv.org
|
M: linux-media@vger.kernel.org
|
||||||
L: linux-dvb@linuxtv.org (subscription required)
|
L: linux-dvb@linuxtv.org (subscription required)
|
||||||
W: http://linuxtv.org/
|
W: http://linuxtv.org/
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
DZ DECSTATION DZ11 SERIAL DRIVER
|
DZ DECSTATION DZ11 SERIAL DRIVER
|
||||||
@ -1882,32 +1884,37 @@ S: Maintained
|
|||||||
GSPCA FINEPIX SUBDRIVER
|
GSPCA FINEPIX SUBDRIVER
|
||||||
P: Frank Zago
|
P: Frank Zago
|
||||||
M: frank@zago.net
|
M: frank@zago.net
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
GSPCA M5602 SUBDRIVER
|
GSPCA M5602 SUBDRIVER
|
||||||
P: Erik Andren
|
P: Erik Andren
|
||||||
M: erik.andren@gmail.com
|
M: erik.andren@gmail.com
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
GSPCA PAC207 SONIXB SUBDRIVER
|
GSPCA PAC207 SONIXB SUBDRIVER
|
||||||
P: Hans de Goede
|
P: Hans de Goede
|
||||||
M: hdegoede@redhat.com
|
M: hdegoede@redhat.com
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
GSPCA T613 SUBDRIVER
|
GSPCA T613 SUBDRIVER
|
||||||
P: Leandro Costantino
|
P: Leandro Costantino
|
||||||
M: lcostantino@gmail.com
|
M: lcostantino@gmail.com
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
GSPCA USB WEBCAM DRIVER
|
GSPCA USB WEBCAM DRIVER
|
||||||
P: Jean-Francois Moine
|
P: Jean-Francois Moine
|
||||||
M: moinejf@free.fr
|
M: moinejf@free.fr
|
||||||
W: http://moinejf.free.fr
|
W: http://moinejf.free.fr
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
HARDWARE MONITORING
|
HARDWARE MONITORING
|
||||||
@ -2437,7 +2444,8 @@ P: Hans Verkuil
|
|||||||
M: hverkuil@xs4all.nl
|
M: hverkuil@xs4all.nl
|
||||||
L: ivtv-devel@ivtvdriver.org
|
L: ivtv-devel@ivtvdriver.org
|
||||||
L: ivtv-users@ivtvdriver.org
|
L: ivtv-users@ivtvdriver.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://www.ivtvdriver.org
|
W: http://www.ivtvdriver.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -3197,7 +3205,8 @@ S: Maintained
|
|||||||
OMNIVISION OV7670 SENSOR DRIVER
|
OMNIVISION OV7670 SENSOR DRIVER
|
||||||
P: Jonathan Corbet
|
P: Jonathan Corbet
|
||||||
M: corbet@lwn.net
|
M: corbet@lwn.net
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ONENAND FLASH DRIVER
|
ONENAND FLASH DRIVER
|
||||||
@ -3479,8 +3488,9 @@ PVRUSB2 VIDEO4LINUX DRIVER
|
|||||||
P: Mike Isely
|
P: Mike Isely
|
||||||
M: isely@pobox.com
|
M: isely@pobox.com
|
||||||
L: pvrusb2@isely.net (subscribers-only)
|
L: pvrusb2@isely.net (subscribers-only)
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
W: http://www.isely.net/pvrusb2/
|
W: http://www.isely.net/pvrusb2/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
PXA2xx/PXA3xx SUPPORT
|
PXA2xx/PXA3xx SUPPORT
|
||||||
@ -3700,6 +3710,8 @@ S: Supported
|
|||||||
SAA7146 VIDEO4LINUX-2 DRIVER
|
SAA7146 VIDEO4LINUX-2 DRIVER
|
||||||
P: Michael Hunold
|
P: Michael Hunold
|
||||||
M: michael@mihu.de
|
M: michael@mihu.de
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://www.mihu.de/linux/saa7146
|
W: http://www.mihu.de/linux/saa7146
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -3963,7 +3975,8 @@ S: Maintained
|
|||||||
SOC-CAMERA V4L2 SUBSYSTEM
|
SOC-CAMERA V4L2 SUBSYSTEM
|
||||||
P: Guennadi Liakhovetski
|
P: Guennadi Liakhovetski
|
||||||
M: g.liakhovetski@gmx.de
|
M: g.liakhovetski@gmx.de
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
SOEKRIS NET48XX LED SUPPORT
|
SOEKRIS NET48XX LED SUPPORT
|
||||||
@ -4382,7 +4395,8 @@ USB ET61X[12]51 DRIVER
|
|||||||
P: Luca Risolia
|
P: Luca Risolia
|
||||||
M: luca.risolia@studio.unibo.it
|
M: luca.risolia@studio.unibo.it
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://www.linux-projects.org
|
W: http://www.linux-projects.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -4531,7 +4545,8 @@ USB SN9C1xx DRIVER
|
|||||||
P: Luca Risolia
|
P: Luca Risolia
|
||||||
M: luca.risolia@studio.unibo.it
|
M: luca.risolia@studio.unibo.it
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://www.linux-projects.org
|
W: http://www.linux-projects.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -4560,7 +4575,8 @@ USB VIDEO CLASS
|
|||||||
P: Laurent Pinchart
|
P: Laurent Pinchart
|
||||||
M: laurent.pinchart@skynet.be
|
M: laurent.pinchart@skynet.be
|
||||||
L: linux-uvc-devel@lists.berlios.de (subscribers-only)
|
L: linux-uvc-devel@lists.berlios.de (subscribers-only)
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://linux-uvc.berlios.de
|
W: http://linux-uvc.berlios.de
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -4568,7 +4584,8 @@ USB W996[87]CF DRIVER
|
|||||||
P: Luca Risolia
|
P: Luca Risolia
|
||||||
M: luca.risolia@studio.unibo.it
|
M: luca.risolia@studio.unibo.it
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://www.linux-projects.org
|
W: http://www.linux-projects.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -4582,7 +4599,8 @@ USB ZC0301 DRIVER
|
|||||||
P: Luca Risolia
|
P: Luca Risolia
|
||||||
M: luca.risolia@studio.unibo.it
|
M: luca.risolia@studio.unibo.it
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://www.linux-projects.org
|
W: http://www.linux-projects.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -4597,7 +4615,8 @@ USB ZR364XX DRIVER
|
|||||||
P: Antoine Jacquet
|
P: Antoine Jacquet
|
||||||
M: royale@zerezo.com
|
M: royale@zerezo.com
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
W: http://royale.zerezo.com/zr364xx/
|
W: http://royale.zerezo.com/zr364xx/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -4666,10 +4685,10 @@ S: Maintained
|
|||||||
VIDEO FOR LINUX (V4L)
|
VIDEO FOR LINUX (V4L)
|
||||||
P: Mauro Carvalho Chehab
|
P: Mauro Carvalho Chehab
|
||||||
M: mchehab@infradead.org
|
M: mchehab@infradead.org
|
||||||
M: v4l-dvb-maintainer@linuxtv.org
|
L: linux-media@vger.kernel.org
|
||||||
L: video4linux-list@redhat.com
|
L: video4linux-list@redhat.com
|
||||||
W: http://linuxtv.org
|
W: http://linuxtv.org
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
VLAN (802.1Q)
|
VLAN (802.1Q)
|
||||||
|
@ -150,7 +150,7 @@ static void set_audio(struct dvb_frontend *fe,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct {
|
static struct {
|
||||||
unsigned char seq[2];
|
unsigned char seq[2];
|
||||||
} fm_mode[] = {
|
} fm_mode[] = {
|
||||||
{ { 0x01, 0x81} }, /* Put device into expert mode */
|
{ { 0x01, 0x81} }, /* Put device into expert mode */
|
||||||
@ -207,7 +207,6 @@ static void tda8290_set_params(struct dvb_frontend *fe,
|
|||||||
msleep(1);
|
msleep(1);
|
||||||
|
|
||||||
if (params->mode == V4L2_TUNER_RADIO) {
|
if (params->mode == V4L2_TUNER_RADIO) {
|
||||||
int i;
|
|
||||||
unsigned char deemphasis[] = { 0x13, 1 };
|
unsigned char deemphasis[] = { 0x13, 1 };
|
||||||
|
|
||||||
/* FIXME: allow using a different deemphasis */
|
/* FIXME: allow using a different deemphasis */
|
||||||
@ -767,7 +766,8 @@ struct dvb_frontend *tda829x_attach(struct dvb_frontend *fe,
|
|||||||
fe->ops.analog_ops.info.name = name;
|
fe->ops.analog_ops.info.name = name;
|
||||||
|
|
||||||
if (priv->ver & TDA8290) {
|
if (priv->ver & TDA8290) {
|
||||||
tda8290_init_tuner(fe);
|
if (priv->ver & (TDA8275 | TDA8275A))
|
||||||
|
tda8290_init_tuner(fe);
|
||||||
tda8290_init_if(fe);
|
tda8290_init_if(fe);
|
||||||
} else if (priv->ver & TDA8295)
|
} else if (priv->ver & TDA8295)
|
||||||
tda8295_init_if(fe);
|
tda8295_init_if(fe);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
config DVB_DM1105
|
config DVB_DM1105
|
||||||
tristate "SDMC DM1105 based PCI cards"
|
tristate "SDMC DM1105 based PCI cards"
|
||||||
depends on DVB_CORE && PCI && I2C
|
depends on DVB_CORE && PCI && I2C
|
||||||
|
depends on INPUT
|
||||||
select DVB_PLL if !DVB_FE_CUSTOMISE
|
select DVB_PLL if !DVB_FE_CUSTOMISE
|
||||||
select DVB_STV0299 if !DVB_FE_CUSTOMISE
|
select DVB_STV0299 if !DVB_FE_CUSTOMISE
|
||||||
select DVB_STV0288 if !DVB_FE_CUSTOMISE
|
select DVB_STV0288 if !DVB_FE_CUSTOMISE
|
||||||
|
@ -824,7 +824,7 @@ static int dvb_frontend_check_parameters(struct dvb_frontend *fe,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct dtv_cmds_h dtv_cmds[] = {
|
static struct dtv_cmds_h dtv_cmds[] = {
|
||||||
[DTV_TUNE] = {
|
[DTV_TUNE] = {
|
||||||
.name = "DTV_TUNE",
|
.name = "DTV_TUNE",
|
||||||
.cmd = DTV_TUNE,
|
.cmd = DTV_TUNE,
|
||||||
@ -962,7 +962,7 @@ struct dtv_cmds_h dtv_cmds[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
void dtv_property_dump(struct dtv_property *tvp)
|
static void dtv_property_dump(struct dtv_property *tvp)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -993,7 +993,7 @@ void dtv_property_dump(struct dtv_property *tvp)
|
|||||||
dprintk("%s() tvp.u.data = 0x%08x\n", __func__, tvp->u.data);
|
dprintk("%s() tvp.u.data = 0x%08x\n", __func__, tvp->u.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_legacy_delivery_system(fe_delivery_system_t s)
|
static int is_legacy_delivery_system(fe_delivery_system_t s)
|
||||||
{
|
{
|
||||||
if((s == SYS_UNDEFINED) || (s == SYS_DVBC_ANNEX_AC) ||
|
if((s == SYS_UNDEFINED) || (s == SYS_DVBC_ANNEX_AC) ||
|
||||||
(s == SYS_DVBC_ANNEX_B) || (s == SYS_DVBT) || (s == SYS_DVBS) ||
|
(s == SYS_DVBC_ANNEX_B) || (s == SYS_DVBT) || (s == SYS_DVBS) ||
|
||||||
@ -1007,7 +1007,8 @@ int is_legacy_delivery_system(fe_delivery_system_t s)
|
|||||||
* drivers can use a single set_frontend tuning function, regardless of whether
|
* drivers can use a single set_frontend tuning function, regardless of whether
|
||||||
* it's being used for the legacy or new API, reducing code and complexity.
|
* it's being used for the legacy or new API, reducing code and complexity.
|
||||||
*/
|
*/
|
||||||
void dtv_property_cache_sync(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
|
static void dtv_property_cache_sync(struct dvb_frontend *fe,
|
||||||
|
struct dvb_frontend_parameters *p)
|
||||||
{
|
{
|
||||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
|
|
||||||
@ -1059,7 +1060,7 @@ void dtv_property_cache_sync(struct dvb_frontend *fe, struct dvb_frontend_parame
|
|||||||
/* Ensure the cached values are set correctly in the frontend
|
/* Ensure the cached values are set correctly in the frontend
|
||||||
* legacy tuning structures, for the advanced tuning API.
|
* legacy tuning structures, for the advanced tuning API.
|
||||||
*/
|
*/
|
||||||
void dtv_property_legacy_params_sync(struct dvb_frontend *fe)
|
static void dtv_property_legacy_params_sync(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
||||||
@ -1114,7 +1115,7 @@ void dtv_property_legacy_params_sync(struct dvb_frontend *fe)
|
|||||||
/* Ensure the cached values are set correctly in the frontend
|
/* Ensure the cached values are set correctly in the frontend
|
||||||
* legacy tuning structures, for the legacy tuning API.
|
* legacy tuning structures, for the legacy tuning API.
|
||||||
*/
|
*/
|
||||||
void dtv_property_adv_params_sync(struct dvb_frontend *fe)
|
static void dtv_property_adv_params_sync(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
||||||
@ -1149,7 +1150,7 @@ void dtv_property_adv_params_sync(struct dvb_frontend *fe)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dtv_property_cache_submit(struct dvb_frontend *fe)
|
static void dtv_property_cache_submit(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
|
|
||||||
@ -1180,8 +1181,9 @@ static int dvb_frontend_ioctl_legacy(struct inode *inode, struct file *file,
|
|||||||
static int dvb_frontend_ioctl_properties(struct inode *inode, struct file *file,
|
static int dvb_frontend_ioctl_properties(struct inode *inode, struct file *file,
|
||||||
unsigned int cmd, void *parg);
|
unsigned int cmd, void *parg);
|
||||||
|
|
||||||
int dtv_property_process_get(struct dvb_frontend *fe, struct dtv_property *tvp,
|
static int dtv_property_process_get(struct dvb_frontend *fe,
|
||||||
struct inode *inode, struct file *file)
|
struct dtv_property *tvp,
|
||||||
|
struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
@ -1253,8 +1255,10 @@ int dtv_property_process_get(struct dvb_frontend *fe, struct dtv_property *tvp,
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dtv_property_process_set(struct dvb_frontend *fe, struct dtv_property *tvp,
|
static int dtv_property_process_set(struct dvb_frontend *fe,
|
||||||
struct inode *inode, struct file *file)
|
struct dtv_property *tvp,
|
||||||
|
struct inode *inode,
|
||||||
|
struct file *file)
|
||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
static int dvb_usb_anysee_debug;
|
static int dvb_usb_anysee_debug;
|
||||||
module_param_named(debug, dvb_usb_anysee_debug, int, 0644);
|
module_param_named(debug, dvb_usb_anysee_debug, int, 0644);
|
||||||
MODULE_PARM_DESC(debug, "set debugging level" DVB_USB_DEBUG_STATUS);
|
MODULE_PARM_DESC(debug, "set debugging level" DVB_USB_DEBUG_STATUS);
|
||||||
int dvb_usb_anysee_delsys;
|
static int dvb_usb_anysee_delsys;
|
||||||
module_param_named(delsys, dvb_usb_anysee_delsys, int, 0644);
|
module_param_named(delsys, dvb_usb_anysee_delsys, int, 0644);
|
||||||
MODULE_PARM_DESC(delsys, "select delivery mode (0=DVB-C, 1=DVB-T)");
|
MODULE_PARM_DESC(delsys, "select delivery mode (0=DVB-C, 1=DVB-T)");
|
||||||
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
||||||
|
@ -369,7 +369,7 @@ static int cx24116_set_inversion(struct cx24116_state *state,
|
|||||||
* Not all S2 mmodulation schemes are support and not all rates with
|
* Not all S2 mmodulation schemes are support and not all rates with
|
||||||
* a scheme are support. Especially, no auto detect when in S2 mode.
|
* a scheme are support. Especially, no auto detect when in S2 mode.
|
||||||
*/
|
*/
|
||||||
struct cx24116_modfec {
|
static struct cx24116_modfec {
|
||||||
fe_delivery_system_t delivery_system;
|
fe_delivery_system_t delivery_system;
|
||||||
fe_modulation_t modulation;
|
fe_modulation_t modulation;
|
||||||
fe_code_rate_t fec;
|
fe_code_rate_t fec;
|
||||||
|
@ -54,7 +54,7 @@ static u32 stb0899_calc_srate(u32 master_clk, u8 *sfr)
|
|||||||
* stb0899_get_srate
|
* stb0899_get_srate
|
||||||
* Get the current symbol rate
|
* Get the current symbol rate
|
||||||
*/
|
*/
|
||||||
u32 stb0899_get_srate(struct stb0899_state *state)
|
static u32 stb0899_get_srate(struct stb0899_state *state)
|
||||||
{
|
{
|
||||||
struct stb0899_internal *internal = &state->internal;
|
struct stb0899_internal *internal = &state->internal;
|
||||||
u8 sfr[3];
|
u8 sfr[3];
|
||||||
@ -763,7 +763,7 @@ static void stb0899_dvbs2_config_csm_auto(struct stb0899_state *state)
|
|||||||
stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_CSM_CNTRL1, STB0899_OFF0_CSM_CNTRL1, reg);
|
stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_CSM_CNTRL1, STB0899_OFF0_CSM_CNTRL1, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
long Log2Int(int number)
|
static long Log2Int(int number)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ static const struct stb0899_tab stb0899_dvbs2rf_tab[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* DVB-S2 Es/N0 quant in dB/100 vs read value * 100*/
|
/* DVB-S2 Es/N0 quant in dB/100 vs read value * 100*/
|
||||||
struct stb0899_tab stb0899_quant_tab[] = {
|
static struct stb0899_tab stb0899_quant_tab[] = {
|
||||||
{ 0, 0 },
|
{ 0, 0 },
|
||||||
{ 0, 100 },
|
{ 0, 100 },
|
||||||
{ 600, 200 },
|
{ 600, 200 },
|
||||||
@ -177,7 +177,7 @@ struct stb0899_tab stb0899_quant_tab[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* DVB-S2 Es/N0 estimate in dB/100 vs read value */
|
/* DVB-S2 Es/N0 estimate in dB/100 vs read value */
|
||||||
struct stb0899_tab stb0899_est_tab[] = {
|
static struct stb0899_tab stb0899_est_tab[] = {
|
||||||
{ 0, 0 },
|
{ 0, 0 },
|
||||||
{ 0, 1 },
|
{ 0, 1 },
|
||||||
{ 301, 2 },
|
{ 301, 2 },
|
||||||
@ -217,7 +217,7 @@ struct stb0899_tab stb0899_est_tab[] = {
|
|||||||
{ 5721, 526017 },
|
{ 5721, 526017 },
|
||||||
};
|
};
|
||||||
|
|
||||||
int _stb0899_read_reg(struct stb0899_state *state, unsigned int reg)
|
static int _stb0899_read_reg(struct stb0899_state *state, unsigned int reg)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -1337,7 +1337,7 @@ static struct stb0899_config tt3200_config = {
|
|||||||
.tuner_set_rfsiggain = NULL
|
.tuner_set_rfsiggain = NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stb6100_config tt3200_stb6100_config = {
|
static struct stb6100_config tt3200_stb6100_config = {
|
||||||
.tuner_address = 0x60,
|
.tuner_address = 0x60,
|
||||||
.refclock = 27000000,
|
.refclock = 27000000,
|
||||||
};
|
};
|
||||||
|
@ -69,6 +69,11 @@ config VIDEO_CX88_DVB
|
|||||||
To compile this driver as a module, choose M here: the
|
To compile this driver as a module, choose M here: the
|
||||||
module will be called cx88-dvb.
|
module will be called cx88-dvb.
|
||||||
|
|
||||||
|
config VIDEO_CX88_MPEG
|
||||||
|
tristate
|
||||||
|
depends on VIDEO_CX88_DVB || VIDEO_CX88_BLACKBIRD
|
||||||
|
default y
|
||||||
|
|
||||||
config VIDEO_CX88_VP3054
|
config VIDEO_CX88_VP3054
|
||||||
tristate "VP-3054 Secondary I2C Bus Support"
|
tristate "VP-3054 Secondary I2C Bus Support"
|
||||||
default m
|
default m
|
||||||
|
@ -3,7 +3,8 @@ cx88xx-objs := cx88-cards.o cx88-core.o cx88-i2c.o cx88-tvaudio.o \
|
|||||||
cx8800-objs := cx88-video.o cx88-vbi.o
|
cx8800-objs := cx88-video.o cx88-vbi.o
|
||||||
cx8802-objs := cx88-mpeg.o
|
cx8802-objs := cx88-mpeg.o
|
||||||
|
|
||||||
obj-$(CONFIG_VIDEO_CX88) += cx88xx.o cx8800.o cx8802.o
|
obj-$(CONFIG_VIDEO_CX88) += cx88xx.o cx8800.o
|
||||||
|
obj-$(CONFIG_VIDEO_CX88_MPEG) += cx8802.o
|
||||||
obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o
|
obj-$(CONFIG_VIDEO_CX88_ALSA) += cx88-alsa.o
|
||||||
obj-$(CONFIG_VIDEO_CX88_BLACKBIRD) += cx88-blackbird.o
|
obj-$(CONFIG_VIDEO_CX88_BLACKBIRD) += cx88-blackbird.o
|
||||||
obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o
|
obj-$(CONFIG_VIDEO_CX88_DVB) += cx88-dvb.o
|
||||||
|
@ -138,6 +138,28 @@ static int cx88_dvb_bus_ctrl(struct dvb_frontend* fe, int acquire)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cx88_dvb_gate_ctrl(struct cx88_core *core, int open)
|
||||||
|
{
|
||||||
|
struct videobuf_dvb_frontends *f;
|
||||||
|
struct videobuf_dvb_frontend *fe;
|
||||||
|
|
||||||
|
if (!core->dvbdev)
|
||||||
|
return;
|
||||||
|
|
||||||
|
f = &core->dvbdev->frontends;
|
||||||
|
|
||||||
|
if (!f)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (f->gate <= 1) /* undefined or fe0 */
|
||||||
|
fe = videobuf_dvb_get_frontend(f, 1);
|
||||||
|
else
|
||||||
|
fe = videobuf_dvb_get_frontend(f, f->gate);
|
||||||
|
|
||||||
|
if (fe && fe->dvb.frontend && fe->dvb.frontend->ops.i2c_gate_ctrl)
|
||||||
|
fe->dvb.frontend->ops.i2c_gate_ctrl(fe->dvb.frontend, open);
|
||||||
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------ */
|
||||||
|
|
||||||
static int dvico_fusionhdtv_demod_init(struct dvb_frontend* fe)
|
static int dvico_fusionhdtv_demod_init(struct dvb_frontend* fe)
|
||||||
@ -597,12 +619,30 @@ static int dvb_register(struct cx8802_dev *dev)
|
|||||||
struct cx88_core *core = dev->core;
|
struct cx88_core *core = dev->core;
|
||||||
struct videobuf_dvb_frontend *fe0, *fe1 = NULL;
|
struct videobuf_dvb_frontend *fe0, *fe1 = NULL;
|
||||||
int mfe_shared = 0; /* bus not shared by default */
|
int mfe_shared = 0; /* bus not shared by default */
|
||||||
|
int i;
|
||||||
|
|
||||||
if (0 != core->i2c_rc) {
|
if (0 != core->i2c_rc) {
|
||||||
printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);
|
printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);
|
||||||
goto frontend_detach;
|
goto frontend_detach;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!core->board.num_frontends)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
mutex_init(&dev->frontends.lock);
|
||||||
|
INIT_LIST_HEAD(&dev->frontends.felist);
|
||||||
|
|
||||||
|
printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,
|
||||||
|
core->board.num_frontends);
|
||||||
|
for (i = 1; i <= core->board.num_frontends; i++) {
|
||||||
|
fe0 = videobuf_dvb_alloc_frontend(&dev->frontends, i);
|
||||||
|
if (!fe0) {
|
||||||
|
printk(KERN_ERR "%s() failed to alloc\n", __func__);
|
||||||
|
videobuf_dvb_dealloc_frontends(&dev->frontends);
|
||||||
|
goto frontend_detach;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Get the first frontend */
|
/* Get the first frontend */
|
||||||
fe0 = videobuf_dvb_get_frontend(&dev->frontends, 1);
|
fe0 = videobuf_dvb_get_frontend(&dev->frontends, 1);
|
||||||
if (!fe0)
|
if (!fe0)
|
||||||
@ -611,6 +651,9 @@ static int dvb_register(struct cx8802_dev *dev)
|
|||||||
/* multi-frontend gate control is undefined or defaults to fe0 */
|
/* multi-frontend gate control is undefined or defaults to fe0 */
|
||||||
dev->frontends.gate = 0;
|
dev->frontends.gate = 0;
|
||||||
|
|
||||||
|
/* Sets the gate control callback to be used by i2c command calls */
|
||||||
|
core->gate_ctrl = cx88_dvb_gate_ctrl;
|
||||||
|
|
||||||
/* init frontend(s) */
|
/* init frontend(s) */
|
||||||
switch (core->boardnr) {
|
switch (core->boardnr) {
|
||||||
case CX88_BOARD_HAUPPAUGE_DVB_T1:
|
case CX88_BOARD_HAUPPAUGE_DVB_T1:
|
||||||
@ -1109,6 +1152,7 @@ static int dvb_register(struct cx8802_dev *dev)
|
|||||||
&dev->pci->dev, adapter_nr, mfe_shared);
|
&dev->pci->dev, adapter_nr, mfe_shared);
|
||||||
|
|
||||||
frontend_detach:
|
frontend_detach:
|
||||||
|
core->gate_ctrl = NULL;
|
||||||
videobuf_dvb_dealloc_frontends(&dev->frontends);
|
videobuf_dvb_dealloc_frontends(&dev->frontends);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -1270,6 +1314,8 @@ static int cx8802_dvb_remove(struct cx8802_driver *drv)
|
|||||||
|
|
||||||
vp3054_i2c_remove(dev);
|
vp3054_i2c_remove(dev);
|
||||||
|
|
||||||
|
core->gate_ctrl = NULL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,30 +116,16 @@ static int detach_inform(struct i2c_client *client)
|
|||||||
|
|
||||||
void cx88_call_i2c_clients(struct cx88_core *core, unsigned int cmd, void *arg)
|
void cx88_call_i2c_clients(struct cx88_core *core, unsigned int cmd, void *arg)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
|
|
||||||
struct videobuf_dvb_frontends *f = &core->dvbdev->frontends;
|
|
||||||
struct videobuf_dvb_frontend *fe = NULL;
|
|
||||||
#endif
|
|
||||||
if (0 != core->i2c_rc)
|
if (0 != core->i2c_rc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
|
if (core->gate_ctrl)
|
||||||
if (core->dvbdev && f) {
|
core->gate_ctrl(core, 1);
|
||||||
if(f->gate <= 1) /* undefined or fe0 */
|
|
||||||
fe = videobuf_dvb_get_frontend(f, 1);
|
|
||||||
else
|
|
||||||
fe = videobuf_dvb_get_frontend(f, f->gate);
|
|
||||||
|
|
||||||
if (fe && fe->dvb.frontend && fe->dvb.frontend->ops.i2c_gate_ctrl)
|
i2c_clients_command(&core->i2c_adap, cmd, arg);
|
||||||
fe->dvb.frontend->ops.i2c_gate_ctrl(fe->dvb.frontend, 1);
|
|
||||||
|
|
||||||
i2c_clients_command(&core->i2c_adap, cmd, arg);
|
if (core->gate_ctrl)
|
||||||
|
core->gate_ctrl(core, 0);
|
||||||
if (fe && fe->dvb.frontend && fe->dvb.frontend->ops.i2c_gate_ctrl)
|
|
||||||
fe->dvb.frontend->ops.i2c_gate_ctrl(fe->dvb.frontend, 0);
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
i2c_clients_command(&core->i2c_adap, cmd, arg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct i2c_algo_bit_data cx8800_i2c_algo_template = {
|
static const struct i2c_algo_bit_data cx8800_i2c_algo_template = {
|
||||||
|
@ -787,6 +787,9 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
|
|||||||
dev->pci = pci_dev;
|
dev->pci = pci_dev;
|
||||||
dev->core = core;
|
dev->core = core;
|
||||||
|
|
||||||
|
/* Maintain a reference so cx88-video can query the 8802 device. */
|
||||||
|
core->dvbdev = dev;
|
||||||
|
|
||||||
err = cx8802_init_common(dev);
|
err = cx8802_init_common(dev);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
goto fail_free;
|
goto fail_free;
|
||||||
@ -794,32 +797,6 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
|
|||||||
INIT_LIST_HEAD(&dev->drvlist);
|
INIT_LIST_HEAD(&dev->drvlist);
|
||||||
list_add_tail(&dev->devlist,&cx8802_devlist);
|
list_add_tail(&dev->devlist,&cx8802_devlist);
|
||||||
|
|
||||||
#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
|
|
||||||
mutex_init(&dev->frontends.lock);
|
|
||||||
INIT_LIST_HEAD(&dev->frontends.felist);
|
|
||||||
|
|
||||||
if (core->board.num_frontends) {
|
|
||||||
struct videobuf_dvb_frontend *fe;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,
|
|
||||||
core->board.num_frontends);
|
|
||||||
for (i = 1; i <= core->board.num_frontends; i++) {
|
|
||||||
fe = videobuf_dvb_alloc_frontend(&dev->frontends, i);
|
|
||||||
if(fe == NULL) {
|
|
||||||
printk(KERN_ERR "%s() failed to alloc\n",
|
|
||||||
__func__);
|
|
||||||
videobuf_dvb_dealloc_frontends(&dev->frontends);
|
|
||||||
err = -ENOMEM;
|
|
||||||
goto fail_free;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Maintain a reference so cx88-video can query the 8802 device. */
|
|
||||||
core->dvbdev = dev;
|
|
||||||
|
|
||||||
/* now autoload cx88-dvb or cx88-blackbird */
|
/* now autoload cx88-dvb or cx88-blackbird */
|
||||||
request_modules(dev);
|
request_modules(dev);
|
||||||
return 0;
|
return 0;
|
||||||
@ -827,6 +804,7 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
|
|||||||
fail_free:
|
fail_free:
|
||||||
kfree(dev);
|
kfree(dev);
|
||||||
fail_core:
|
fail_core:
|
||||||
|
core->dvbdev = NULL;
|
||||||
cx88_core_put(core,pci_dev);
|
cx88_core_put(core,pci_dev);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -302,6 +302,7 @@ struct cx88_dmaqueue {
|
|||||||
struct btcx_riscmem stopper;
|
struct btcx_riscmem stopper;
|
||||||
u32 count;
|
u32 count;
|
||||||
};
|
};
|
||||||
|
struct cx88_core;
|
||||||
|
|
||||||
struct cx88_core {
|
struct cx88_core {
|
||||||
struct list_head devlist;
|
struct list_head devlist;
|
||||||
@ -334,7 +335,8 @@ struct cx88_core {
|
|||||||
|
|
||||||
/* config info -- dvb */
|
/* config info -- dvb */
|
||||||
#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
|
#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
|
||||||
int (*prev_set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
|
int (*prev_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);
|
||||||
|
void (*gate_ctrl)(struct cx88_core *core, int open);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* state info */
|
/* state info */
|
||||||
|
@ -1842,7 +1842,7 @@ void em28xx_release_resources(struct em28xx *dev)
|
|||||||
* em28xx_init_dev()
|
* em28xx_init_dev()
|
||||||
* allocates and inits the device structs, registers i2c bus and v4l device
|
* allocates and inits the device structs, registers i2c bus and v4l device
|
||||||
*/
|
*/
|
||||||
int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||||
int minor)
|
int minor)
|
||||||
{
|
{
|
||||||
struct em28xx *dev = *devhandle;
|
struct em28xx *dev = *devhandle;
|
||||||
@ -1990,8 +1990,7 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
|||||||
int check_interface = 1;
|
int check_interface = 1;
|
||||||
isoc_pipe = 1;
|
isoc_pipe = 1;
|
||||||
endpoint = &interface->cur_altsetting->endpoint[1].desc;
|
endpoint = &interface->cur_altsetting->endpoint[1].desc;
|
||||||
if (usb_endpoint_type(endpoint) !=
|
if (!usb_endpoint_xfer_isoc(endpoint))
|
||||||
USB_ENDPOINT_XFER_ISOC)
|
|
||||||
check_interface = 0;
|
check_interface = 0;
|
||||||
|
|
||||||
if (usb_endpoint_dir_out(endpoint))
|
if (usb_endpoint_dir_out(endpoint))
|
||||||
|
@ -393,7 +393,7 @@ static int em28xx_set_audio_source(struct em28xx *dev)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct em28xx_vol_table outputs[] = {
|
static const struct em28xx_vol_table outputs[] = {
|
||||||
{ EM28XX_AOUT_MASTER, AC97_MASTER_VOL },
|
{ EM28XX_AOUT_MASTER, AC97_MASTER_VOL },
|
||||||
{ EM28XX_AOUT_LINE, AC97_LINE_LEVEL_VOL },
|
{ EM28XX_AOUT_LINE, AC97_LINE_LEVEL_VOL },
|
||||||
{ EM28XX_AOUT_MONO, AC97_MASTER_MONO_VOL },
|
{ EM28XX_AOUT_MONO, AC97_MASTER_MONO_VOL },
|
||||||
|
@ -307,7 +307,7 @@ static void em28xx_ir_work(struct work_struct *work)
|
|||||||
mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
|
mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
|
||||||
}
|
}
|
||||||
|
|
||||||
void em28xx_ir_start(struct em28xx_IR *ir)
|
static void em28xx_ir_start(struct em28xx_IR *ir)
|
||||||
{
|
{
|
||||||
setup_timer(&ir->timer, ir_timer, (unsigned long)ir);
|
setup_timer(&ir->timer, ir_timer, (unsigned long)ir);
|
||||||
INIT_WORK(&ir->work, em28xx_ir_work);
|
INIT_WORK(&ir->work, em28xx_ir_work);
|
||||||
|
@ -113,7 +113,7 @@ int s5k83a_power_down(struct sd *sd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void s5k83a_dump_registers(struct sd *sd)
|
static void s5k83a_dump_registers(struct sd *sd)
|
||||||
{
|
{
|
||||||
int address;
|
int address;
|
||||||
u8 page, old_page;
|
u8 page, old_page;
|
||||||
|
@ -34,12 +34,10 @@
|
|||||||
|
|
||||||
#include <linux/videodev2.h>
|
#include <linux/videodev2.h>
|
||||||
|
|
||||||
#include <asm/dma.h>
|
#include <mach/dma.h>
|
||||||
#include <mach/pxa-regs.h>
|
#include <mach/pxa-regs.h>
|
||||||
#include <mach/camera.h>
|
#include <mach/camera.h>
|
||||||
|
|
||||||
#include "pxa_camera.h"
|
|
||||||
|
|
||||||
#define PXA_CAM_VERSION_CODE KERNEL_VERSION(0, 0, 5)
|
#define PXA_CAM_VERSION_CODE KERNEL_VERSION(0, 0, 5)
|
||||||
#define PXA_CAM_DRV_NAME "pxa27x-camera"
|
#define PXA_CAM_DRV_NAME "pxa27x-camera"
|
||||||
|
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
/* Camera Interface */
|
|
||||||
#define CICR0 __REG(0x50000000)
|
|
||||||
#define CICR1 __REG(0x50000004)
|
|
||||||
#define CICR2 __REG(0x50000008)
|
|
||||||
#define CICR3 __REG(0x5000000C)
|
|
||||||
#define CICR4 __REG(0x50000010)
|
|
||||||
#define CISR __REG(0x50000014)
|
|
||||||
#define CIFR __REG(0x50000018)
|
|
||||||
#define CITOR __REG(0x5000001C)
|
|
||||||
#define CIBR0 __REG(0x50000028)
|
|
||||||
#define CIBR1 __REG(0x50000030)
|
|
||||||
#define CIBR2 __REG(0x50000038)
|
|
||||||
|
|
||||||
#define CICR0_DMAEN (1 << 31) /* DMA request enable */
|
|
||||||
#define CICR0_PAR_EN (1 << 30) /* Parity enable */
|
|
||||||
#define CICR0_SL_CAP_EN (1 << 29) /* Capture enable for slave mode */
|
|
||||||
#define CICR0_ENB (1 << 28) /* Camera interface enable */
|
|
||||||
#define CICR0_DIS (1 << 27) /* Camera interface disable */
|
|
||||||
#define CICR0_SIM (0x7 << 24) /* Sensor interface mode mask */
|
|
||||||
#define CICR0_TOM (1 << 9) /* Time-out mask */
|
|
||||||
#define CICR0_RDAVM (1 << 8) /* Receive-data-available mask */
|
|
||||||
#define CICR0_FEM (1 << 7) /* FIFO-empty mask */
|
|
||||||
#define CICR0_EOLM (1 << 6) /* End-of-line mask */
|
|
||||||
#define CICR0_PERRM (1 << 5) /* Parity-error mask */
|
|
||||||
#define CICR0_QDM (1 << 4) /* Quick-disable mask */
|
|
||||||
#define CICR0_CDM (1 << 3) /* Disable-done mask */
|
|
||||||
#define CICR0_SOFM (1 << 2) /* Start-of-frame mask */
|
|
||||||
#define CICR0_EOFM (1 << 1) /* End-of-frame mask */
|
|
||||||
#define CICR0_FOM (1 << 0) /* FIFO-overrun mask */
|
|
||||||
|
|
||||||
#define CICR1_TBIT (1 << 31) /* Transparency bit */
|
|
||||||
#define CICR1_RGBT_CONV (0x3 << 29) /* RGBT conversion mask */
|
|
||||||
#define CICR1_PPL (0x7ff << 15) /* Pixels per line mask */
|
|
||||||
#define CICR1_RGB_CONV (0x7 << 12) /* RGB conversion mask */
|
|
||||||
#define CICR1_RGB_F (1 << 11) /* RGB format */
|
|
||||||
#define CICR1_YCBCR_F (1 << 10) /* YCbCr format */
|
|
||||||
#define CICR1_RGB_BPP (0x7 << 7) /* RGB bis per pixel mask */
|
|
||||||
#define CICR1_RAW_BPP (0x3 << 5) /* Raw bis per pixel mask */
|
|
||||||
#define CICR1_COLOR_SP (0x3 << 3) /* Color space mask */
|
|
||||||
#define CICR1_DW (0x7 << 0) /* Data width mask */
|
|
||||||
|
|
||||||
#define CICR2_BLW (0xff << 24) /* Beginning-of-line pixel clock
|
|
||||||
wait count mask */
|
|
||||||
#define CICR2_ELW (0xff << 16) /* End-of-line pixel clock
|
|
||||||
wait count mask */
|
|
||||||
#define CICR2_HSW (0x3f << 10) /* Horizontal sync pulse width mask */
|
|
||||||
#define CICR2_BFPW (0x3f << 3) /* Beginning-of-frame pixel clock
|
|
||||||
wait count mask */
|
|
||||||
#define CICR2_FSW (0x7 << 0) /* Frame stabilization
|
|
||||||
wait count mask */
|
|
||||||
|
|
||||||
#define CICR3_BFW (0xff << 24) /* Beginning-of-frame line clock
|
|
||||||
wait count mask */
|
|
||||||
#define CICR3_EFW (0xff << 16) /* End-of-frame line clock
|
|
||||||
wait count mask */
|
|
||||||
#define CICR3_VSW (0x3f << 10) /* Vertical sync pulse width mask */
|
|
||||||
#define CICR3_BFPW (0x3f << 3) /* Beginning-of-frame pixel clock
|
|
||||||
wait count mask */
|
|
||||||
#define CICR3_LPF (0x7ff << 0) /* Lines per frame mask */
|
|
||||||
|
|
||||||
#define CICR4_MCLK_DLY (0x3 << 24) /* MCLK Data Capture Delay mask */
|
|
||||||
#define CICR4_PCLK_EN (1 << 23) /* Pixel clock enable */
|
|
||||||
#define CICR4_PCP (1 << 22) /* Pixel clock polarity */
|
|
||||||
#define CICR4_HSP (1 << 21) /* Horizontal sync polarity */
|
|
||||||
#define CICR4_VSP (1 << 20) /* Vertical sync polarity */
|
|
||||||
#define CICR4_MCLK_EN (1 << 19) /* MCLK enable */
|
|
||||||
#define CICR4_FR_RATE (0x7 << 8) /* Frame rate mask */
|
|
||||||
#define CICR4_DIV (0xff << 0) /* Clock divisor mask */
|
|
||||||
|
|
||||||
#define CISR_FTO (1 << 15) /* FIFO time-out */
|
|
||||||
#define CISR_RDAV_2 (1 << 14) /* Channel 2 receive data available */
|
|
||||||
#define CISR_RDAV_1 (1 << 13) /* Channel 1 receive data available */
|
|
||||||
#define CISR_RDAV_0 (1 << 12) /* Channel 0 receive data available */
|
|
||||||
#define CISR_FEMPTY_2 (1 << 11) /* Channel 2 FIFO empty */
|
|
||||||
#define CISR_FEMPTY_1 (1 << 10) /* Channel 1 FIFO empty */
|
|
||||||
#define CISR_FEMPTY_0 (1 << 9) /* Channel 0 FIFO empty */
|
|
||||||
#define CISR_EOL (1 << 8) /* End of line */
|
|
||||||
#define CISR_PAR_ERR (1 << 7) /* Parity error */
|
|
||||||
#define CISR_CQD (1 << 6) /* Camera interface quick disable */
|
|
||||||
#define CISR_CDD (1 << 5) /* Camera interface disable done */
|
|
||||||
#define CISR_SOF (1 << 4) /* Start of frame */
|
|
||||||
#define CISR_EOF (1 << 3) /* End of frame */
|
|
||||||
#define CISR_IFO_2 (1 << 2) /* FIFO overrun for Channel 2 */
|
|
||||||
#define CISR_IFO_1 (1 << 1) /* FIFO overrun for Channel 1 */
|
|
||||||
#define CISR_IFO_0 (1 << 0) /* FIFO overrun for Channel 0 */
|
|
||||||
|
|
||||||
#define CIFR_FLVL2 (0x7f << 23) /* FIFO 2 level mask */
|
|
||||||
#define CIFR_FLVL1 (0x7f << 16) /* FIFO 1 level mask */
|
|
||||||
#define CIFR_FLVL0 (0xff << 8) /* FIFO 0 level mask */
|
|
||||||
#define CIFR_THL_0 (0x3 << 4) /* Threshold Level for Channel 0 FIFO */
|
|
||||||
#define CIFR_RESET_F (1 << 3) /* Reset input FIFOs */
|
|
||||||
#define CIFR_FEN2 (1 << 2) /* FIFO enable for channel 2 */
|
|
||||||
#define CIFR_FEN1 (1 << 1) /* FIFO enable for channel 1 */
|
|
||||||
#define CIFR_FEN0 (1 << 0) /* FIFO enable for channel 0 */
|
|
||||||
|
|
@ -3779,7 +3779,7 @@ static int ibmcam_probe(struct usb_interface *intf, const struct usb_device_id *
|
|||||||
err("Alternate settings have different endpoint addresses!");
|
err("Alternate settings have different endpoint addresses!");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (usb_endpoint_type(endpoint) != USB_ENDPOINT_XFER_ISOC) {
|
if (!usb_endpoint_xfer_isoc(endpoint)) {
|
||||||
err("Interface %d. has non-ISO endpoint!", ifnum);
|
err("Interface %d. has non-ISO endpoint!", ifnum);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
@ -823,7 +823,7 @@ static int konicawc_probe(struct usb_interface *intf, const struct usb_device_id
|
|||||||
err("Alternate settings have different endpoint addresses!");
|
err("Alternate settings have different endpoint addresses!");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (usb_endpoint_type(endpoint) != USB_ENDPOINT_XFER_ISOC) {
|
if (!usb_endpoint_xfer_isoc(endpoint)) {
|
||||||
err("Interface %d. has non-ISO endpoint!",
|
err("Interface %d. has non-ISO endpoint!",
|
||||||
interface->desc.bInterfaceNumber);
|
interface->desc.bInterfaceNumber);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -556,7 +556,7 @@ static int ultracam_probe(struct usb_interface *intf, const struct usb_device_id
|
|||||||
err("Alternate settings have different endpoint addresses!");
|
err("Alternate settings have different endpoint addresses!");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (usb_endpoint_type(endpoint) != USB_ENDPOINT_XFER_ISOC) {
|
if (!usb_endpoint_xfer_isoc(endpoint)) {
|
||||||
err("Interface %d. has non-ISO endpoint!",
|
err("Interface %d. has non-ISO endpoint!",
|
||||||
interface->desc.bInterfaceNumber);
|
interface->desc.bInterfaceNumber);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -1674,8 +1674,7 @@ static int __devinit usbvision_probe(struct usb_interface *intf,
|
|||||||
interface = &dev->actconfig->interface[ifnum]->altsetting[0];
|
interface = &dev->actconfig->interface[ifnum]->altsetting[0];
|
||||||
}
|
}
|
||||||
endpoint = &interface->endpoint[1].desc;
|
endpoint = &interface->endpoint[1].desc;
|
||||||
if (usb_endpoint_type(endpoint) !=
|
if (!usb_endpoint_xfer_isoc(endpoint)) {
|
||||||
USB_ENDPOINT_XFER_ISOC) {
|
|
||||||
err("%s: interface %d. has non-ISO endpoint!",
|
err("%s: interface %d. has non-ISO endpoint!",
|
||||||
__func__, ifnum);
|
__func__, ifnum);
|
||||||
err("%s: Endpoint attributes %d",
|
err("%s: Endpoint attributes %d",
|
||||||
|
@ -29,7 +29,7 @@ int v4l2_device_register(struct device *dev, struct v4l2_device *v4l2_dev)
|
|||||||
if (dev == NULL || v4l2_dev == NULL)
|
if (dev == NULL || v4l2_dev == NULL)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
/* Warn if we apparently re-register a device */
|
/* Warn if we apparently re-register a device */
|
||||||
WARN_ON(dev_get_drvdata(dev));
|
WARN_ON(dev_get_drvdata(dev) != NULL);
|
||||||
INIT_LIST_HEAD(&v4l2_dev->subdevs);
|
INIT_LIST_HEAD(&v4l2_dev->subdevs);
|
||||||
spin_lock_init(&v4l2_dev->lock);
|
spin_lock_init(&v4l2_dev->lock);
|
||||||
v4l2_dev->dev = dev;
|
v4l2_dev->dev = dev;
|
||||||
@ -61,7 +61,7 @@ int v4l2_device_register_subdev(struct v4l2_device *dev, struct v4l2_subdev *sd)
|
|||||||
if (dev == NULL || sd == NULL || !sd->name[0])
|
if (dev == NULL || sd == NULL || !sd->name[0])
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
/* Warn if we apparently re-register a subdev */
|
/* Warn if we apparently re-register a subdev */
|
||||||
WARN_ON(sd->dev);
|
WARN_ON(sd->dev != NULL);
|
||||||
if (!try_module_get(sd->owner))
|
if (!try_module_get(sd->owner))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
sd->dev = dev;
|
sd->dev = dev;
|
||||||
|
@ -388,8 +388,7 @@ videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
|||||||
page = alloc_page(GFP_USER | __GFP_DMA32);
|
page = alloc_page(GFP_USER | __GFP_DMA32);
|
||||||
if (!page)
|
if (!page)
|
||||||
return VM_FAULT_OOM;
|
return VM_FAULT_OOM;
|
||||||
clear_user_page(page_address(page), (unsigned long)vmf->virtual_address,
|
clear_user_highpage(page, (unsigned long)vmf->virtual_address);
|
||||||
page);
|
|
||||||
vmf->page = page;
|
vmf->page = page;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1712,8 +1712,7 @@ static int go7007_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
|||||||
page = alloc_page(GFP_USER | __GFP_DMA32);
|
page = alloc_page(GFP_USER | __GFP_DMA32);
|
||||||
if (!page)
|
if (!page)
|
||||||
return VM_FAULT_OOM;
|
return VM_FAULT_OOM;
|
||||||
clear_user_page(page_address(page), (unsigned long)vmf->virtual_address,
|
clear_user_highpage(page, (unsigned long)vmf->virtual_address);
|
||||||
page);
|
|
||||||
vmf->page = page;
|
vmf->page = page;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user