You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
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: (313 commits) V4L/DVB (9186): Added support for Prof 7300 DVB-S/S2 cards V4L/DVB (9185): S2API: Ensure we have a reasonable ROLLOFF default V4L/DVB (9184): cx24116: Change the default SNR units back to percentage by default. V4L/DVB (9183): S2API: Return error of the caller provides 0 commands. V4L/DVB (9182): S2API: Added support for DTV_HIERARCHY V4L/DVB (9181): S2API: Add support fot DTV_GUARD_INTERVAL and DTV_TRANSMISSION_MODE V4L/DVB (9180): S2API: Added support for DTV_CODE_RATE_HP/LP V4L/DVB (9179): S2API: frontend.h cleanup V4L/DVB (9178): cx24116: Add module parameter to return SNR as ESNO. V4L/DVB (9177): S2API: Change _8PSK / _16APSK to PSK_8 and APSK_16 V4L/DVB (9176): Add support for DvbWorld USB cards with STV0288 demodulator. V4L/DVB (9175): Remove NULL pointer in stb6000 driver. V4L/DVB (9174): Allow custom inittab for ST STV0288 demodulator. V4L/DVB (9173): S2API: Remove the hardcoded command limit during validation V4L/DVB (9172): S2API: Bugfix related to DVB-S / DVB-S2 tuning for the legacy API. V4L/DVB (9171): S2API: Stop an OOPS if illegal commands are dumped in S2API. V4L/DVB (9170): cx24116: Sanity checking to data input via S2API to the cx24116 demod. V4L/DVB (9169): uvcvideo: Support two new Bison Electronics webcams. V4L/DVB (9168): Add support for MSI TV@nywhere Plus remote V4L/DVB: v4l2-dev: remove duplicated #include ...
This commit is contained in:
@@ -150,3 +150,4 @@
|
||||
149 -> Typhoon TV-Tuner PCI (50684)
|
||||
150 -> Geovision GV-600 [008a:763c]
|
||||
151 -> Kozumi KTV-01C
|
||||
152 -> Encore ENL TV-FM-2 [1000:1801]
|
||||
|
||||
@@ -9,3 +9,5 @@
|
||||
8 -> Hauppauge WinTV-HVR1700 [0070:8101]
|
||||
9 -> Hauppauge WinTV-HVR1400 [0070:8010]
|
||||
10 -> DViCO FusionHDTV7 Dual Express [18ac:d618]
|
||||
11 -> DViCO FusionHDTV DVB-T Dual Express [18ac:db78]
|
||||
12 -> Leadtek Winfast PxDVR3200 H [107d:6681]
|
||||
|
||||
@@ -66,3 +66,11 @@
|
||||
65 -> DViCO FusionHDTV 7 Gold [18ac:d610]
|
||||
66 -> Prolink Pixelview MPEG 8000GT [1554:4935]
|
||||
67 -> Kworld PlusTV HD PCI 120 (ATSC 120) [17de:08c1]
|
||||
68 -> Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [0070:6900,0070:6904,0070:6902]
|
||||
69 -> Hauppauge WinTV-HVR4000(Lite) DVB-S/S2 [0070:6905,0070:6906]
|
||||
70 -> TeVii S460 DVB-S/S2 [d460:9022]
|
||||
71 -> Omicom SS4 DVB-S/S2 PCI [A044:2011]
|
||||
72 -> TBS 8920 DVB-S/S2 [8920:8888]
|
||||
73 -> TeVii S420 DVB-S [d420:9022]
|
||||
74 -> Prolink Pixelview Global Extreme [1554:4976]
|
||||
75 -> PROF 7300 DVB-S/S2 [B033:3033]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800]
|
||||
1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
|
||||
1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2820,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
|
||||
2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036]
|
||||
3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208]
|
||||
4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201]
|
||||
@@ -12,7 +12,7 @@
|
||||
11 -> Terratec Hybrid XS (em2880) [0ccd:0042]
|
||||
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
|
||||
13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
|
||||
14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840)
|
||||
14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840) [eb1a:2821]
|
||||
15 -> V-Gear PocketTV (em2800)
|
||||
16 -> Hauppauge WinTV HVR 950 (em2883) [2040:6513,2040:6517,2040:651b,2040:651f]
|
||||
17 -> Pinnacle PCTV HD Pro Stick (em2880) [2304:0227]
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
75 -> AVerMedia AVerTVHD MCE A180 [1461:1044]
|
||||
76 -> SKNet MonsterTV Mobile [1131:4ee9]
|
||||
77 -> Pinnacle PCTV 40i/50i/110i (saa7133) [11bd:002e]
|
||||
78 -> ASUSTeK P7131 Dual [1043:4862,1043:4857]
|
||||
78 -> ASUSTeK P7131 Dual [1043:4862]
|
||||
79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
|
||||
80 -> ASUS Digimatrix TV [1043:0210]
|
||||
81 -> Philips Tiger reference design [1131:2018]
|
||||
@@ -145,3 +145,9 @@
|
||||
144 -> Beholder BeholdTV M6 Extra [5ace:6193]
|
||||
145 -> AVerMedia MiniPCI DVB-T Hybrid M103 [1461:f636]
|
||||
146 -> ASUSTeK P7131 Analog
|
||||
147 -> Asus Tiger 3in1 [1043:4878]
|
||||
148 -> Encore ENLTV-FM v5.3 [1a7f:2008]
|
||||
149 -> Avermedia PCI pure analog (M135A) [1461:f11d]
|
||||
150 -> Zogis Real Angel 220
|
||||
151 -> ADS Tech Instant HDTV [1421:0380]
|
||||
152 -> Asus Tiger Rev:1.00 [1043:4857]
|
||||
|
||||
@@ -74,3 +74,4 @@ tuner=72 - Thomson FE6600
|
||||
tuner=73 - Samsung TCPG 6121P30A
|
||||
tuner=75 - Philips TEA5761 FM Radio
|
||||
tuner=76 - Xceive 5000 tuner
|
||||
tuner=77 - TCL tuner MF02GIP-5N-E
|
||||
|
||||
@@ -7,6 +7,7 @@ The modules are:
|
||||
xxxx vend:prod
|
||||
----
|
||||
spca501 0000:0000 MystFromOri Unknow Camera
|
||||
m5602 0402:5602 ALi Video Camera Controller
|
||||
spca501 040a:0002 Kodak DVC-325
|
||||
spca500 040a:0300 Kodak EZ200
|
||||
zc3xx 041e:041e Creative WebCam Live!
|
||||
@@ -42,6 +43,7 @@ zc3xx 0458:7007 Genius VideoCam V2
|
||||
zc3xx 0458:700c Genius VideoCam V3
|
||||
zc3xx 0458:700f Genius VideoCam Web V2
|
||||
sonixj 0458:7025 Genius Eye 311Q
|
||||
sonixj 0458:702e Genius Slim 310 NB
|
||||
sonixj 045e:00f5 MicroSoft VX3000
|
||||
sonixj 045e:00f7 MicroSoft VX1000
|
||||
ov519 045e:028c Micro$oft xbox cam
|
||||
@@ -81,7 +83,7 @@ spca561 046d:092b Labtec Webcam Plus
|
||||
spca561 046d:092c Logitech QC chat Elch2
|
||||
spca561 046d:092d Logitech QC Elch2
|
||||
spca561 046d:092e Logitech QC Elch2
|
||||
spca561 046d:092f Logitech QC Elch2
|
||||
spca561 046d:092f Logitech QuickCam Express Plus
|
||||
sunplus 046d:0960 Logitech ClickSmart 420
|
||||
sunplus 0471:0322 Philips DMVC1300K
|
||||
zc3xx 0471:0325 Philips SPC 200 NC
|
||||
@@ -96,6 +98,29 @@ sunplus 04a5:3003 Benq DC 1300
|
||||
sunplus 04a5:3008 Benq DC 1500
|
||||
sunplus 04a5:300a Benq DC 3410
|
||||
spca500 04a5:300c Benq DC 1016
|
||||
finepix 04cb:0104 Fujifilm FinePix 4800
|
||||
finepix 04cb:0109 Fujifilm FinePix A202
|
||||
finepix 04cb:010b Fujifilm FinePix A203
|
||||
finepix 04cb:010f Fujifilm FinePix A204
|
||||
finepix 04cb:0111 Fujifilm FinePix A205
|
||||
finepix 04cb:0113 Fujifilm FinePix A210
|
||||
finepix 04cb:0115 Fujifilm FinePix A303
|
||||
finepix 04cb:0117 Fujifilm FinePix A310
|
||||
finepix 04cb:0119 Fujifilm FinePix F401
|
||||
finepix 04cb:011b Fujifilm FinePix F402
|
||||
finepix 04cb:011d Fujifilm FinePix F410
|
||||
finepix 04cb:0121 Fujifilm FinePix F601
|
||||
finepix 04cb:0123 Fujifilm FinePix F700
|
||||
finepix 04cb:0125 Fujifilm FinePix M603
|
||||
finepix 04cb:0127 Fujifilm FinePix S300
|
||||
finepix 04cb:0129 Fujifilm FinePix S304
|
||||
finepix 04cb:012b Fujifilm FinePix S500
|
||||
finepix 04cb:012d Fujifilm FinePix S602
|
||||
finepix 04cb:012f Fujifilm FinePix S700
|
||||
finepix 04cb:0131 Fujifilm FinePix unknown model
|
||||
finepix 04cb:013b Fujifilm FinePix unknown model
|
||||
finepix 04cb:013d Fujifilm FinePix unknown model
|
||||
finepix 04cb:013f Fujifilm FinePix F420
|
||||
sunplus 04f1:1001 JVC GC A50
|
||||
spca561 04fc:0561 Flexcam 100
|
||||
sunplus 04fc:500c Sunplus CA500C
|
||||
@@ -181,6 +206,7 @@ pac207 093a:2468 PAC207
|
||||
pac207 093a:2470 Genius GF112
|
||||
pac207 093a:2471 Genius VideoCam ge111
|
||||
pac207 093a:2472 Genius VideoCam ge110
|
||||
pac207 093a:2476 Genius e-Messenger 112
|
||||
pac7311 093a:2600 PAC7311 Typhoon
|
||||
pac7311 093a:2601 Philips SPC 610 NC
|
||||
pac7311 093a:2603 PAC7312
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
This document describes the ALi m5602 bridge connected
|
||||
to the following supported sensors:
|
||||
OmniVision OV9650,
|
||||
Samsung s5k83a,
|
||||
Samsung s5k4aa,
|
||||
Micron mt9m111,
|
||||
Pixel plus PO1030
|
||||
|
||||
This driver mimics the windows drivers, which have a braindead implementation sending bayer-encoded frames at VGA resolution.
|
||||
In a perfect world we should be able to reprogram the m5602 and the connected sensor in hardware instead, supporting a range of resolutions and pixelformats
|
||||
|
||||
Anyway, have fun and please report any bugs to m560x-driver-devel@lists.sourceforge.net
|
||||
@@ -0,0 +1,120 @@
|
||||
Soc-Camera Subsystem
|
||||
====================
|
||||
|
||||
Terminology
|
||||
-----------
|
||||
|
||||
The following terms are used in this document:
|
||||
- camera / camera device / camera sensor - a video-camera sensor chip, capable
|
||||
of connecting to a variety of systems and interfaces, typically uses i2c for
|
||||
control and configuration, and a parallel or a serial bus for data.
|
||||
- camera host - an interface, to which a camera is connected. Typically a
|
||||
specialised interface, present on many SoCs, e.g., PXA27x and PXA3xx, SuperH,
|
||||
AVR32, i.MX27, i.MX31.
|
||||
- camera host bus - a connection between a camera host and a camera. Can be
|
||||
parallel or serial, consists of data and control lines, e.g., clock, vertical
|
||||
and horizontal synchronization signals.
|
||||
|
||||
Purpose of the soc-camera subsystem
|
||||
-----------------------------------
|
||||
|
||||
The soc-camera subsystem provides a unified API between camera host drivers and
|
||||
camera sensor drivers. It implements a V4L2 interface to the user, currently
|
||||
only the mmap method is supported.
|
||||
|
||||
This subsystem has been written to connect drivers for System-on-Chip (SoC)
|
||||
video capture interfaces with drivers for CMOS camera sensor chips to enable
|
||||
the reuse of sensor drivers with various hosts. The subsystem has been designed
|
||||
to support multiple camera host interfaces and multiple cameras per interface,
|
||||
although most applications have only one camera sensor.
|
||||
|
||||
Existing drivers
|
||||
----------------
|
||||
|
||||
As of 2.6.27-rc4 there are two host drivers in the mainline: pxa_camera.c for
|
||||
PXA27x SoCs and sh_mobile_ceu_camera.c for SuperH SoCs, and four sensor drivers:
|
||||
mt9m001.c, mt9m111.c, mt9v022.c and a generic soc_camera_platform.c driver. This
|
||||
list is not supposed to be updated, look for more examples in your tree.
|
||||
|
||||
Camera host API
|
||||
---------------
|
||||
|
||||
A host camera driver is registered using the
|
||||
|
||||
soc_camera_host_register(struct soc_camera_host *);
|
||||
|
||||
function. The host object can be initialized as follows:
|
||||
|
||||
static struct soc_camera_host pxa_soc_camera_host = {
|
||||
.drv_name = PXA_CAM_DRV_NAME,
|
||||
.ops = &pxa_soc_camera_host_ops,
|
||||
};
|
||||
|
||||
All camera host methods are passed in a struct soc_camera_host_ops:
|
||||
|
||||
static struct soc_camera_host_ops pxa_soc_camera_host_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.add = pxa_camera_add_device,
|
||||
.remove = pxa_camera_remove_device,
|
||||
.suspend = pxa_camera_suspend,
|
||||
.resume = pxa_camera_resume,
|
||||
.set_fmt_cap = pxa_camera_set_fmt_cap,
|
||||
.try_fmt_cap = pxa_camera_try_fmt_cap,
|
||||
.init_videobuf = pxa_camera_init_videobuf,
|
||||
.reqbufs = pxa_camera_reqbufs,
|
||||
.poll = pxa_camera_poll,
|
||||
.querycap = pxa_camera_querycap,
|
||||
.try_bus_param = pxa_camera_try_bus_param,
|
||||
.set_bus_param = pxa_camera_set_bus_param,
|
||||
};
|
||||
|
||||
.add and .remove methods are called when a sensor is attached to or detached
|
||||
from the host, apart from performing host-internal tasks they shall also call
|
||||
sensor driver's .init and .release methods respectively. .suspend and .resume
|
||||
methods implement host's power-management functionality and its their
|
||||
responsibility to call respective sensor's methods. .try_bus_param and
|
||||
.set_bus_param are used to negotiate physical connection parameters between the
|
||||
host and the sensor. .init_videobuf is called by soc-camera core when a
|
||||
video-device is opened, further video-buffer management is implemented completely
|
||||
by the specific camera host driver. The rest of the methods are called from
|
||||
respective V4L2 operations.
|
||||
|
||||
Camera API
|
||||
----------
|
||||
|
||||
Sensor drivers can use struct soc_camera_link, typically provided by the
|
||||
platform, and used to specify to which camera host bus the sensor is connected,
|
||||
and arbitrarily provide platform .power and .reset methods for the camera.
|
||||
soc_camera_device_register() and soc_camera_device_unregister() functions are
|
||||
used to add a sensor driver to or remove one from the system. The registration
|
||||
function takes a pointer to struct soc_camera_device as the only parameter.
|
||||
This struct can be initialized as follows:
|
||||
|
||||
/* link to driver operations */
|
||||
icd->ops = &mt9m001_ops;
|
||||
/* link to the underlying physical (e.g., i2c) device */
|
||||
icd->control = &client->dev;
|
||||
/* window geometry */
|
||||
icd->x_min = 20;
|
||||
icd->y_min = 12;
|
||||
icd->x_current = 20;
|
||||
icd->y_current = 12;
|
||||
icd->width_min = 48;
|
||||
icd->width_max = 1280;
|
||||
icd->height_min = 32;
|
||||
icd->height_max = 1024;
|
||||
icd->y_skip_top = 1;
|
||||
/* camera bus ID, typically obtained from platform data */
|
||||
icd->iface = icl->bus_id;
|
||||
|
||||
struct soc_camera_ops provides .probe and .remove methods, which are called by
|
||||
the soc-camera core, when a camera is matched against or removed from a camera
|
||||
host bus, .init, .release, .suspend, and .resume are called from the camera host
|
||||
driver as discussed above. Other members of this struct provide respective V4L2
|
||||
functionality.
|
||||
|
||||
struct soc_camera_device also links to an array of struct soc_camera_data_format,
|
||||
listing pixel formats, supported by the camera.
|
||||
|
||||
--
|
||||
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
||||
@@ -36,8 +36,6 @@
|
||||
|
||||
struct pxacamera_platform_data {
|
||||
int (*init)(struct device *);
|
||||
int (*power)(struct device *, int);
|
||||
int (*reset)(struct device *, int);
|
||||
|
||||
unsigned long flags;
|
||||
unsigned long mclk_10khz;
|
||||
|
||||
@@ -103,6 +103,56 @@ IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
|
||||
|
||||
EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt);
|
||||
|
||||
/* Mauro Carvalho Chehab <mchehab@infradead.org> */
|
||||
IR_KEYTAB_TYPE ir_codes_avermedia_m135a[IR_KEYTAB_SIZE] = {
|
||||
[0x00] = KEY_POWER2,
|
||||
[0x2e] = KEY_DOT, /* '.' */
|
||||
[0x01] = KEY_MODE, /* TV/FM */
|
||||
|
||||
[0x05] = KEY_1,
|
||||
[0x06] = KEY_2,
|
||||
[0x07] = KEY_3,
|
||||
[0x09] = KEY_4,
|
||||
[0x0a] = KEY_5,
|
||||
[0x0b] = KEY_6,
|
||||
[0x0d] = KEY_7,
|
||||
[0x0e] = KEY_8,
|
||||
[0x0f] = KEY_9,
|
||||
[0x11] = KEY_0,
|
||||
|
||||
[0x13] = KEY_RIGHT, /* -> */
|
||||
[0x12] = KEY_LEFT, /* <- */
|
||||
|
||||
[0x17] = KEY_SLEEP, /* Capturar Imagem */
|
||||
[0x10] = KEY_SHUFFLE, /* Amostra */
|
||||
|
||||
/* FIXME: The keys bellow aren't ok */
|
||||
|
||||
[0x43] = KEY_CHANNELUP,
|
||||
[0x42] = KEY_CHANNELDOWN,
|
||||
[0x1f] = KEY_VOLUMEUP,
|
||||
[0x1e] = KEY_VOLUMEDOWN,
|
||||
[0x0c] = KEY_ENTER,
|
||||
|
||||
[0x14] = KEY_MUTE,
|
||||
[0x08] = KEY_AUDIO,
|
||||
|
||||
[0x03] = KEY_TEXT,
|
||||
[0x04] = KEY_EPG,
|
||||
[0x2b] = KEY_TV2, /* TV2 */
|
||||
|
||||
[0x1d] = KEY_RED,
|
||||
[0x1c] = KEY_YELLOW,
|
||||
[0x41] = KEY_GREEN,
|
||||
[0x40] = KEY_BLUE,
|
||||
|
||||
[0x1a] = KEY_PLAYPAUSE,
|
||||
[0x19] = KEY_RECORD,
|
||||
[0x18] = KEY_PLAY,
|
||||
[0x1b] = KEY_STOP,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ir_codes_avermedia_m135a);
|
||||
|
||||
/* Attila Kondoros <attila.kondoros@chello.hu> */
|
||||
IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
|
||||
|
||||
@@ -467,7 +517,8 @@ EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci);
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/* MSI TV@nywhere remote */
|
||||
/* MSI TV@nywhere MASTER remote */
|
||||
|
||||
IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = {
|
||||
/* Keys 0 to 9 */
|
||||
[ 0x00 ] = KEY_0,
|
||||
@@ -501,6 +552,95 @@ EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere);
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
Keycodes for remote on the MSI TV@nywhere Plus. The controller IC on the card
|
||||
is marked "KS003". The controller is I2C at address 0x30, but does not seem
|
||||
to respond to probes until a read is performed from a valid device.
|
||||
I don't know why...
|
||||
|
||||
Note: This remote may be of similar or identical design to the
|
||||
Pixelview remote (?). The raw codes and duplicate button codes
|
||||
appear to be the same.
|
||||
|
||||
Henry Wong <henry@stuffedcow.net>
|
||||
Some changes to formatting and keycodes by Mark Schultz <n9xmj@yahoo.com>
|
||||
|
||||
*/
|
||||
|
||||
IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE] = {
|
||||
|
||||
/* ---- Remote Button Layout ----
|
||||
|
||||
POWER SOURCE SCAN MUTE
|
||||
TV/FM 1 2 3
|
||||
|> 4 5 6
|
||||
<| 7 8 9
|
||||
^^UP 0 + RECALL
|
||||
vvDN RECORD STOP PLAY
|
||||
|
||||
MINIMIZE ZOOM
|
||||
|
||||
CH+
|
||||
VOL- VOL+
|
||||
CH-
|
||||
|
||||
SNAPSHOT MTS
|
||||
|
||||
<< FUNC >> RESET
|
||||
*/
|
||||
|
||||
[0x01] = KEY_KP1, /* 1 */
|
||||
[0x0b] = KEY_KP2, /* 2 */
|
||||
[0x1b] = KEY_KP3, /* 3 */
|
||||
[0x05] = KEY_KP4, /* 4 */
|
||||
[0x09] = KEY_KP5, /* 5 */
|
||||
[0x15] = KEY_KP6, /* 6 */
|
||||
[0x06] = KEY_KP7, /* 7 */
|
||||
[0x0a] = KEY_KP8, /* 8 */
|
||||
[0x12] = KEY_KP9, /* 9 */
|
||||
[0x02] = KEY_KP0, /* 0 */
|
||||
[0x10] = KEY_KPPLUS, /* + */
|
||||
[0x13] = KEY_AGAIN, /* Recall */
|
||||
|
||||
[0x1e] = KEY_POWER, /* Power */
|
||||
[0x07] = KEY_TUNER, /* Source */
|
||||
[0x1c] = KEY_SEARCH, /* Scan */
|
||||
[0x18] = KEY_MUTE, /* Mute */
|
||||
|
||||
[0x03] = KEY_RADIO, /* TV/FM */
|
||||
/* The next four keys are duplicates that appear to send the
|
||||
same IR code as Ch+, Ch-, >>, and << . The raw code assigned
|
||||
to them is the actual code + 0x20 - they will never be
|
||||
detected as such unless some way is discovered to distinguish
|
||||
these buttons from those that have the same code. */
|
||||
[0x3f] = KEY_RIGHT, /* |> and Ch+ */
|
||||
[0x37] = KEY_LEFT, /* <| and Ch- */
|
||||
[0x2c] = KEY_UP, /* ^^Up and >> */
|
||||
[0x24] = KEY_DOWN, /* vvDn and << */
|
||||
|
||||
[0x00] = KEY_RECORD, /* Record */
|
||||
[0x08] = KEY_STOP, /* Stop */
|
||||
[0x11] = KEY_PLAY, /* Play */
|
||||
|
||||
[0x0f] = KEY_CLOSE, /* Minimize */
|
||||
[0x19] = KEY_ZOOM, /* Zoom */
|
||||
[0x1a] = KEY_SHUFFLE, /* Snapshot */
|
||||
[0x0d] = KEY_LANGUAGE, /* MTS */
|
||||
|
||||
[0x14] = KEY_VOLUMEDOWN, /* Vol- */
|
||||
[0x16] = KEY_VOLUMEUP, /* Vol+ */
|
||||
[0x17] = KEY_CHANNELDOWN, /* Ch- */
|
||||
[0x1f] = KEY_CHANNELUP, /* Ch+ */
|
||||
|
||||
[0x04] = KEY_REWIND, /* << */
|
||||
[0x0e] = KEY_MENU, /* Function */
|
||||
[0x0c] = KEY_FASTFORWARD, /* >> */
|
||||
[0x1d] = KEY_RESTART, /* Reset */
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_plus);
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/* Cinergy 1400 DVB-T */
|
||||
IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE] = {
|
||||
[ 0x01 ] = KEY_POWER,
|
||||
@@ -1792,12 +1932,61 @@ IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE] = {
|
||||
[ 0x41 ] = KEY_GREEN, /* AP2 */
|
||||
[ 0x47 ] = KEY_YELLOW, /* AP3 */
|
||||
[ 0x57 ] = KEY_BLUE, /* AP4 */
|
||||
|
||||
|
||||
};
|
||||
|
||||
EXPORT_SYMBOL_GPL(ir_codes_encore_enltv);
|
||||
|
||||
/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
|
||||
Mauro Carvalho Chehab <mchehab@infradead.org> */
|
||||
IR_KEYTAB_TYPE ir_codes_encore_enltv2[IR_KEYTAB_SIZE] = {
|
||||
[0x4c] = KEY_POWER2,
|
||||
[0x4a] = KEY_TUNER,
|
||||
[0x40] = KEY_1,
|
||||
[0x60] = KEY_2,
|
||||
[0x50] = KEY_3,
|
||||
[0x70] = KEY_4,
|
||||
[0x48] = KEY_5,
|
||||
[0x68] = KEY_6,
|
||||
[0x58] = KEY_7,
|
||||
[0x78] = KEY_8,
|
||||
[0x44] = KEY_9,
|
||||
[0x54] = KEY_0,
|
||||
|
||||
[0x64] = KEY_LAST, /* +100 */
|
||||
[0x4e] = KEY_AGAIN, /* Recall */
|
||||
|
||||
[0x6c] = KEY_SWITCHVIDEOMODE, /* Video Source */
|
||||
[0x5e] = KEY_MENU,
|
||||
[0x56] = KEY_SCREEN,
|
||||
[0x7a] = KEY_SETUP,
|
||||
|
||||
[0x46] = KEY_MUTE,
|
||||
[0x5c] = KEY_MODE, /* Stereo */
|
||||
[0x74] = KEY_INFO,
|
||||
[0x7c] = KEY_CLEAR,
|
||||
|
||||
[0x55] = KEY_UP,
|
||||
[0x49] = KEY_DOWN,
|
||||
[0x7e] = KEY_LEFT,
|
||||
[0x59] = KEY_RIGHT,
|
||||
[0x6a] = KEY_ENTER,
|
||||
|
||||
[0x42] = KEY_VOLUMEUP,
|
||||
[0x62] = KEY_VOLUMEDOWN,
|
||||
[0x52] = KEY_CHANNELUP,
|
||||
[0x72] = KEY_CHANNELDOWN,
|
||||
|
||||
[0x41] = KEY_RECORD,
|
||||
[0x51] = KEY_SHUFFLE, /* Snapshot */
|
||||
[0x75] = KEY_TIME, /* Timeshift */
|
||||
[0x71] = KEY_TV2, /* PIP */
|
||||
|
||||
[0x45] = KEY_REWIND,
|
||||
[0x6f] = KEY_PAUSE,
|
||||
[0x7d] = KEY_FORWARD,
|
||||
[0x79] = KEY_STOP,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2);
|
||||
|
||||
/* for the Technotrend 1500 bundled remotes (grey and black): */
|
||||
IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE] = {
|
||||
[ 0x01 ] = KEY_POWER,
|
||||
@@ -2239,3 +2428,86 @@ IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE] = {
|
||||
[0x2a] = KEY_MENU,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d);
|
||||
|
||||
/* Encore ENLTV-FM v5.3
|
||||
Mauro Carvalho Chehab <mchehab@infradead.org>
|
||||
*/
|
||||
IR_KEYTAB_TYPE ir_codes_encore_enltv_fm53[IR_KEYTAB_SIZE] = {
|
||||
[0x10] = KEY_POWER2,
|
||||
[0x06] = KEY_MUTE,
|
||||
|
||||
[0x09] = KEY_1,
|
||||
[0x1d] = KEY_2,
|
||||
[0x1f] = KEY_3,
|
||||
[0x19] = KEY_4,
|
||||
[0x1b] = KEY_5,
|
||||
[0x11] = KEY_6,
|
||||
[0x17] = KEY_7,
|
||||
[0x12] = KEY_8,
|
||||
[0x16] = KEY_9,
|
||||
[0x48] = KEY_0,
|
||||
|
||||
[0x04] = KEY_LIST, /* -/-- */
|
||||
[0x40] = KEY_LAST, /* recall */
|
||||
|
||||
[0x02] = KEY_MODE, /* TV/AV */
|
||||
[0x05] = KEY_SHUFFLE, /* SNAPSHOT */
|
||||
|
||||
[0x4c] = KEY_CHANNELUP, /* UP */
|
||||
[0x00] = KEY_CHANNELDOWN, /* DOWN */
|
||||
[0x0d] = KEY_VOLUMEUP, /* RIGHT */
|
||||
[0x15] = KEY_VOLUMEDOWN, /* LEFT */
|
||||
[0x49] = KEY_ENTER, /* OK */
|
||||
|
||||
[0x54] = KEY_RECORD,
|
||||
[0x4d] = KEY_PLAY, /* pause */
|
||||
|
||||
[0x1e] = KEY_UP, /* video setting */
|
||||
[0x0e] = KEY_RIGHT, /* <- */
|
||||
[0x1a] = KEY_LEFT, /* -> */
|
||||
|
||||
[0x0a] = KEY_DOWN, /* video default */
|
||||
[0x0c] = KEY_ZOOM, /* hide pannel */
|
||||
[0x47] = KEY_SLEEP, /* shutdown */
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53);
|
||||
|
||||
/* Zogis Real Audio 220 - 32 keys IR */
|
||||
IR_KEYTAB_TYPE ir_codes_real_audio_220_32_keys[IR_KEYTAB_SIZE] = {
|
||||
[0x1c] = KEY_RADIO,
|
||||
[0x12] = KEY_POWER2,
|
||||
|
||||
[0x01] = KEY_1,
|
||||
[0x02] = KEY_2,
|
||||
[0x03] = KEY_3,
|
||||
[0x04] = KEY_4,
|
||||
[0x05] = KEY_5,
|
||||
[0x06] = KEY_6,
|
||||
[0x07] = KEY_7,
|
||||
[0x08] = KEY_8,
|
||||
[0x09] = KEY_9,
|
||||
[0x00] = KEY_0,
|
||||
|
||||
[0x0c] = KEY_VOLUMEUP,
|
||||
[0x18] = KEY_VOLUMEDOWN,
|
||||
[0x0b] = KEY_CHANNELUP,
|
||||
[0x15] = KEY_CHANNELDOWN,
|
||||
[0x16] = KEY_ENTER,
|
||||
|
||||
[0x11] = KEY_LIST, /* Source */
|
||||
[0x0d] = KEY_AUDIO, /* stereo */
|
||||
|
||||
[0x0f] = KEY_PREVIOUS, /* Prev */
|
||||
[0x1b] = KEY_PAUSE, /* Timeshift */
|
||||
[0x1a] = KEY_NEXT, /* Next */
|
||||
|
||||
[0x0e] = KEY_STOP,
|
||||
[0x1f] = KEY_PLAY,
|
||||
[0x1e] = KEY_PLAYPAUSE, /* Pause */
|
||||
|
||||
[0x1d] = KEY_RECORD,
|
||||
[0x13] = KEY_MUTE,
|
||||
[0x19] = KEY_SHUFFLE, /* Snapshot */
|
||||
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys);
|
||||
|
||||
@@ -234,7 +234,7 @@ void saa7146_pgtable_free(struct pci_dev *pci, struct saa7146_pgtable *pt)
|
||||
int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt)
|
||||
{
|
||||
__le32 *cpu;
|
||||
dma_addr_t dma_addr;
|
||||
dma_addr_t dma_addr = 0;
|
||||
|
||||
cpu = pci_alloc_consistent(pci, PAGE_SIZE, &dma_addr);
|
||||
if (NULL == cpu) {
|
||||
|
||||
@@ -533,7 +533,7 @@ int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
|
||||
memcpy(vfd, &device_template, sizeof(struct video_device));
|
||||
strlcpy(vfd->name, name, sizeof(vfd->name));
|
||||
vfd->release = video_device_release;
|
||||
vfd->priv = dev;
|
||||
video_set_drvdata(vfd, dev);
|
||||
|
||||
// fixme: -1 should be an insmod parameter *for the extension* (like "video_nr");
|
||||
if (video_register_device(vfd, type, -1) < 0) {
|
||||
|
||||
@@ -170,6 +170,9 @@ static int mt2060_set_params(struct dvb_frontend *fe, struct dvb_frontend_parame
|
||||
b[0] = REG_LO1B1;
|
||||
b[1] = 0xFF;
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
|
||||
|
||||
mt2060_writeregs(priv,b,2);
|
||||
|
||||
freq = params->frequency / 1000; // Hz -> kHz
|
||||
@@ -233,6 +236,9 @@ static int mt2060_set_params(struct dvb_frontend *fe, struct dvb_frontend_parame
|
||||
i++;
|
||||
} while (i<10);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -296,13 +302,35 @@ static int mt2060_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
|
||||
static int mt2060_init(struct dvb_frontend *fe)
|
||||
{
|
||||
struct mt2060_priv *priv = fe->tuner_priv;
|
||||
return mt2060_writereg(priv, REG_VGAG, (priv->cfg->clock_out << 6) | 0x33);
|
||||
int ret;
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
|
||||
|
||||
ret = mt2060_writereg(priv, REG_VGAG,
|
||||
(priv->cfg->clock_out << 6) | 0x33);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mt2060_sleep(struct dvb_frontend *fe)
|
||||
{
|
||||
struct mt2060_priv *priv = fe->tuner_priv;
|
||||
return mt2060_writereg(priv, REG_VGAG, (priv->cfg->clock_out << 6) | 0x30);
|
||||
int ret;
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
|
||||
|
||||
ret = mt2060_writereg(priv, REG_VGAG,
|
||||
(priv->cfg->clock_out << 6) | 0x30);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mt2060_release(struct dvb_frontend *fe)
|
||||
@@ -344,6 +372,9 @@ struct dvb_frontend * mt2060_attach(struct dvb_frontend *fe, struct i2c_adapter
|
||||
priv->i2c = i2c;
|
||||
priv->if1_freq = if1;
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1); /* open i2c_gate */
|
||||
|
||||
if (mt2060_readreg(priv,REG_PART_REV,&id) != 0) {
|
||||
kfree(priv);
|
||||
return NULL;
|
||||
@@ -360,6 +391,9 @@ struct dvb_frontend * mt2060_attach(struct dvb_frontend *fe, struct i2c_adapter
|
||||
|
||||
mt2060_calibrate(priv);
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 0); /* close i2c_gate */
|
||||
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(mt2060_attach);
|
||||
|
||||
@@ -979,7 +979,6 @@ struct dvb_frontend *mxl5007t_attach(struct dvb_frontend *fe,
|
||||
switch (instance) {
|
||||
case 0:
|
||||
goto fail;
|
||||
break;
|
||||
case 1:
|
||||
/* new tuner instance */
|
||||
state->config = cfg;
|
||||
|
||||
@@ -1155,7 +1155,6 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
|
||||
switch (instance) {
|
||||
case 0:
|
||||
goto fail;
|
||||
break;
|
||||
case 1:
|
||||
/* new tuner instance */
|
||||
priv->gate = (cfg) ? cfg->gate : TDA18271_GATE_AUTO;
|
||||
|
||||
@@ -447,17 +447,19 @@ static void tda827xa_lna_gain(struct dvb_frontend *fe, int high,
|
||||
else
|
||||
arg = 0;
|
||||
}
|
||||
if (priv->cfg->tuner_callback)
|
||||
priv->cfg->tuner_callback(priv->i2c_adap->algo_data,
|
||||
gp_func, arg);
|
||||
if (fe->callback)
|
||||
fe->callback(priv->i2c_adap->algo_data,
|
||||
DVB_FRONTEND_COMPONENT_TUNER,
|
||||
gp_func, arg);
|
||||
buf[1] = high ? 0 : 1;
|
||||
if (priv->cfg->config == 2)
|
||||
buf[1] = high ? 1 : 0;
|
||||
i2c_transfer(priv->i2c_adap, &msg, 1);
|
||||
break;
|
||||
case 3: /* switch with GPIO of saa713x */
|
||||
if (priv->cfg->tuner_callback)
|
||||
priv->cfg->tuner_callback(priv->i2c_adap->algo_data, 0, high);
|
||||
if (fe->callback)
|
||||
fe->callback(priv->i2c_adap->algo_data,
|
||||
DVB_FRONTEND_COMPONENT_TUNER, 0, high);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@ struct tda827x_config
|
||||
/* interface to tda829x driver */
|
||||
unsigned int config;
|
||||
int switch_addr;
|
||||
int (*tuner_callback) (void *dev, int command, int arg);
|
||||
|
||||
void (*agcf)(struct dvb_frontend *fe);
|
||||
};
|
||||
|
||||
@@ -672,10 +672,8 @@ struct dvb_frontend *tda829x_attach(struct dvb_frontend *fe,
|
||||
priv->i2c_props.addr = i2c_addr;
|
||||
priv->i2c_props.adap = i2c_adap;
|
||||
priv->i2c_props.name = "tda829x";
|
||||
if (cfg) {
|
||||
if (cfg)
|
||||
priv->cfg.config = cfg->lna_cfg;
|
||||
priv->cfg.tuner_callback = cfg->tuner_callback;
|
||||
}
|
||||
|
||||
if (tda8290_probe(&priv->i2c_props) == 0) {
|
||||
priv->ver = TDA8290;
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
struct tda829x_config {
|
||||
unsigned int lna_cfg;
|
||||
int (*tuner_callback) (void *dev, int command, int arg);
|
||||
|
||||
unsigned int probe_tuner:1;
|
||||
#define TDA829X_PROBE_TUNER 0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user