diff options
Diffstat (limited to 'drivers/media/video/saa7134')
-rw-r--r-- | drivers/media/video/saa7134/saa6752hs.c | 8 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-alsa.c | 2 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-cards.c | 83 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-core.c | 138 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-dvb.c | 1 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-empress.c | 3 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-i2c.c | 3 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-input.c | 39 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-oss.c | 40 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-video.c | 7 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134.h | 10 |
11 files changed, 216 insertions, 118 deletions
diff --git a/drivers/media/video/saa7134/saa6752hs.c b/drivers/media/video/saa7134/saa6752hs.c index 4615a982ac64..ad73c4a60f2b 100644 --- a/drivers/media/video/saa7134/saa6752hs.c +++ b/drivers/media/video/saa7134/saa6752hs.c | |||
@@ -9,7 +9,8 @@ | |||
9 | #include <linux/poll.h> | 9 | #include <linux/poll.h> |
10 | #include <linux/i2c.h> | 10 | #include <linux/i2c.h> |
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <linux/videodev.h> | 12 | #include <linux/videodev2.h> |
13 | #include <media/v4l2-common.h> | ||
13 | #include <linux/init.h> | 14 | #include <linux/init.h> |
14 | #include <linux/crc32.h> | 15 | #include <linux/crc32.h> |
15 | 16 | ||
@@ -509,7 +510,6 @@ static int saa6752hs_attach(struct i2c_adapter *adap, int addr, int kind) | |||
509 | { | 510 | { |
510 | struct saa6752hs_state *h; | 511 | struct saa6752hs_state *h; |
511 | 512 | ||
512 | printk("saa6752hs: chip found @ 0x%x\n", addr<<1); | ||
513 | 513 | ||
514 | if (NULL == (h = kmalloc(sizeof(*h), GFP_KERNEL))) | 514 | if (NULL == (h = kmalloc(sizeof(*h), GFP_KERNEL))) |
515 | return -ENOMEM; | 515 | return -ENOMEM; |
@@ -525,6 +525,8 @@ static int saa6752hs_attach(struct i2c_adapter *adap, int addr, int kind) | |||
525 | i2c_set_clientdata(&h->client, h); | 525 | i2c_set_clientdata(&h->client, h); |
526 | i2c_attach_client(&h->client); | 526 | i2c_attach_client(&h->client); |
527 | 527 | ||
528 | v4l_info(&h->client,"saa6752hs: chip found @ 0x%x\n", addr<<1); | ||
529 | |||
528 | return 0; | 530 | return 0; |
529 | } | 531 | } |
530 | 532 | ||
@@ -598,7 +600,7 @@ saa6752hs_command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
598 | 600 | ||
599 | static struct i2c_driver driver = { | 601 | static struct i2c_driver driver = { |
600 | .driver = { | 602 | .driver = { |
601 | .name = "i2c saa6752hs MPEG encoder", | 603 | .name = "saa6752hs", |
602 | }, | 604 | }, |
603 | .id = I2C_DRIVERID_SAA6752HS, | 605 | .id = I2C_DRIVERID_SAA6752HS, |
604 | .attach_adapter = saa6752hs_probe, | 606 | .attach_adapter = saa6752hs_probe, |
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c index ade05f75fdb0..a7a6ab9298a9 100644 --- a/drivers/media/video/saa7134/saa7134-alsa.c +++ b/drivers/media/video/saa7134/saa7134-alsa.c | |||
@@ -20,13 +20,13 @@ | |||
20 | * | 20 | * |
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <sound/driver.h> | ||
24 | #include <linux/init.h> | 23 | #include <linux/init.h> |
25 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
26 | #include <linux/time.h> | 25 | #include <linux/time.h> |
27 | #include <linux/wait.h> | 26 | #include <linux/wait.h> |
28 | #include <linux/moduleparam.h> | 27 | #include <linux/moduleparam.h> |
29 | #include <linux/module.h> | 28 | #include <linux/module.h> |
29 | #include <sound/driver.h> | ||
30 | #include <sound/core.h> | 30 | #include <sound/core.h> |
31 | #include <sound/control.h> | 31 | #include <sound/control.h> |
32 | #include <sound/pcm.h> | 32 | #include <sound/pcm.h> |
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 672fb205959f..77e5be98e4c6 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include "saa7134-reg.h" | 26 | #include "saa7134-reg.h" |
27 | #include "saa7134.h" | 27 | #include "saa7134.h" |
28 | #include <media/v4l2-common.h> | ||
28 | 29 | ||
29 | /* commly used strings */ | 30 | /* commly used strings */ |
30 | static char name_mute[] = "mute"; | 31 | static char name_mute[] = "mute"; |
@@ -2555,6 +2556,69 @@ struct saa7134_board saa7134_boards[] = { | |||
2555 | .amux = LINE1, | 2556 | .amux = LINE1, |
2556 | }, | 2557 | }, |
2557 | }, | 2558 | }, |
2559 | [SAA7134_BOARD_CINERGY250PCI] = { | ||
2560 | /* remote-control does not work. The signal about a | ||
2561 | key press comes in via gpio, but the key code | ||
2562 | doesn't. Neither does it have an i2c remote control | ||
2563 | interface. */ | ||
2564 | .name = "Terratec Cinergy 250 PCI TV", | ||
2565 | .audio_clock = 0x00187de7, | ||
2566 | .tuner_type = TUNER_PHILIPS_TDA8290, | ||
2567 | .radio_type = UNSET, | ||
2568 | .tuner_addr = ADDR_UNSET, | ||
2569 | .radio_addr = ADDR_UNSET, | ||
2570 | .gpiomask = 0x80200000, | ||
2571 | .inputs = {{ | ||
2572 | .name = name_tv, | ||
2573 | .vmux = 1, | ||
2574 | .amux = TV, | ||
2575 | .tv = 1, | ||
2576 | },{ | ||
2577 | .name = name_svideo, /* NOT tested */ | ||
2578 | .vmux = 8, | ||
2579 | .amux = LINE1, | ||
2580 | }}, | ||
2581 | .radio = { | ||
2582 | .name = name_radio, | ||
2583 | .amux = LINE1, | ||
2584 | .gpio = 0x0200000, | ||
2585 | }, | ||
2586 | }, | ||
2587 | [SAA7134_BOARD_FLYDVB_TRIO] = { | ||
2588 | /* LifeView LR319 FlyDVB Trio */ | ||
2589 | /* Peter Missel <peter.missel@onlinehome.de> */ | ||
2590 | .name = "LifeView FlyDVB Trio", | ||
2591 | .audio_clock = 0x00200000, | ||
2592 | .tuner_type = TUNER_PHILIPS_TDA8290, | ||
2593 | .radio_type = UNSET, | ||
2594 | .tuner_addr = ADDR_UNSET, | ||
2595 | .radio_addr = ADDR_UNSET, | ||
2596 | .gpiomask = 0x00200000, | ||
2597 | .inputs = {{ | ||
2598 | .name = name_tv, /* Analog broadcast/cable TV */ | ||
2599 | .vmux = 1, | ||
2600 | .amux = TV, | ||
2601 | .gpio = 0x200000, /* GPIO21=High for TV input */ | ||
2602 | .tv = 1, | ||
2603 | },{ | ||
2604 | .name = name_svideo, /* S-Video signal on S-Video input */ | ||
2605 | .vmux = 8, | ||
2606 | .amux = LINE2, | ||
2607 | },{ | ||
2608 | .name = name_comp1, /* Composite signal on S-Video input */ | ||
2609 | .vmux = 0, | ||
2610 | .amux = LINE2, | ||
2611 | },{ | ||
2612 | .name = name_comp2, /* Composite input */ | ||
2613 | .vmux = 3, | ||
2614 | .amux = LINE2, | ||
2615 | }}, | ||
2616 | .radio = { | ||
2617 | .name = name_radio, | ||
2618 | .amux = TV, | ||
2619 | .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */ | ||
2620 | }, | ||
2621 | }, | ||
2558 | }; | 2622 | }; |
2559 | 2623 | ||
2560 | const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); | 2624 | const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); |
@@ -2895,6 +2959,12 @@ struct pci_device_id saa7134_pci_tbl[] = { | |||
2895 | .vendor = PCI_VENDOR_ID_PHILIPS, | 2959 | .vendor = PCI_VENDOR_ID_PHILIPS, |
2896 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | 2960 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, |
2897 | .subvendor = 0x1421, | 2961 | .subvendor = 0x1421, |
2962 | .subdevice = 0x0351, /* PCI version, new revision */ | ||
2963 | .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, | ||
2964 | },{ | ||
2965 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
2966 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
2967 | .subvendor = 0x1421, | ||
2898 | .subdevice = 0x0370, /* cardbus version */ | 2968 | .subdevice = 0x0370, /* cardbus version */ |
2899 | .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, | 2969 | .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, |
2900 | },{ | 2970 | },{ |
@@ -3002,6 +3072,18 @@ struct pci_device_id saa7134_pci_tbl[] = { | |||
3002 | .subdevice = 0x6231, | 3072 | .subdevice = 0x6231, |
3003 | .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS, | 3073 | .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS, |
3004 | },{ | 3074 | },{ |
3075 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
3076 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
3077 | .subvendor = 0x153b, | ||
3078 | .subdevice = 0x1160, | ||
3079 | .driver_data = SAA7134_BOARD_CINERGY250PCI, | ||
3080 | },{ | ||
3081 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
3082 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA 7131E */ | ||
3083 | .subvendor = 0x5168, | ||
3084 | .subdevice = 0x0319, | ||
3085 | .driver_data = SAA7134_BOARD_FLYDVB_TRIO, | ||
3086 | },{ | ||
3005 | /* --- boards without eeprom + subsystem ID --- */ | 3087 | /* --- boards without eeprom + subsystem ID --- */ |
3006 | .vendor = PCI_VENDOR_ID_PHILIPS, | 3088 | .vendor = PCI_VENDOR_ID_PHILIPS, |
3007 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, | 3089 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, |
@@ -3090,6 +3172,7 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
3090 | case SAA7134_BOARD_AVERMEDIA_GO_007_FM: | 3172 | case SAA7134_BOARD_AVERMEDIA_GO_007_FM: |
3091 | /* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */ | 3173 | /* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */ |
3092 | case SAA7134_BOARD_VIDEOMATE_TV_PVR: | 3174 | case SAA7134_BOARD_VIDEOMATE_TV_PVR: |
3175 | case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS: | ||
3093 | case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: | 3176 | case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: |
3094 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: | 3177 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: |
3095 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: | 3178 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: |
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c index 23d8747338ed..accbc32725cf 100644 --- a/drivers/media/video/saa7134/saa7134-core.c +++ b/drivers/media/video/saa7134/saa7134-core.c | |||
@@ -95,77 +95,6 @@ int (*dmasound_exit)(struct saa7134_dev *dev); | |||
95 | #define dprintk(fmt, arg...) if (core_debug) \ | 95 | #define dprintk(fmt, arg...) if (core_debug) \ |
96 | printk(KERN_DEBUG "%s/core: " fmt, dev->name , ## arg) | 96 | printk(KERN_DEBUG "%s/core: " fmt, dev->name , ## arg) |
97 | 97 | ||
98 | /* ------------------------------------------------------------------ */ | ||
99 | /* debug help functions */ | ||
100 | |||
101 | static const char *v4l1_ioctls[] = { | ||
102 | "0", "GCAP", "GCHAN", "SCHAN", "GTUNER", "STUNER", "GPICT", "SPICT", | ||
103 | "CCAPTURE", "GWIN", "SWIN", "GFBUF", "SFBUF", "KEY", "GFREQ", | ||
104 | "SFREQ", "GAUDIO", "SAUDIO", "SYNC", "MCAPTURE", "GMBUF", "GUNIT", | ||
105 | "GCAPTURE", "SCAPTURE", "SPLAYMODE", "SWRITEMODE", "GPLAYINFO", | ||
106 | "SMICROCODE", "GVBIFMT", "SVBIFMT" }; | ||
107 | #define V4L1_IOCTLS ARRAY_SIZE(v4l1_ioctls) | ||
108 | |||
109 | static const char *v4l2_ioctls[] = { | ||
110 | "QUERYCAP", "1", "ENUM_PIXFMT", "ENUM_FBUFFMT", "G_FMT", "S_FMT", | ||
111 | "G_COMP", "S_COMP", "REQBUFS", "QUERYBUF", "G_FBUF", "S_FBUF", | ||
112 | "G_WIN", "S_WIN", "PREVIEW", "QBUF", "16", "DQBUF", "STREAMON", | ||
113 | "STREAMOFF", "G_PERF", "G_PARM", "S_PARM", "G_STD", "S_STD", | ||
114 | "ENUMSTD", "ENUMINPUT", "G_CTRL", "S_CTRL", "G_TUNER", "S_TUNER", | ||
115 | "G_FREQ", "S_FREQ", "G_AUDIO", "S_AUDIO", "35", "QUERYCTRL", | ||
116 | "QUERYMENU", "G_INPUT", "S_INPUT", "ENUMCVT", "41", "42", "43", | ||
117 | "44", "45", "G_OUTPUT", "S_OUTPUT", "ENUMOUTPUT", "G_AUDOUT", | ||
118 | "S_AUDOUT", "ENUMFX", "G_EFFECT", "S_EFFECT", "G_MODULATOR", | ||
119 | "S_MODULATOR" | ||
120 | }; | ||
121 | #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls) | ||
122 | |||
123 | static const char *osspcm_ioctls[] = { | ||
124 | "RESET", "SYNC", "SPEED", "STEREO", "GETBLKSIZE", "SETFMT", | ||
125 | "CHANNELS", "?", "POST", "SUBDIVIDE", "SETFRAGMENT", "GETFMTS", | ||
126 | "GETOSPACE", "GETISPACE", "NONBLOCK", "GETCAPS", "GET/SETTRIGGER", | ||
127 | "GETIPTR", "GETOPTR", "MAPINBUF", "MAPOUTBUF", "SETSYNCRO", | ||
128 | "SETDUPLEX", "GETODELAY" | ||
129 | }; | ||
130 | #define OSSPCM_IOCTLS ARRAY_SIZE(v4l2_ioctls) | ||
131 | |||
132 | void saa7134_print_ioctl(char *name, unsigned int cmd) | ||
133 | { | ||
134 | char *dir; | ||
135 | |||
136 | switch (_IOC_DIR(cmd)) { | ||
137 | case _IOC_NONE: dir = "--"; break; | ||
138 | case _IOC_READ: dir = "r-"; break; | ||
139 | case _IOC_WRITE: dir = "-w"; break; | ||
140 | case _IOC_READ | _IOC_WRITE: dir = "rw"; break; | ||
141 | default: dir = "??"; break; | ||
142 | } | ||
143 | switch (_IOC_TYPE(cmd)) { | ||
144 | case 'v': | ||
145 | printk(KERN_DEBUG "%s: ioctl 0x%08x (v4l1, %s, VIDIOC%s)\n", | ||
146 | name, cmd, dir, (_IOC_NR(cmd) < V4L1_IOCTLS) ? | ||
147 | v4l1_ioctls[_IOC_NR(cmd)] : "???"); | ||
148 | break; | ||
149 | case 'V': | ||
150 | printk(KERN_DEBUG "%s: ioctl 0x%08x (v4l2, %s, VIDIOC_%s)\n", | ||
151 | name, cmd, dir, (_IOC_NR(cmd) < V4L2_IOCTLS) ? | ||
152 | v4l2_ioctls[_IOC_NR(cmd)] : "???"); | ||
153 | break; | ||
154 | case 'P': | ||
155 | printk(KERN_DEBUG "%s: ioctl 0x%08x (oss dsp, %s, SNDCTL_DSP_%s)\n", | ||
156 | name, cmd, dir, (_IOC_NR(cmd) < OSSPCM_IOCTLS) ? | ||
157 | osspcm_ioctls[_IOC_NR(cmd)] : "???"); | ||
158 | break; | ||
159 | case 'M': | ||
160 | printk(KERN_DEBUG "%s: ioctl 0x%08x (oss mixer, %s, #%d)\n", | ||
161 | name, cmd, dir, _IOC_NR(cmd)); | ||
162 | break; | ||
163 | default: | ||
164 | printk(KERN_DEBUG "%s: ioctl 0x%08x (???, %s, #%d)\n", | ||
165 | name, cmd, dir, _IOC_NR(cmd)); | ||
166 | } | ||
167 | } | ||
168 | |||
169 | void saa7134_track_gpio(struct saa7134_dev *dev, char *msg) | 98 | void saa7134_track_gpio(struct saa7134_dev *dev, char *msg) |
170 | { | 99 | { |
171 | unsigned long mode,status; | 100 | unsigned long mode,status; |
@@ -211,7 +140,7 @@ static int pending_call(struct notifier_block *self, unsigned long state, | |||
211 | return NOTIFY_DONE; | 140 | return NOTIFY_DONE; |
212 | } | 141 | } |
213 | 142 | ||
214 | static int pending_registered; | 143 | static int pending_registered=0; |
215 | static struct notifier_block pending_notifier = { | 144 | static struct notifier_block pending_notifier = { |
216 | .notifier_call = pending_call, | 145 | .notifier_call = pending_call, |
217 | }; | 146 | }; |
@@ -610,11 +539,38 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
610 | card_has_mpeg(dev)) | 539 | card_has_mpeg(dev)) |
611 | saa7134_irq_ts_done(dev,status); | 540 | saa7134_irq_ts_done(dev,status); |
612 | 541 | ||
613 | if ((report & (SAA7134_IRQ_REPORT_GPIO16 | | 542 | if (report & SAA7134_IRQ_REPORT_GPIO16) { |
614 | SAA7134_IRQ_REPORT_GPIO18)) && | 543 | switch (dev->has_remote) { |
615 | dev->remote) | 544 | case SAA7134_REMOTE_GPIO: |
616 | saa7134_input_irq(dev); | 545 | if (dev->remote->mask_keydown & 0x10000) { |
546 | saa7134_input_irq(dev); | ||
547 | } | ||
548 | break; | ||
549 | |||
550 | case SAA7134_REMOTE_I2C: | ||
551 | break; /* FIXME: invoke I2C get_key() */ | ||
617 | 552 | ||
553 | default: /* GPIO16 not used by IR remote */ | ||
554 | break; | ||
555 | } | ||
556 | } | ||
557 | |||
558 | if (report & SAA7134_IRQ_REPORT_GPIO18) { | ||
559 | switch (dev->has_remote) { | ||
560 | case SAA7134_REMOTE_GPIO: | ||
561 | if ((dev->remote->mask_keydown & 0x40000) || | ||
562 | (dev->remote->mask_keyup & 0x40000)) { | ||
563 | saa7134_input_irq(dev); | ||
564 | } | ||
565 | break; | ||
566 | |||
567 | case SAA7134_REMOTE_I2C: | ||
568 | break; /* FIXME: invoke I2C get_key() */ | ||
569 | |||
570 | default: /* GPIO18 not used by IR remote */ | ||
571 | break; | ||
572 | } | ||
573 | } | ||
618 | } | 574 | } |
619 | 575 | ||
620 | if (10 == loop) { | 576 | if (10 == loop) { |
@@ -624,13 +580,16 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
624 | printk(KERN_WARNING "%s/irq: looping -- " | 580 | printk(KERN_WARNING "%s/irq: looping -- " |
625 | "clearing PE (parity error!) enable bit\n",dev->name); | 581 | "clearing PE (parity error!) enable bit\n",dev->name); |
626 | saa_clearl(SAA7134_IRQ2,SAA7134_IRQ2_INTE_PE); | 582 | saa_clearl(SAA7134_IRQ2,SAA7134_IRQ2_INTE_PE); |
627 | } else if (report & (SAA7134_IRQ_REPORT_GPIO16 | | 583 | } else if (report & SAA7134_IRQ_REPORT_GPIO16) { |
628 | SAA7134_IRQ_REPORT_GPIO18)) { | 584 | /* disable gpio16 IRQ */ |
629 | /* disable gpio IRQs */ | ||
630 | printk(KERN_WARNING "%s/irq: looping -- " | 585 | printk(KERN_WARNING "%s/irq: looping -- " |
631 | "clearing GPIO enable bits\n",dev->name); | 586 | "clearing GPIO16 enable bit\n",dev->name); |
632 | saa_clearl(SAA7134_IRQ2, (SAA7134_IRQ2_INTE_GPIO16 | | 587 | saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO16); |
633 | SAA7134_IRQ2_INTE_GPIO18)); | 588 | } else if (report & SAA7134_IRQ_REPORT_GPIO18) { |
589 | /* disable gpio18 IRQs */ | ||
590 | printk(KERN_WARNING "%s/irq: looping -- " | ||
591 | "clearing GPIO18 enable bit\n",dev->name); | ||
592 | saa_clearl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO18); | ||
634 | } else { | 593 | } else { |
635 | /* disable all irqs */ | 594 | /* disable all irqs */ |
636 | printk(KERN_WARNING "%s/irq: looping -- " | 595 | printk(KERN_WARNING "%s/irq: looping -- " |
@@ -711,10 +670,14 @@ static int saa7134_hwinit2(struct saa7134_dev *dev) | |||
711 | SAA7134_IRQ2_INTE_PE | | 670 | SAA7134_IRQ2_INTE_PE | |
712 | SAA7134_IRQ2_INTE_AR; | 671 | SAA7134_IRQ2_INTE_AR; |
713 | 672 | ||
714 | if (dev->has_remote == SAA7134_REMOTE_GPIO) | 673 | if (dev->has_remote == SAA7134_REMOTE_GPIO) { |
715 | irq2_mask |= (SAA7134_IRQ2_INTE_GPIO18 | | 674 | if (dev->remote->mask_keydown & 0x10000) |
716 | SAA7134_IRQ2_INTE_GPIO18A | | 675 | irq2_mask |= SAA7134_IRQ2_INTE_GPIO16; |
717 | SAA7134_IRQ2_INTE_GPIO16 ); | 676 | else if (dev->remote->mask_keydown & 0x40000) |
677 | irq2_mask |= SAA7134_IRQ2_INTE_GPIO18; | ||
678 | else if (dev->remote->mask_keyup & 0x40000) | ||
679 | irq2_mask |= SAA7134_IRQ2_INTE_GPIO18A; | ||
680 | } | ||
718 | 681 | ||
719 | saa_writel(SAA7134_IRQ1, 0); | 682 | saa_writel(SAA7134_IRQ1, 0); |
720 | saa_writel(SAA7134_IRQ2, irq2_mask); | 683 | saa_writel(SAA7134_IRQ2, irq2_mask); |
@@ -1156,7 +1119,7 @@ static int saa7134_init(void) | |||
1156 | printk(KERN_INFO "saa7130/34: snapshot date %04d-%02d-%02d\n", | 1119 | printk(KERN_INFO "saa7130/34: snapshot date %04d-%02d-%02d\n", |
1157 | SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100); | 1120 | SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100); |
1158 | #endif | 1121 | #endif |
1159 | return pci_module_init(&saa7134_pci_driver); | 1122 | return pci_register_driver(&saa7134_pci_driver); |
1160 | } | 1123 | } |
1161 | 1124 | ||
1162 | static void saa7134_fini(void) | 1125 | static void saa7134_fini(void) |
@@ -1173,7 +1136,6 @@ module_exit(saa7134_fini); | |||
1173 | 1136 | ||
1174 | /* ----------------------------------------------------------- */ | 1137 | /* ----------------------------------------------------------- */ |
1175 | 1138 | ||
1176 | EXPORT_SYMBOL(saa7134_print_ioctl); | ||
1177 | EXPORT_SYMBOL(saa7134_i2c_call_clients); | 1139 | EXPORT_SYMBOL(saa7134_i2c_call_clients); |
1178 | EXPORT_SYMBOL(saa7134_devlist); | 1140 | EXPORT_SYMBOL(saa7134_devlist); |
1179 | EXPORT_SYMBOL(saa7134_boards); | 1141 | EXPORT_SYMBOL(saa7134_boards); |
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c index e016480c3468..399f9952596c 100644 --- a/drivers/media/video/saa7134/saa7134-dvb.c +++ b/drivers/media/video/saa7134/saa7134-dvb.c | |||
@@ -31,6 +31,7 @@ | |||
31 | 31 | ||
32 | #include "saa7134-reg.h" | 32 | #include "saa7134-reg.h" |
33 | #include "saa7134.h" | 33 | #include "saa7134.h" |
34 | #include <media/v4l2-common.h> | ||
34 | 35 | ||
35 | #ifdef HAVE_MT352 | 36 | #ifdef HAVE_MT352 |
36 | # include "mt352.h" | 37 | # include "mt352.h" |
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c index 575f3e835f91..bd4c389d4c37 100644 --- a/drivers/media/video/saa7134/saa7134-empress.c +++ b/drivers/media/video/saa7134/saa7134-empress.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "saa7134.h" | 29 | #include "saa7134.h" |
30 | 30 | ||
31 | #include <media/saa6752hs.h> | 31 | #include <media/saa6752hs.h> |
32 | #include <media/v4l2-common.h> | ||
32 | 33 | ||
33 | /* ------------------------------------------------------------------ */ | 34 | /* ------------------------------------------------------------------ */ |
34 | 35 | ||
@@ -163,7 +164,7 @@ static int ts_do_ioctl(struct inode *inode, struct file *file, | |||
163 | struct saa7134_dev *dev = file->private_data; | 164 | struct saa7134_dev *dev = file->private_data; |
164 | 165 | ||
165 | if (debug > 1) | 166 | if (debug > 1) |
166 | saa7134_print_ioctl(dev->name,cmd); | 167 | v4l_print_ioctl(dev->name,cmd); |
167 | switch (cmd) { | 168 | switch (cmd) { |
168 | case VIDIOC_QUERYCAP: | 169 | case VIDIOC_QUERYCAP: |
169 | { | 170 | { |
diff --git a/drivers/media/video/saa7134/saa7134-i2c.c b/drivers/media/video/saa7134/saa7134-i2c.c index 1792d03d621d..6162550c4136 100644 --- a/drivers/media/video/saa7134/saa7134-i2c.c +++ b/drivers/media/video/saa7134/saa7134-i2c.c | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | #include "saa7134-reg.h" | 31 | #include "saa7134-reg.h" |
32 | #include "saa7134.h" | 32 | #include "saa7134.h" |
33 | #include <media/v4l2-common.h> | ||
33 | 34 | ||
34 | /* ----------------------------------------------------------- */ | 35 | /* ----------------------------------------------------------- */ |
35 | 36 | ||
@@ -390,9 +391,7 @@ static struct i2c_algorithm saa7134_algo = { | |||
390 | 391 | ||
391 | static struct i2c_adapter saa7134_adap_template = { | 392 | static struct i2c_adapter saa7134_adap_template = { |
392 | .owner = THIS_MODULE, | 393 | .owner = THIS_MODULE, |
393 | #ifdef I2C_CLASS_TV_ANALOG | ||
394 | .class = I2C_CLASS_TV_ANALOG, | 394 | .class = I2C_CLASS_TV_ANALOG, |
395 | #endif | ||
396 | .name = "saa7134", | 395 | .name = "saa7134", |
397 | .id = I2C_HW_SAA7134, | 396 | .id = I2C_HW_SAA7134, |
398 | .algo = &saa7134_algo, | 397 | .algo = &saa7134_algo, |
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c index ab75ca5ac356..82d28cbf289f 100644 --- a/drivers/media/video/saa7134/saa7134-input.c +++ b/drivers/media/video/saa7134/saa7134-input.c | |||
@@ -56,23 +56,23 @@ static IR_KEYTAB_TYPE flyvideo_codes[IR_KEYTAB_SIZE] = { | |||
56 | [ 12 ] = KEY_KP8, | 56 | [ 12 ] = KEY_KP8, |
57 | [ 13 ] = KEY_KP9, | 57 | [ 13 ] = KEY_KP9, |
58 | 58 | ||
59 | [ 14 ] = KEY_TUNER, // Air/Cable | 59 | [ 14 ] = KEY_MODE, // Air/Cable |
60 | [ 17 ] = KEY_VIDEO, // Video | 60 | [ 17 ] = KEY_VIDEO, // Video |
61 | [ 21 ] = KEY_AUDIO, // Audio | 61 | [ 21 ] = KEY_AUDIO, // Audio |
62 | [ 0 ] = KEY_POWER, // Pover | 62 | [ 0 ] = KEY_POWER, // Power |
63 | [ 24 ] = KEY_TUNER, // AV Source | ||
63 | [ 2 ] = KEY_ZOOM, // Fullscreen | 64 | [ 2 ] = KEY_ZOOM, // Fullscreen |
65 | [ 26 ] = KEY_LANGUAGE, // Stereo | ||
64 | [ 27 ] = KEY_MUTE, // Mute | 66 | [ 27 ] = KEY_MUTE, // Mute |
65 | [ 20 ] = KEY_VOLUMEUP, | 67 | [ 20 ] = KEY_VOLUMEUP, // Volume + |
66 | [ 23 ] = KEY_VOLUMEDOWN, | 68 | [ 23 ] = KEY_VOLUMEDOWN, // Volume - |
67 | [ 18 ] = KEY_CHANNELUP, // Channel + | 69 | [ 18 ] = KEY_CHANNELUP, // Channel + |
68 | [ 19 ] = KEY_CHANNELDOWN, // Channel - | 70 | [ 19 ] = KEY_CHANNELDOWN, // Channel - |
69 | [ 6 ] = KEY_AGAIN, // Recal | 71 | [ 6 ] = KEY_AGAIN, // Recall |
70 | [ 16 ] = KEY_KPENTER, // Enter | 72 | [ 16 ] = KEY_ENTER, // Enter |
71 | |||
72 | [ 26 ] = KEY_F22, // Stereo | ||
73 | [ 24 ] = KEY_EDIT, // AV Source | ||
74 | }; | 73 | }; |
75 | 74 | ||
75 | |||
76 | static IR_KEYTAB_TYPE cinergy_codes[IR_KEYTAB_SIZE] = { | 76 | static IR_KEYTAB_TYPE cinergy_codes[IR_KEYTAB_SIZE] = { |
77 | [ 0 ] = KEY_KP0, | 77 | [ 0 ] = KEY_KP0, |
78 | [ 1 ] = KEY_KP1, | 78 | [ 1 ] = KEY_KP1, |
@@ -543,12 +543,22 @@ static int build_key(struct saa7134_dev *dev) | |||
543 | dprintk("build_key gpio=0x%x mask=0x%x data=%d\n", | 543 | dprintk("build_key gpio=0x%x mask=0x%x data=%d\n", |
544 | gpio, ir->mask_keycode, data); | 544 | gpio, ir->mask_keycode, data); |
545 | 545 | ||
546 | if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) || | 546 | if (ir->polling) { |
547 | (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) { | 547 | if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) || |
548 | ir_input_keydown(ir->dev, &ir->ir, data, data); | 548 | (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) { |
549 | } else { | 549 | ir_input_keydown(ir->dev, &ir->ir, data, data); |
550 | ir_input_nokey(ir->dev, &ir->ir); | 550 | } else { |
551 | ir_input_nokey(ir->dev, &ir->ir); | ||
552 | } | ||
553 | } | ||
554 | else { /* IRQ driven mode - handle key press and release in one go */ | ||
555 | if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) || | ||
556 | (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) { | ||
557 | ir_input_keydown(ir->dev, &ir->ir, data, data); | ||
558 | ir_input_nokey(ir->dev, &ir->ir); | ||
559 | } | ||
551 | } | 560 | } |
561 | |||
552 | return 0; | 562 | return 0; |
553 | } | 563 | } |
554 | 564 | ||
@@ -686,6 +696,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
686 | polling = 50; // ms | 696 | polling = 50; // ms |
687 | break; | 697 | break; |
688 | case SAA7134_BOARD_VIDEOMATE_TV_PVR: | 698 | case SAA7134_BOARD_VIDEOMATE_TV_PVR: |
699 | case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS: | ||
689 | case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: | 700 | case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: |
690 | ir_codes = videomate_tv_pvr_codes; | 701 | ir_codes = videomate_tv_pvr_codes; |
691 | mask_keycode = 0x00003F; | 702 | mask_keycode = 0x00003F; |
diff --git a/drivers/media/video/saa7134/saa7134-oss.c b/drivers/media/video/saa7134/saa7134-oss.c index 8badd2a9cb2f..7448e386a804 100644 --- a/drivers/media/video/saa7134/saa7134-oss.c +++ b/drivers/media/video/saa7134/saa7134-oss.c | |||
@@ -373,6 +373,42 @@ static ssize_t dsp_write(struct file *file, const char __user *buffer, | |||
373 | return -EINVAL; | 373 | return -EINVAL; |
374 | } | 374 | } |
375 | 375 | ||
376 | static const char *osspcm_ioctls[] = { | ||
377 | "RESET", "SYNC", "SPEED", "STEREO", "GETBLKSIZE", "SETFMT", | ||
378 | "CHANNELS", "?", "POST", "SUBDIVIDE", "SETFRAGMENT", "GETFMTS", | ||
379 | "GETOSPACE", "GETISPACE", "NONBLOCK", "GETCAPS", "GET/SETTRIGGER", | ||
380 | "GETIPTR", "GETOPTR", "MAPINBUF", "MAPOUTBUF", "SETSYNCRO", | ||
381 | "SETDUPLEX", "GETODELAY" | ||
382 | }; | ||
383 | #define OSSPCM_IOCTLS ARRAY_SIZE(osspcm_ioctls) | ||
384 | |||
385 | static void saa7134_oss_print_ioctl(char *name, unsigned int cmd) | ||
386 | { | ||
387 | char *dir; | ||
388 | |||
389 | switch (_IOC_DIR(cmd)) { | ||
390 | case _IOC_NONE: dir = "--"; break; | ||
391 | case _IOC_READ: dir = "r-"; break; | ||
392 | case _IOC_WRITE: dir = "-w"; break; | ||
393 | case _IOC_READ | _IOC_WRITE: dir = "rw"; break; | ||
394 | default: dir = "??"; break; | ||
395 | } | ||
396 | switch (_IOC_TYPE(cmd)) { | ||
397 | case 'P': | ||
398 | printk(KERN_DEBUG "%s: ioctl 0x%08x (oss dsp, %s, SNDCTL_DSP_%s)\n", | ||
399 | name, cmd, dir, (_IOC_NR(cmd) < OSSPCM_IOCTLS) ? | ||
400 | osspcm_ioctls[_IOC_NR(cmd)] : "???"); | ||
401 | break; | ||
402 | case 'M': | ||
403 | printk(KERN_DEBUG "%s: ioctl 0x%08x (oss mixer, %s, #%d)\n", | ||
404 | name, cmd, dir, _IOC_NR(cmd)); | ||
405 | break; | ||
406 | default: | ||
407 | printk(KERN_DEBUG "%s: ioctl 0x%08x (???, %s, #%d)\n", | ||
408 | name, cmd, dir, _IOC_NR(cmd)); | ||
409 | } | ||
410 | } | ||
411 | |||
376 | static int dsp_ioctl(struct inode *inode, struct file *file, | 412 | static int dsp_ioctl(struct inode *inode, struct file *file, |
377 | unsigned int cmd, unsigned long arg) | 413 | unsigned int cmd, unsigned long arg) |
378 | { | 414 | { |
@@ -382,7 +418,7 @@ static int dsp_ioctl(struct inode *inode, struct file *file, | |||
382 | int val = 0; | 418 | int val = 0; |
383 | 419 | ||
384 | if (debug > 1) | 420 | if (debug > 1) |
385 | saa7134_print_ioctl(dev->name,cmd); | 421 | saa7134_oss_print_ioctl(dev->name,cmd); |
386 | switch (cmd) { | 422 | switch (cmd) { |
387 | case OSS_GETVERSION: | 423 | case OSS_GETVERSION: |
388 | return put_user(SOUND_VERSION, p); | 424 | return put_user(SOUND_VERSION, p); |
@@ -678,7 +714,7 @@ static int mixer_ioctl(struct inode *inode, struct file *file, | |||
678 | int __user *p = argp; | 714 | int __user *p = argp; |
679 | 715 | ||
680 | if (debug > 1) | 716 | if (debug > 1) |
681 | saa7134_print_ioctl(dev->name,cmd); | 717 | saa7134_oss_print_ioctl(dev->name,cmd); |
682 | switch (cmd) { | 718 | switch (cmd) { |
683 | case OSS_GETVERSION: | 719 | case OSS_GETVERSION: |
684 | return put_user(SOUND_VERSION, p); | 720 | return put_user(SOUND_VERSION, p); |
diff --git a/drivers/media/video/saa7134/saa7134-video.c b/drivers/media/video/saa7134/saa7134-video.c index 45c852df13ed..adfa8fe49a11 100644 --- a/drivers/media/video/saa7134/saa7134-video.c +++ b/drivers/media/video/saa7134/saa7134-video.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include "saa7134-reg.h" | 30 | #include "saa7134-reg.h" |
31 | #include "saa7134.h" | 31 | #include "saa7134.h" |
32 | #include <media/v4l2-common.h> | ||
32 | 33 | ||
33 | /* Include V4L1 specific functions. Should be removed soon */ | 34 | /* Include V4L1 specific functions. Should be removed soon */ |
34 | #include <linux/videodev.h> | 35 | #include <linux/videodev.h> |
@@ -1689,7 +1690,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1689 | int err; | 1690 | int err; |
1690 | 1691 | ||
1691 | if (video_debug > 1) | 1692 | if (video_debug > 1) |
1692 | saa7134_print_ioctl(dev->name,cmd); | 1693 | v4l_print_ioctl(dev->name,cmd); |
1693 | 1694 | ||
1694 | switch (cmd) { | 1695 | switch (cmd) { |
1695 | case VIDIOC_S_CTRL: | 1696 | case VIDIOC_S_CTRL: |
@@ -2142,7 +2143,7 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
2142 | struct saa7134_dev *dev = fh->dev; | 2143 | struct saa7134_dev *dev = fh->dev; |
2143 | 2144 | ||
2144 | if (video_debug > 1) | 2145 | if (video_debug > 1) |
2145 | saa7134_print_ioctl(dev->name,cmd); | 2146 | v4l_print_ioctl(dev->name,cmd); |
2146 | switch (cmd) { | 2147 | switch (cmd) { |
2147 | case VIDIOC_QUERYCAP: | 2148 | case VIDIOC_QUERYCAP: |
2148 | { | 2149 | { |
@@ -2262,6 +2263,7 @@ static struct file_operations video_fops = | |||
2262 | .poll = video_poll, | 2263 | .poll = video_poll, |
2263 | .mmap = video_mmap, | 2264 | .mmap = video_mmap, |
2264 | .ioctl = video_ioctl, | 2265 | .ioctl = video_ioctl, |
2266 | .compat_ioctl = v4l_compat_ioctl32, | ||
2265 | .llseek = no_llseek, | 2267 | .llseek = no_llseek, |
2266 | }; | 2268 | }; |
2267 | 2269 | ||
@@ -2271,6 +2273,7 @@ static struct file_operations radio_fops = | |||
2271 | .open = video_open, | 2273 | .open = video_open, |
2272 | .release = video_release, | 2274 | .release = video_release, |
2273 | .ioctl = radio_ioctl, | 2275 | .ioctl = radio_ioctl, |
2276 | .compat_ioctl = v4l_compat_ioctl32, | ||
2274 | .llseek = no_llseek, | 2277 | .llseek = no_llseek, |
2275 | }; | 2278 | }; |
2276 | 2279 | ||
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h index add49db1ad41..e70eae8d29bb 100644 --- a/drivers/media/video/saa7134/saa7134.h +++ b/drivers/media/video/saa7134/saa7134.h | |||
@@ -37,6 +37,9 @@ | |||
37 | #include <media/ir-common.h> | 37 | #include <media/ir-common.h> |
38 | #include <media/ir-kbd-i2c.h> | 38 | #include <media/ir-kbd-i2c.h> |
39 | #include <media/video-buf.h> | 39 | #include <media/video-buf.h> |
40 | #include <sound/driver.h> | ||
41 | #include <sound/core.h> | ||
42 | #include <sound/pcm.h> | ||
40 | #include <media/video-buf-dvb.h> | 43 | #include <media/video-buf-dvb.h> |
41 | 44 | ||
42 | #ifndef TRUE | 45 | #ifndef TRUE |
@@ -47,10 +50,6 @@ | |||
47 | #endif | 50 | #endif |
48 | #define UNSET (-1U) | 51 | #define UNSET (-1U) |
49 | 52 | ||
50 | #include <sound/driver.h> | ||
51 | #include <sound/core.h> | ||
52 | #include <sound/pcm.h> | ||
53 | |||
54 | /* ----------------------------------------------------------- */ | 53 | /* ----------------------------------------------------------- */ |
55 | /* enums */ | 54 | /* enums */ |
56 | 55 | ||
@@ -209,6 +208,8 @@ struct saa7134_format { | |||
209 | #define SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV 80 | 208 | #define SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV 80 |
210 | #define SAA7134_BOARD_PHILIPS_TIGER 81 | 209 | #define SAA7134_BOARD_PHILIPS_TIGER 81 |
211 | #define SAA7134_BOARD_MSI_TVATANYWHERE_PLUS 82 | 210 | #define SAA7134_BOARD_MSI_TVATANYWHERE_PLUS 82 |
211 | #define SAA7134_BOARD_CINERGY250PCI 83 | ||
212 | #define SAA7134_BOARD_FLYDVB_TRIO 84 | ||
212 | 213 | ||
213 | #define SAA7134_MAXBOARDS 8 | 214 | #define SAA7134_MAXBOARDS 8 |
214 | #define SAA7134_INPUT_MAX 8 | 215 | #define SAA7134_INPUT_MAX 8 |
@@ -546,7 +547,6 @@ struct saa7134_dev { | |||
546 | 547 | ||
547 | extern struct list_head saa7134_devlist; | 548 | extern struct list_head saa7134_devlist; |
548 | 549 | ||
549 | void saa7134_print_ioctl(char *name, unsigned int cmd); | ||
550 | void saa7134_track_gpio(struct saa7134_dev *dev, char *msg); | 550 | void saa7134_track_gpio(struct saa7134_dev *dev, char *msg); |
551 | 551 | ||
552 | #define SAA7134_PGTABLE_SIZE 4096 | 552 | #define SAA7134_PGTABLE_SIZE 4096 |