diff options
author | Peter Naulls <peter@chocky.org> | 2006-08-08 08:10:05 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-09-26 10:53:17 -0400 |
commit | d1009bd733a9324baff74611e0635e17fce4dfa2 (patch) | |
tree | 1a24068f7ad17615b950717514d7996a1f136d5f /drivers/media/video | |
parent | 5dbaa2cb757545f8238319d55aa75cc8fabc8212 (diff) |
V4L/DVB (4361): Cx88: add support for Norwood PCI TV Tuner (non-pro)
This patch adds support for Norwood PCI TV Tuner (non-pro)
Signed-off-by: Peter Naulls <peter@chocky.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 20 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-core.c | 2 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 17 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 1 |
4 files changed, 38 insertions, 2 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index afd50b465df7..83bfcecee2d3 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1231,6 +1231,26 @@ struct cx88_board cx88_boards[] = { | |||
1231 | .gpio0 = 0x84bf, | 1231 | .gpio0 = 0x84bf, |
1232 | }}, | 1232 | }}, |
1233 | }, | 1233 | }, |
1234 | [CX88_BOARD_NORWOOD_MICRO] = { | ||
1235 | .name = "Norwood Micro TV Tuner", | ||
1236 | .tuner_type = TUNER_TNF_5335MF, | ||
1237 | .radio_type = UNSET, | ||
1238 | .tuner_addr = ADDR_UNSET, | ||
1239 | .radio_addr = ADDR_UNSET, | ||
1240 | .input = {{ | ||
1241 | .type = CX88_VMUX_TELEVISION, | ||
1242 | .vmux = 0, | ||
1243 | .gpio0 = 0x0709, | ||
1244 | },{ | ||
1245 | .type = CX88_VMUX_COMPOSITE1, | ||
1246 | .vmux = 1, | ||
1247 | .gpio0 = 0x070b, | ||
1248 | },{ | ||
1249 | .type = CX88_VMUX_SVIDEO, | ||
1250 | .vmux = 2, | ||
1251 | .gpio0 = 0x070b, | ||
1252 | }}, | ||
1253 | }, | ||
1234 | }; | 1254 | }; |
1235 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 1255 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); |
1236 | 1256 | ||
diff --git a/drivers/media/video/cx88/cx88-core.c b/drivers/media/video/cx88/cx88-core.c index 973d3f39b2d5..d72e177607a7 100644 --- a/drivers/media/video/cx88/cx88-core.c +++ b/drivers/media/video/cx88/cx88-core.c | |||
@@ -105,7 +105,7 @@ static u32* cx88_risc_field(u32 *rp, struct scatterlist *sglist, | |||
105 | *(rp++)=cpu_to_le32(sg_dma_address(sg)+offset); | 105 | *(rp++)=cpu_to_le32(sg_dma_address(sg)+offset); |
106 | offset+=bpl; | 106 | offset+=bpl; |
107 | } else { | 107 | } else { |
108 | /* scanline needs to be splitted */ | 108 | /* scanline needs to be split */ |
109 | todo = bpl; | 109 | todo = bpl; |
110 | *(rp++)=cpu_to_le32(RISC_WRITE|RISC_SOL| | 110 | *(rp++)=cpu_to_le32(RISC_WRITE|RISC_SOL| |
111 | (sg_dma_len(sg)-offset)); | 111 | (sg_dma_len(sg)-offset)); |
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c index c25564648993..3049bd5b5a48 100644 --- a/drivers/media/video/cx88/cx88-input.c +++ b/drivers/media/video/cx88/cx88-input.c | |||
@@ -107,7 +107,15 @@ static void cx88_ir_handle_key(struct cx88_IR *ir) | |||
107 | (gpio & ir->mask_keydown) ? " down" : "", | 107 | (gpio & ir->mask_keydown) ? " down" : "", |
108 | (gpio & ir->mask_keyup) ? " up" : ""); | 108 | (gpio & ir->mask_keyup) ? " up" : ""); |
109 | 109 | ||
110 | if (ir->mask_keydown) { | 110 | if (ir->core->board == CX88_BOARD_NORWOOD_MICRO) { |
111 | u32 gpio_key = cx_read(MO_GP0_IO); | ||
112 | |||
113 | data = (data << 4) | ((gpio_key & 0xf0) >> 4); | ||
114 | |||
115 | ir_input_keydown(ir->input, &ir->ir, data, data); | ||
116 | ir_input_nokey(ir->input, &ir->ir); | ||
117 | |||
118 | } else if (ir->mask_keydown) { | ||
111 | /* bit set on keydown */ | 119 | /* bit set on keydown */ |
112 | if (gpio & ir->mask_keydown) { | 120 | if (gpio & ir->mask_keydown) { |
113 | ir_input_keydown(ir->input, &ir->ir, data, data); | 121 | ir_input_keydown(ir->input, &ir->ir, data, data); |
@@ -248,6 +256,13 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
248 | ir_type = IR_TYPE_PD; | 256 | ir_type = IR_TYPE_PD; |
249 | ir->sampling = 0xff00; /* address */ | 257 | ir->sampling = 0xff00; /* address */ |
250 | break; | 258 | break; |
259 | case CX88_BOARD_NORWOOD_MICRO: | ||
260 | ir_codes = ir_codes_norwood; | ||
261 | ir->gpio_addr = MO_GP1_IO; | ||
262 | ir->mask_keycode = 0x0e; | ||
263 | ir->mask_keyup = 0x80; | ||
264 | ir->polling = 50; /* ms */ | ||
265 | break; | ||
251 | case CX88_BOARD_NPGTECH_REALTV_TOP10FM: | 266 | case CX88_BOARD_NPGTECH_REALTV_TOP10FM: |
252 | ir_codes = ir_codes_npgtech; | 267 | ir_codes = ir_codes_npgtech; |
253 | ir->gpio_addr = MO_GP0_IO; | 268 | ir->gpio_addr = MO_GP0_IO; |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index ce441e27f214..0405d6d0157a 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -198,6 +198,7 @@ extern struct sram_channel cx88_sram_channels[]; | |||
198 | #define CX88_BOARD_WINFAST_DTV2000H 51 | 198 | #define CX88_BOARD_WINFAST_DTV2000H 51 |
199 | #define CX88_BOARD_GENIATECH_DVBS 52 | 199 | #define CX88_BOARD_GENIATECH_DVBS 52 |
200 | #define CX88_BOARD_HAUPPAUGE_HVR3000 53 | 200 | #define CX88_BOARD_HAUPPAUGE_HVR3000 53 |
201 | #define CX88_BOARD_NORWOOD_MICRO 54 | ||
201 | 202 | ||
202 | enum cx88_itype { | 203 | enum cx88_itype { |
203 | CX88_VMUX_COMPOSITE1 = 1, | 204 | CX88_VMUX_COMPOSITE1 = 1, |