Rather than duplicating this list everywhere, just put it in tvaudio.h.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The functions v4l2_i2c_new_subdev and v4l2_i2c_new_probed_subdev relied on
i2c_get_adapdata to return the v4l2_device. However, this is not always
possible on embedded platforms. So modify the API to pass the v4l2_device
pointer explicitly.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Since i2c autoprobing will disappear bttv needs to be converted to use
v4l2_subdev instead.
Without autoprobing the autoload module option has become obsolete. A warning
is generated if it is set, but it is otherwise ignored.
Since the bttv card definitions are of questionable value a new option was
introduced to allow the user to control which audio module is selected:
msp3400, tda7432 or tvaudio (or none at all).
By default bttv will use the card definitions and fallback on tvaudio as the
last resort.
If no audio device was found a warning is printed.
The saa6588 RDS device is now also explicitly probed since it is no longer
possible to autoprobe it. A new saa6588 module option was added to override
the card definition since I suspect more cards have this device than one
would guess from the card definitions.
Note that the probe addresses of the i2c modules are hardcoded in this
driver. Once all v4l drivers are converted to v4l2_subdev this will be
cleaned up. Such data belongs in an i2c driver header.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Add support for ProVideo PV-183 to bttv
This patch adds support for the ProVideo PV-183 card to the bttv
device driver. The PV-183 is a PCI card with 8 BT878 devices plus a Hint
Corp HiNT HB4 PCI-PCI Bridge. Each BT878 has two composite input channels
available. There are no tuners on this card.
Signed-off-by: Alan McIvor <alan.mcivor@reveal.co.nz>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
I have a GeoVision GV-800(S) card, it has 4 CONEXANT BT878A chips.
It has 16 video inputs and 4 audio inputs, and it is almost identical
to the GV-800, as seen on http://bttv-gallery.de .
The only difference appears to be the analog mux, it has a CD22M3494
in place of the MT8816AP. The card has a blue PCB, as seen in this
picture: http://www.gsbr.com.br/imagem/kits/GeoVision%20GV%20800.jpg .
This card wasn't originally supported, and it was detected as
UNKNOWN/GENERIC. The video inputs weren't working, so I tried
"forcing" a few cards like the GeoVision GV-600, but there was still
no video. So I made a patch to support this card, based on the Kodicom
4400r.
The GV-800(S) is identified as follows:
...
02:00.0 Multimedia video controller: Brooktree Corporation Bt878 Video
Capture (rev 11)
02:00.1 Multimedia controller: Brooktree Corporation Bt878 Audio
Capture (rev 11)
02:04.0 Multimedia video controller: Brooktree Corporation Bt878 Video
Capture (rev 11)
02:04.1 Multimedia controller: Brooktree Corporation Bt878 Audio
Capture (rev 11)
02:08.0 Multimedia video controller: Brooktree Corporation Bt878 Video
Capture (rev 11)
02:08.1 Multimedia controller: Brooktree Corporation Bt878 Audio
Capture (rev 11)
02:0c.0 Multimedia video controller: Brooktree Corporation Bt878 Video
Capture (rev 11)
02:0c.1 Multimedia controller: Brooktree Corporation Bt878 Audio
Capture (rev 11)
...
02:00.0 0400: 109e:036e (rev 11)
Subsystem: 800a:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdfff000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
Kernel modules: bttv
02:00.1 0480: 109e:0878 (rev 11)
Subsystem: 800a:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdffe000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
02:04.0 0400: 109e:036e (rev 11)
Subsystem: 800b:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdffd000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
Kernel modules: bttv
02:04.1 0480: 109e:0878 (rev 11)
Subsystem: 800b:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdffc000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
02:08.0 0400: 109e:036e (rev 11)
Subsystem: 800c:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdffb000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
Kernel modules: bttv
02:08.1 0480: 109e:0878 (rev 11)
Subsystem: 800c:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdffa000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
02:0c.0 0400: 109e:036e (rev 11)
Subsystem: 800d:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdff9000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
Kernel modules: bttv
02:0c.1 0480: 109e:0878 (rev 11)
Subsystem: 800d:763d
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at cdff8000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data <?>
Capabilities: [4c] Power Management version 2
As you can see, the GV-800(S) card is almost identical to the GV-800
on bttv-gallery, so this patch might also work for that card. If not,
only a few changes should be required on the gv800s_write() function.
After this patch, the video inputs work correctly on linux 2.6.24 and
2.6.27 using the software 'motion'. The input order may seem a little
odd, but it's the order the original software/driver uses, and I decided
to keep that order to get the most out of the card.
I tried to get the audio working with the snd-bt87x module, but I only
get noise from every audio input, even after selecting a different mux
with alsamixer. Also, after trying to play sound from those sources, I
randomly get a RISC error about an invalid RISC opcode, and then that
output stops working. I also can't change the sampling rate when
recording. Any pointers to adding audio support are welcome.
Signed-off-by: Bruno Christo <bchristo@inf.ufsm.br>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Over half of the card database was used to store muxsel data. 64 bytes
were used to store one 32 bit word for each of up to 16 inputs.
The Bt8x8 only has two bits to control its mux, so muxsel data for 16
inputs will fit into a single 32 bit word. There were a couple cards that
had special muxsel data that didn't fit in two bits, but I cleaned them up
in earlier patches.
Unfortunately, C doesn't allow us to have an array of bit fields. This
makes initializing the structure more of a pain. But with some cpp magic,
we can do it by changing:
.muxsel = { 2, 3, 0, 1 },
.muxsel = { 2, 2, 2, 2, 3, 3, 3, 3, 1, 1 },
Into:
.muxsel = MUXSEL(2, 3, 0, 1),
.muxsel = MUXSEL(2, 2, 2, 2, 3, 3, 3, 3, 1, 1),
That's not so bad. MUXSEL is a fancy macro that packs the arguments (of
which there can be one to sixteen!) into a single word two bits at a time.
It's a compile time constant (a variadic function wouldn't be) so we can
use it to initialize the structure. It's important the the arguments to
the macro only be plain decimal integers. Stuff like "0x01", "(2)", or
"MUX3" won't work properly.
I also created an accessor function, bttv_muxsel(btv, input), that gets the
mux bits for the selected input. It makes it cleaner to change the way the
muxsel data is stored.
This patch doesn't change the code size and decreases the datasegment by
9440 bytes.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This card apparently uses an external mux and the Bt878's mux should always
be set to MUX2. The values for the external mux control bits were stored
in the muxsel field. This meant that when changing inputs the driver would
switch the Bt878's mux to whatever value the external mux was supposed to
be set to, then eagle_muxsel() would switch it back to MUX2 and program the
external mux. This creates an unnecessary switch of the Bt878's mux.
So change muxsel to be 2 for each input. The external mux bits are just
"input&3" so they don't really need to be stored anywhere. This also
eliminates the last non-standard use of the muxsel data.
Cc: M G Berberich <berberic@fmi.uni-passau.de>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Old versions of the bttv driver would use the high nibble of an input's
muxsel value to program the GPIO lines enabled via gpiomask2. Apparently
this was supposed to be for switching external audio muxes. Anyway, the
code that did this was removed sometime in the pre-git 2.6 series.
The RemoteVision MX board used this feature to control an external video
mux and I guess no one noticed when they removed the code.
Move the extra gpio mux data out of the high nibble of muxsel and to
rv605_muxsel(), then have that function set the gpio lines with it.
From looking at the CD22M3494E datasheet, it seems like the mdelay(1) is a
much longer delay than necessary. It looks like only around 20 ns is
necessary.
Cc: Miguel Freitas <miguel@cetuc.puc-rio.br>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Old versions of the bttv driver would use the high nibble of an input's
muxsel value to program the GPIO lines enabled via gpiomask2. Apparently
this was supposed to be for switching external audio muxes. Anyway, the
code that did this was removed sometime in the pre-git 2.6 series.
These phytec boards used this feature to control an external video mux and
I guess no one noticed when they removed the code.
So add a muxsel_hook for these boards that does the necessary gpio setting.
BTW, I doubt the needs_tvaudio setting for these cards is correct.
Cc: Dirk Heer <d.heer@phytec.de>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The card data for BTTV_BOARD_IVC120 set muxsel to a bunch of bogus values
(1 to 16), which the common mux code would use to set the Bt878's mux to
some random value. Then the custom code in ivc120_muxsel() would change
the Bt878's mux to the right value (always MUX0).
Better to just make the muxsel data correct (all zeros, easy!) and get the
mux right to begin with. Then the extra Bt878 mux setting code in
ivc120_muxsel() can be eliminated (the rest of the code for the IVC-120G's
external mux is still there of course).
This will help me clean up muxsel for some other changes. It should also
get rid of an unnecessary mux switch when changing from certain inputs to
certain other inputs on the IVC-120G.
Cc: Alan Garfield <alan@fromorbit.com>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The code was using a muxsel value of -1U to indicate a digital input. A
couple places in were checking of muxsel < 0 to detect this, which doesn't
work of course because muxsel is unsigned and can't be negative.
Only a couple cards had digital inputs and it was always the last one, so
for the card database create a one bit field that indicates the last input
is digital. On init, this is used to set a new field in the bttv struct to
the digital input's number or UNSET for none. This makes it easier to
check if the current input is digital.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The bttv card database is quite large and the data structure used to store
it wasn't very efficient. Most of the field are only used at card
initialization time so it doesn't matter if they aren't efficient to
access.
Overall the changes reduce code size by 60 bytes in ia32. The data size is
decreased by 5024 byes. It is probably even more for 64-bit kernels.
Move the fields in the struct around to be sorted from largest to smallest.
This saves on padding space used for alignment.
Get rid of the unused digital_mode field. Leave the setting as a comment
in the few cards entries that set it, in case someone ever writes the code.
Get rid of the unused audio_inputs field. Leave the values in the card
entries in case someone ever writes code that might use it.
Get ride of the unused radio_addr field. No card entries even set it to
anything interesting so it's not left as comments. All the code that used
it was removed in commit v2.6.14-3466-g291d1d7 from Nov 8th 2005.
Reduce video_inputs to u8 as no card has more than 255 inputs (the most is
16).
Change tuner_addr to u8. I2C addresses are only seven bits and 255 means
ADDR_UNSET, so everything fits.
Make has_radio a one bit flag.
Make the pll setting a two bit field.
Reduce svhs to four bits as no card has an s-video input above 9. Change
the value for no s-video input from UNSET (which is -1U and out of range of
four bits) to NO_SVHS (which is now 15).
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The bttv card database structure had a "tuner" field that was the input
number of the tuner input or UNSET for no tuner. However, the only values
it could ever be are 0 and UNSET. Having a tuner on an input other than 0
didn't work and was never used.
There is also a "tuner_type" field that can be set to TUNER_ABSENT to
indicate no tuner, which makes "tuner = UNSET" redundant. In many cases,
tuner_type was set to UNSET when there was no tuner, which isn't quite
correct. tuner_type == UNSET is supposed to mean the tuner type isn't yet
known.
So, I changed cards where "tuner == UNSET" to always have tuner_type of
TUNER_ABSENT. At this point the tuner field is redundant, so I deleted it.
I have the card setup code set the card's tuner_type (not the card type's
tuner_type!) to TUNER_ABSENT if it hasn't yet been set at the end of the
setup code. Various places that check if the card has a tuner will now
look for this instead of checking the card type's "tuner" field.
Also autoload the tuner module before issuing the TUNER_SET_TYPE_ADDR I2C
client call instead of after issuing it.
Overall, on ia32 this decreases compiled code size by about 24 bytes and
reduces the data size by 640 bytes.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The code to set the norm for the TDA9880 analog demod was comparing
btv->norm, an index into the bttv driver's norm array, to V4L2_STD_NTSC,
which is a bit flag that's part of the V4L2 API. This doesn't work of
course and results in the PAL path always being taken.
What's more, it modified the bttv_tvcards[] entries for cards using the
TDA9880. This is wrong because changing the norm on one card will also
affect other cards of the same type. Writing to bttv_tvcards is also bad
because it should be read-only or even devinitdata.
Changing the norm would also cause the audio to become unmuted.
Have the code get called for both norm setting and audio input setting
(which where the gpios are set) to avoid needed to modify bttv_tvcards.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The norm value in the driver is an index into an array and the the driver
doesn't allow it to be negative or otherwise invalid. It should be
unsigned but wasn't in all places.
Fix some structs and functions to have the norm be unsigned. Get rid of
useless checks for "< 0". Most of the driver code can't handle a norm
value that's out of range, so change some ">= BTTV_TVNORMS" checks to
BUG_ON(). There's no point in silently ignoring invalid driver state just
to crash because of it later.
Reported-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
It's a quad Bt878 PCI-e x1 capture board that's basically the same as the
IVC-200 (quad Bt878 PCI) capture board that's currently supported in
the V4L2 bttv driver.
Manufacturer's web page for IVCE-8784 with photo and info:
http://www.iei.com.tw/en/product_IPC.asp?model=IVCE-8784
Signed-off-by: Douglas Kosovic <douglask@itee.uq.edu.au>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The bt832 i2c driver was never used or even compiled and is no longer
maintained. It is now removed completely.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This Patch does modify the bttv-cards.c and bttc.h so that the driver
supports VD-011, VD-012, VD-012-X1 and VD-012-X2 Framegrabber from
Phytec Messtechnik GmbH.
Signed-off-by: Dirk Heer <d.heer@phytec.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Thanks to Sistema Fenix (http://www.sistemafenix.com.br/) and CDI Brasil
(www.cdibrasil.com.br/) for sponsoring this development.
Signed-off-by: Gilberto <gilberto@sistemafenix.com.br>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
b2c2-flexcop, dvb/bt8xx and video/bt8xx fails to build on ARM with:
__bad_udelay is specifically designed on ARM to fail when udelay is
called in a bad way. arch/arm/include/asm/delay.h has this to say
about __bad_udelay:
/*
* This function intentionally does not exist; if you see references to
* it, it means that you're calling udelay() with an out of range value.
*
* With currently imposed limits, this means that we support a max delay
* of 2000us. Further limits: HZ<=1000 and bogomips<=3355
*/
extern void __bad_udelay(void);
Solution is to replace udelay by a mdelay and udelay with value less than 2000
Signed-off-by: Thierry MERLE <thierry.merle@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Fixed a lot of sparse warnings: mostly warnings about shadowed variables
and signed/unsigned mismatches.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
TUNER_PHILIPS_ATSC is an ambiguous name for a tuner. Rename it to
TUNER_PHILIPS_FCV1236D to be more descriptive.
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
I have what looks like a Geovision GV-600 (or 650) card. It has a large
chip in the middle labeled
CONEXANT
FUSION 878A
25878-13
E345881.1
0312 TAIWAN
It has an audio connector coming out from a chip labeled
ATMEL
0242
AT89C2051-24PI
It is identified as follows on my Debian GNU/Linux Etch (kernel 2.6.18)
...
01:0a.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
01:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
...
01:0a.0 0400: 109e:036e (rev 11)
Subsystem: 008a:763c
Flags: bus master, medium devsel, latency 64, IRQ 58
Memory at dfffe000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data
Capabilities: [4c] Power Management version 2
01:0a.1 0480: 109e:0878 (rev 11)
Subsystem: 008a:763c
Flags: bus master, medium devsel, latency 64, IRQ 58
Memory at dffff000 (32-bit, prefetchable) [size=4K]
Capabilities: [44] Vital Product Data
Capabilities: [4c] Power Management version 2
It was being detected as a GENERIC UNKNOWN CARD both by the 2.6.18
kernel and the latest v4l-dvb drivers, but it did not work at all. The
card has sixteen (16) BNC video inputs, four of them on the board itself
and twelve on three daughter-cards. It has a single bt878 chip, no tuner
and what looks like and audio input. After doing some research I managed
to get only eight channels working by forcing card=125 and those DID NOT
match channels 0-7 on the card, and no audio.
Based on what was working for card=125, I added the card definition
block, added a specific muxsel routine and got the card working fully
with xawtv, where the sixteen channels show up as Composite0 to
Composite15, matching the channel labels in the card and daughter-cards.
I have made no efforts yet to get audio working, but would appreciate
any pointers.
Signed-off-by: Ernesto Hernández-Novich <emhn@usb.ve>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
The PixelView PlayTV card definition structure was missing initialization of
the tuner_addr and radio_addr fields. As a result it was impossible to have the
tuner initialized using parameters specified while loading the bttv.ko module.
This regression became visible after the v4l rearrangements introduced
somewhere around 2.6.15 kernel version.
The root cause for the tuner initialization failure is located in the
attach_inform function in the bttv-i2c.c file.
There at the very beginning the addr variable holding the tuner device address
is initialized with the value taken from the bttv_tvcards array.
For the PixelView PlayTV card the tuner address field (and the radio address as
well) was uninitialized, and thus equal 0. Later in that function execution of
the TUNER_SET_TYPE_ADDR tuner command is guarded with check for the tuner
address either equal ADDR_UNSET, or client->addr.
Since both are non-zero (the latter in case of the card owned by me at the
runtime is equal 0x61) the TUNER_SET_TYPE_ADDR command is not executed, and
consequently in the tuner_attach function in the tuner-core.c file call to
i2c_attach_client does not result in assigning the tuner type variable with the
requested value.
Providing initialization of the tuner_addr and radio_addr with ADDR_UNSET
values as it is already done for other tv cards defined in bttv-cards.c ensures
that the tuner initialization is done correctly, just as it used to be in the
2.6.14 kernel.
Signed-off-by: Wojciech Migda <wojtek.golf@interia.pl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This is part of the old V4L1->V4L2 bttv patch, ported to current tree
by Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Nickolay V. Shmyrev <nshmyrev@yandex.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Currently, the only tuner-specific device that allows special
configurations is tda9887. However, tea5767 also may require some
special configurations (for example, to specify a different Xtal freq).
This patch replaces TDA9887_SET_CONFIG by a more generic internal ioctl
(TUNER_SET_CONFIG). The newer one allows specifying what tuner is
appliable to a configuration set, and allows an arbitrary configuration
struct.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
* Convert files to UTF-8.
* Also correct some people's names
(one example is Eißfeldt, which was found in a source file.
Given that the author used an ß at all in a source file
indicates that the real name has in fact a 'ß' and not an 'ss',
which is commonly used as a substitute for 'ß' when limited to
7bit.)
* Correct town names (Goettingen -> Göttingen)
* Update Eberhard Mönkeberg's address (http://lkml.org/lkml/2007/1/8/313)
Signed-off-by: Jan Engelhardt <jengelh@gmx.de>
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Fix the various misspellings of "system", controller", "interrupt" and
"[un]necessary".
Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Adds an entry for the Typhoon Tv-Tuner PCI to bttv-cards.c
Signed-off-by: Sascha Sommer <saschasommer@freenet.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
There were many instances of 7-space indents spread throughout
the v4l-dvb tree.
This patch replaces the 7-space indents with tabs. The whitespace cleaner
script doesn't catch these, because it assumes that all indents are 8-space.
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Since at least kernel 2.6.12-rc2, module.h includes moduleparm.h. This
patch removes all occurences of moduleparm.h from drivers/media files.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Various gpio and mux settings for the Osprey 440 weren't correct. Fix them
and provide some documentation about how the gpios work.
The osprey eeprom routine wasn't run for the 440, add it. It was also crap,
re-written to be better.
Add the Osprey 440 to the Bt878 ALSA driver's whitelist. Currently the sample
rate is fixed at 32kHz, as the driver doesn't support different rates for
digital input mode, though the card can select the rate from 32, 44.1, or 48
kHz via gpio.
Setting the audio gain via ALSA isn't supported yet; a userspace tool that
programs the X9221 via i2c-dev must be used.
The Bt878 digital audio format isn't programmed correctly for the CS5331A ADC
used, resulting in extremely garbled sound. That is fixed in a followup
patch.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
The bttv driver has code to detect if a tda9887 is present, that was previous
used to auto-load the tda9887 driver. Now there is no tda9887 driver, so the
code is pointless; it just figures out if it should load the driver and then
does nothing.
For cards that are defined as having no tuner, the init code would still do
i2c probes for various tuner devices and auto-load the tuner module. That can
be skipped for cards that don't need it. The code is made to understand that
in addition to 'UNSET', 'TUNER_ABSENT' also means no tuner.
The tuner into printk()s are also made nicer. Levels are added, INFO or
WARNING, depending on the meaning. For cards with no tuner, or no tuner
defined, a more informative message is printed.
Card has no tuner, before patch:
bttv0: tuner type=-1
or
bttv0: tuner type=4
After patch:
bttv0: tuner absent
Card has a tuner, but the type isn't defined, before patch:
bttv0: tuner type=-1
After patch:
bttv0: tuner type unset [<- also warning now, as the tuner won't work right]
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
add analog video support for DViCO FusionHDTV 2
Thanks to Todd Ignasiak for donating the card.
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
SSAI (www.ssai.us) makes several Bt878-based capture cards that get used in our
surveillance, conferencing, and medical imaging systems. The attached
relatively small patch adds support for these cards, which fall into two broad
* boards with one or more Bt878s, one or more composite inputs, and no S-video
or tuner inputs
* boards with one Bt878, one composite input, one S-video input, and no tuner
input
Signed-off-by: Scott Alfter <salfter@ssai.us>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>