diff options
author | Uwe Bugla <uwe.bugla@gmx.de> | 2009-03-29 06:46:58 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 11:43:47 -0400 |
commit | 1589a993f074124c3edfff03656e910bb472eeaa (patch) | |
tree | a4be3dc715f569de56014a3b23b6171e09ae3639 /drivers/media/dvb/b2c2 | |
parent | 7def728f558c99489cc89f4c5d62dd64dc0289b4 (diff) |
V4L/DVB (11287): Code cleanup (passes checkpatch now) of the b2c2-flexcop-drivers 1/2
This patch cleans up the source code of the b2c2 flexcop-driver. It is the first of a total of two.
The code is now passing the checkpatch-script.
Signed-off-by: Uwe Bugla <uwe.bugla@gmx.de>
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/b2c2')
-rw-r--r-- | drivers/media/dvb/b2c2/Makefile | 1 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-common.h | 64 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-dma.c | 27 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-eeprom.c | 47 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-fe-tuner.c | 6 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-hw-filter.c | 171 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-i2c.c | 49 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-misc.c | 68 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-reg.h | 21 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-sram.c | 112 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-usb.h | 62 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop.c | 85 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop.h | 20 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop_ibi_value_be.h | 7 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop_ibi_value_le.h | 7 |
15 files changed, 353 insertions, 394 deletions
diff --git a/drivers/media/dvb/b2c2/Makefile b/drivers/media/dvb/b2c2/Makefile index d9db066f9854..b97cf7208a18 100644 --- a/drivers/media/dvb/b2c2/Makefile +++ b/drivers/media/dvb/b2c2/Makefile | |||
@@ -2,7 +2,6 @@ b2c2-flexcop-objs = flexcop.o flexcop-fe-tuner.o flexcop-i2c.o \ | |||
2 | flexcop-sram.o flexcop-eeprom.o flexcop-misc.o flexcop-hw-filter.o | 2 | flexcop-sram.o flexcop-eeprom.o flexcop-misc.o flexcop-hw-filter.o |
3 | obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o | 3 | obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o |
4 | 4 | ||
5 | |||
6 | ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),) | 5 | ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),) |
7 | b2c2-flexcop-objs += flexcop-dma.o | 6 | b2c2-flexcop-objs += flexcop-dma.o |
8 | endif | 7 | endif |
diff --git a/drivers/media/dvb/b2c2/flexcop-common.h b/drivers/media/dvb/b2c2/flexcop-common.h index 8ce06336e76f..3e1c472092ab 100644 --- a/drivers/media/dvb/b2c2/flexcop-common.h +++ b/drivers/media/dvb/b2c2/flexcop-common.h | |||
@@ -28,11 +28,14 @@ | |||
28 | 28 | ||
29 | /* Steal from usb.h */ | 29 | /* Steal from usb.h */ |
30 | #undef err | 30 | #undef err |
31 | #define err(format, arg...) printk(KERN_ERR FC_LOG_PREFIX ": " format "\n" , ## arg) | 31 | #define err(format, arg...) \ |
32 | printk(KERN_ERR FC_LOG_PREFIX ": " format "\n" , ## arg) | ||
32 | #undef info | 33 | #undef info |
33 | #define info(format, arg...) printk(KERN_INFO FC_LOG_PREFIX ": " format "\n" , ## arg) | 34 | #define info(format, arg...) \ |
35 | printk(KERN_INFO FC_LOG_PREFIX ": " format "\n" , ## arg) | ||
34 | #undef warn | 36 | #undef warn |
35 | #define warn(format, arg...) printk(KERN_WARNING FC_LOG_PREFIX ": " format "\n" , ## arg) | 37 | #define warn(format, arg...) \ |
38 | printk(KERN_WARNING FC_LOG_PREFIX ": " format "\n" , ## arg) | ||
36 | 39 | ||
37 | struct flexcop_dma { | 40 | struct flexcop_dma { |
38 | struct pci_dev *pdev; | 41 | struct pci_dev *pdev; |
@@ -91,16 +94,14 @@ struct flexcop_device { | |||
91 | int fullts_streaming_state; | 94 | int fullts_streaming_state; |
92 | 95 | ||
93 | /* bus specific callbacks */ | 96 | /* bus specific callbacks */ |
94 | flexcop_ibi_value (*read_ibi_reg) (struct flexcop_device *, flexcop_ibi_register); | 97 | flexcop_ibi_value(*read_ibi_reg) (struct flexcop_device *, |
95 | int (*write_ibi_reg) (struct flexcop_device *, flexcop_ibi_register, flexcop_ibi_value); | 98 | flexcop_ibi_register); |
96 | 99 | int (*write_ibi_reg) (struct flexcop_device *, | |
97 | 100 | flexcop_ibi_register, flexcop_ibi_value); | |
98 | int (*i2c_request) (struct flexcop_i2c_adapter*, | 101 | int (*i2c_request) (struct flexcop_i2c_adapter *, |
99 | flexcop_access_op_t, u8 chipaddr, u8 addr, u8 *buf, u16 len); | 102 | flexcop_access_op_t, u8 chipaddr, u8 addr, u8 *buf, u16 len); |
100 | int (*stream_control) (struct flexcop_device*, int); | 103 | int (*stream_control) (struct flexcop_device *, int); |
101 | |||
102 | int (*get_mac_addr) (struct flexcop_device *fc, int extended); | 104 | int (*get_mac_addr) (struct flexcop_device *fc, int extended); |
103 | |||
104 | void *bus_specific; | 105 | void *bus_specific; |
105 | }; | 106 | }; |
106 | 107 | ||
@@ -111,22 +112,28 @@ void flexcop_pass_dmx_data(struct flexcop_device *fc, u8 *buf, u32 len); | |||
111 | void flexcop_pass_dmx_packets(struct flexcop_device *fc, u8 *buf, u32 no); | 112 | void flexcop_pass_dmx_packets(struct flexcop_device *fc, u8 *buf, u32 no); |
112 | 113 | ||
113 | struct flexcop_device *flexcop_device_kmalloc(size_t bus_specific_len); | 114 | struct flexcop_device *flexcop_device_kmalloc(size_t bus_specific_len); |
114 | void flexcop_device_kfree(struct flexcop_device*); | 115 | void flexcop_device_kfree(struct flexcop_device *); |
115 | 116 | ||
116 | int flexcop_device_initialize(struct flexcop_device*); | 117 | int flexcop_device_initialize(struct flexcop_device *); |
117 | void flexcop_device_exit(struct flexcop_device *fc); | 118 | void flexcop_device_exit(struct flexcop_device *fc); |
118 | |||
119 | void flexcop_reset_block_300(struct flexcop_device *fc); | 119 | void flexcop_reset_block_300(struct flexcop_device *fc); |
120 | 120 | ||
121 | /* from flexcop-dma.c */ | 121 | /* from flexcop-dma.c */ |
122 | int flexcop_dma_allocate(struct pci_dev *pdev, struct flexcop_dma *dma, u32 size); | 122 | int flexcop_dma_allocate(struct pci_dev *pdev, |
123 | struct flexcop_dma *dma, u32 size); | ||
123 | void flexcop_dma_free(struct flexcop_dma *dma); | 124 | void flexcop_dma_free(struct flexcop_dma *dma); |
124 | 125 | ||
125 | int flexcop_dma_control_timer_irq(struct flexcop_device *fc, flexcop_dma_index_t no, int onoff); | 126 | int flexcop_dma_control_timer_irq(struct flexcop_device *fc, |
126 | int flexcop_dma_control_size_irq(struct flexcop_device *fc, flexcop_dma_index_t no, int onoff); | 127 | flexcop_dma_index_t no, int onoff); |
127 | int flexcop_dma_config(struct flexcop_device *fc, struct flexcop_dma *dma, flexcop_dma_index_t dma_idx); | 128 | int flexcop_dma_control_size_irq(struct flexcop_device *fc, |
128 | int flexcop_dma_xfer_control(struct flexcop_device *fc, flexcop_dma_index_t dma_idx, flexcop_dma_addr_index_t index, int onoff); | 129 | flexcop_dma_index_t no, int onoff); |
129 | int flexcop_dma_config_timer(struct flexcop_device *fc, flexcop_dma_index_t dma_idx, u8 cycles); | 130 | int flexcop_dma_config(struct flexcop_device *fc, struct flexcop_dma *dma, |
131 | flexcop_dma_index_t dma_idx); | ||
132 | int flexcop_dma_xfer_control(struct flexcop_device *fc, | ||
133 | flexcop_dma_index_t dma_idx, flexcop_dma_addr_index_t index, | ||
134 | int onoff); | ||
135 | int flexcop_dma_config_timer(struct flexcop_device *fc, | ||
136 | flexcop_dma_index_t dma_idx, u8 cycles); | ||
130 | 137 | ||
131 | /* from flexcop-eeprom.c */ | 138 | /* from flexcop-eeprom.c */ |
132 | /* the PCI part uses this call to get the MAC address, the USB part has its own */ | 139 | /* the PCI part uses this call to get the MAC address, the USB part has its own */ |
@@ -141,13 +148,15 @@ int flexcop_i2c_request(struct flexcop_i2c_adapter*, flexcop_access_op_t, | |||
141 | u8 chipaddr, u8 addr, u8 *buf, u16 len); | 148 | u8 chipaddr, u8 addr, u8 *buf, u16 len); |
142 | 149 | ||
143 | /* from flexcop-sram.c */ | 150 | /* from flexcop-sram.c */ |
144 | int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target); | 151 | int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, |
152 | flexcop_sram_dest_target_t target); | ||
145 | void flexcop_wan_set_speed(struct flexcop_device *fc, flexcop_wan_speed_t s); | 153 | void flexcop_wan_set_speed(struct flexcop_device *fc, flexcop_wan_speed_t s); |
146 | void flexcop_sram_ctrl(struct flexcop_device *fc, int usb_wan, int sramdma, int maximumfill); | 154 | void flexcop_sram_ctrl(struct flexcop_device *fc, |
155 | int usb_wan, int sramdma, int maximumfill); | ||
147 | 156 | ||
148 | /* global prototypes for the flexcop-chip */ | 157 | /* global prototypes for the flexcop-chip */ |
149 | /* from flexcop-fe-tuner.c */ | 158 | /* from flexcop-fe-tuner.c */ |
150 | int flexcop_frontend_init(struct flexcop_device *card); | 159 | int flexcop_frontend_init(struct flexcop_device *fc); |
151 | void flexcop_frontend_exit(struct flexcop_device *fc); | 160 | void flexcop_frontend_exit(struct flexcop_device *fc); |
152 | 161 | ||
153 | /* from flexcop-i2c.c */ | 162 | /* from flexcop-i2c.c */ |
@@ -159,11 +168,14 @@ int flexcop_sram_init(struct flexcop_device *fc); | |||
159 | 168 | ||
160 | /* from flexcop-misc.c */ | 169 | /* from flexcop-misc.c */ |
161 | void flexcop_determine_revision(struct flexcop_device *fc); | 170 | void flexcop_determine_revision(struct flexcop_device *fc); |
162 | void flexcop_device_name(struct flexcop_device *fc,const char *prefix,const char *suffix); | 171 | void flexcop_device_name(struct flexcop_device *fc, |
163 | void flexcop_dump_reg(struct flexcop_device *fc, flexcop_ibi_register reg, int num); | 172 | const char *prefix, const char *suffix); |
173 | void flexcop_dump_reg(struct flexcop_device *fc, | ||
174 | flexcop_ibi_register reg, int num); | ||
164 | 175 | ||
165 | /* from flexcop-hw-filter.c */ | 176 | /* from flexcop-hw-filter.c */ |
166 | int flexcop_pid_feed_control(struct flexcop_device *fc, struct dvb_demux_feed *dvbdmxfeed, int onoff); | 177 | int flexcop_pid_feed_control(struct flexcop_device *fc, |
178 | struct dvb_demux_feed *dvbdmxfeed, int onoff); | ||
167 | void flexcop_hw_filter_init(struct flexcop_device *fc); | 179 | void flexcop_hw_filter_init(struct flexcop_device *fc); |
168 | 180 | ||
169 | void flexcop_smc_ctrl(struct flexcop_device *fc, int onoff); | 181 | void flexcop_smc_ctrl(struct flexcop_device *fc, int onoff); |
diff --git a/drivers/media/dvb/b2c2/flexcop-dma.c b/drivers/media/dvb/b2c2/flexcop-dma.c index 26f0011a5078..2881e0d956ad 100644 --- a/drivers/media/dvb/b2c2/flexcop-dma.c +++ b/drivers/media/dvb/b2c2/flexcop-dma.c | |||
@@ -1,13 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop-dma.c - configuring and controlling the DMA of the FlexCop |
4 | * flexcop-dma.c - methods for configuring and controlling the DMA of the FlexCop. | 4 | * see flexcop.c for copyright information |
5 | * | ||
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #include "flexcop.h" | 6 | #include "flexcop.h" |
9 | 7 | ||
10 | int flexcop_dma_allocate(struct pci_dev *pdev, struct flexcop_dma *dma, u32 size) | 8 | int flexcop_dma_allocate(struct pci_dev *pdev, |
9 | struct flexcop_dma *dma, u32 size) | ||
11 | { | 10 | { |
12 | u8 *tcpu; | 11 | u8 *tcpu; |
13 | dma_addr_t tdma = 0; | 12 | dma_addr_t tdma = 0; |
@@ -32,7 +31,8 @@ EXPORT_SYMBOL(flexcop_dma_allocate); | |||
32 | 31 | ||
33 | void flexcop_dma_free(struct flexcop_dma *dma) | 32 | void flexcop_dma_free(struct flexcop_dma *dma) |
34 | { | 33 | { |
35 | pci_free_consistent(dma->pdev, dma->size*2,dma->cpu_addr0, dma->dma_addr0); | 34 | pci_free_consistent(dma->pdev, dma->size*2, |
35 | dma->cpu_addr0, dma->dma_addr0); | ||
36 | memset(dma,0,sizeof(struct flexcop_dma)); | 36 | memset(dma,0,sizeof(struct flexcop_dma)); |
37 | } | 37 | } |
38 | EXPORT_SYMBOL(flexcop_dma_free); | 38 | EXPORT_SYMBOL(flexcop_dma_free); |
@@ -44,8 +44,8 @@ int flexcop_dma_config(struct flexcop_device *fc, | |||
44 | flexcop_ibi_value v0x0,v0x4,v0xc; | 44 | flexcop_ibi_value v0x0,v0x4,v0xc; |
45 | v0x0.raw = v0x4.raw = v0xc.raw = 0; | 45 | v0x0.raw = v0x4.raw = v0xc.raw = 0; |
46 | 46 | ||
47 | v0x0.dma_0x0.dma_address0 = dma->dma_addr0 >> 2; | 47 | v0x0.dma_0x0.dma_address0 = dma->dma_addr0 >> 2; |
48 | v0xc.dma_0xc.dma_address1 = dma->dma_addr1 >> 2; | 48 | v0xc.dma_0xc.dma_address1 = dma->dma_addr1 >> 2; |
49 | v0x4.dma_0x4_write.dma_addr_size = dma->size / 4; | 49 | v0x4.dma_0x4_write.dma_addr_size = dma->size / 4; |
50 | 50 | ||
51 | if ((dma_idx & FC_DMA_1) == dma_idx) { | 51 | if ((dma_idx & FC_DMA_1) == dma_idx) { |
@@ -57,7 +57,8 @@ int flexcop_dma_config(struct flexcop_device *fc, | |||
57 | fc->write_ibi_reg(fc,dma2_014,v0x4); | 57 | fc->write_ibi_reg(fc,dma2_014,v0x4); |
58 | fc->write_ibi_reg(fc,dma2_01c,v0xc); | 58 | fc->write_ibi_reg(fc,dma2_01c,v0xc); |
59 | } else { | 59 | } else { |
60 | err("either DMA1 or DMA2 can be configured at the within one flexcop_dma_config call."); | 60 | err("either DMA1 or DMA2 can be configured within one " |
61 | "flexcop_dma_config call."); | ||
61 | return -EINVAL; | 62 | return -EINVAL; |
62 | } | 63 | } |
63 | 64 | ||
@@ -81,7 +82,8 @@ int flexcop_dma_xfer_control(struct flexcop_device *fc, | |||
81 | r0x0 = dma2_010; | 82 | r0x0 = dma2_010; |
82 | r0xc = dma2_01c; | 83 | r0xc = dma2_01c; |
83 | } else { | 84 | } else { |
84 | err("either transfer DMA1 or DMA2 can be started within one flexcop_dma_xfer_control call."); | 85 | err("either transfer DMA1 or DMA2 can be started within one " |
86 | "flexcop_dma_xfer_control call."); | ||
85 | return -EINVAL; | 87 | return -EINVAL; |
86 | } | 88 | } |
87 | 89 | ||
@@ -154,8 +156,7 @@ EXPORT_SYMBOL(flexcop_dma_control_timer_irq); | |||
154 | 156 | ||
155 | /* 1 cycles = 1.97 msec */ | 157 | /* 1 cycles = 1.97 msec */ |
156 | int flexcop_dma_config_timer(struct flexcop_device *fc, | 158 | int flexcop_dma_config_timer(struct flexcop_device *fc, |
157 | flexcop_dma_index_t dma_idx, | 159 | flexcop_dma_index_t dma_idx, u8 cycles) |
158 | u8 cycles) | ||
159 | { | 160 | { |
160 | flexcop_ibi_register r = (dma_idx & FC_DMA_1) ? dma1_004 : dma2_014; | 161 | flexcop_ibi_register r = (dma_idx & FC_DMA_1) ? dma1_004 : dma2_014; |
161 | flexcop_ibi_value v = fc->read_ibi_reg(fc,r); | 162 | flexcop_ibi_value v = fc->read_ibi_reg(fc,r); |
diff --git a/drivers/media/dvb/b2c2/flexcop-eeprom.c b/drivers/media/dvb/b2c2/flexcop-eeprom.c index 8a8ae8a3e6ba..a25373a9bd84 100644 --- a/drivers/media/dvb/b2c2/flexcop-eeprom.c +++ b/drivers/media/dvb/b2c2/flexcop-eeprom.c | |||
@@ -1,9 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop-eeprom.c - eeprom access methods (currently only MAC address reading) |
4 | * flexcop-eeprom.c - eeprom access methods (currently only MAC address reading is used) | 4 | * see flexcop.c for copyright information |
5 | * | ||
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #include "flexcop.h" | 6 | #include "flexcop.h" |
9 | 7 | ||
@@ -14,17 +12,17 @@ static int eeprom_write(struct adapter *adapter, u16 addr, u8 *buf, u16 len) | |||
14 | return flex_i2c_write(adapter, 0x20000000, 0x50, addr, buf, len); | 12 | return flex_i2c_write(adapter, 0x20000000, 0x50, addr, buf, len); |
15 | } | 13 | } |
16 | 14 | ||
17 | static int eeprom_lrc_write(struct adapter *adapter, u32 addr, u32 len, u8 *wbuf, u8 *rbuf, int retries) | 15 | static int eeprom_lrc_write(struct adapter *adapter, u32 addr, |
16 | u32 len, u8 *wbuf, u8 *rbuf, int retries) | ||
18 | { | 17 | { |
19 | int i; | 18 | int i; |
20 | 19 | ||
21 | for (i = 0; i < retries; i++) { | 20 | for (i = 0; i < retries; i++) { |
22 | if (eeprom_write(adapter, addr, wbuf, len) == len) { | 21 | if (eeprom_write(adapter, addr, wbuf, len) == len) { |
23 | if (eeprom_lrc_read(adapter, addr, len, rbuf, retries) == 1) | 22 | if (eeprom_lrc_read(adapter, addr, len, rbuf, retries) == 1) |
24 | return 1; | 23 | return 1; |
25 | } | 24 | } |
26 | } | 25 | } |
27 | |||
28 | return 0; | 26 | return 0; |
29 | } | 27 | } |
30 | 28 | ||
@@ -39,12 +37,10 @@ static int eeprom_writeKey(struct adapter *adapter, u8 *key, u32 len) | |||
39 | return 0; | 37 | return 0; |
40 | 38 | ||
41 | memcpy(wbuf, key, len); | 39 | memcpy(wbuf, key, len); |
42 | |||
43 | wbuf[16] = 0; | 40 | wbuf[16] = 0; |
44 | wbuf[17] = 0; | 41 | wbuf[17] = 0; |
45 | wbuf[18] = 0; | 42 | wbuf[18] = 0; |
46 | wbuf[19] = calc_lrc(wbuf, 19); | 43 | wbuf[19] = calc_lrc(wbuf, 19); |
47 | |||
48 | return eeprom_lrc_write(adapter, 0x3e4, 20, wbuf, rbuf, 4); | 44 | return eeprom_lrc_write(adapter, 0x3e4, 20, wbuf, rbuf, 4); |
49 | } | 45 | } |
50 | 46 | ||
@@ -59,7 +55,6 @@ static int eeprom_readKey(struct adapter *adapter, u8 *key, u32 len) | |||
59 | return 0; | 55 | return 0; |
60 | 56 | ||
61 | memcpy(key, buf, len); | 57 | memcpy(key, buf, len); |
62 | |||
63 | return 1; | 58 | return 1; |
64 | } | 59 | } |
65 | 60 | ||
@@ -74,9 +69,7 @@ static char eeprom_set_mac_addr(struct adapter *adapter, char type, u8 *mac) | |||
74 | tmp[3] = mac[5]; | 69 | tmp[3] = mac[5]; |
75 | tmp[4] = mac[6]; | 70 | tmp[4] = mac[6]; |
76 | tmp[5] = mac[7]; | 71 | tmp[5] = mac[7]; |
77 | |||
78 | } else { | 72 | } else { |
79 | |||
80 | tmp[0] = mac[0]; | 73 | tmp[0] = mac[0]; |
81 | tmp[1] = mac[1]; | 74 | tmp[1] = mac[1]; |
82 | tmp[2] = mac[2]; | 75 | tmp[2] = mac[2]; |
@@ -90,11 +83,11 @@ static char eeprom_set_mac_addr(struct adapter *adapter, char type, u8 *mac) | |||
90 | 83 | ||
91 | if (eeprom_write(adapter, 0x3f8, tmp, 8) == 8) | 84 | if (eeprom_write(adapter, 0x3f8, tmp, 8) == 8) |
92 | return 1; | 85 | return 1; |
93 | |||
94 | return 0; | 86 | return 0; |
95 | } | 87 | } |
96 | 88 | ||
97 | static int flexcop_eeprom_read(struct flexcop_device *fc, u16 addr, u8 *buf, u16 len) | 89 | static int flexcop_eeprom_read(struct flexcop_device *fc, |
90 | u16 addr, u8 *buf, u16 len) | ||
98 | { | 91 | { |
99 | return fc->i2c_request(fc,FC_READ,FC_I2C_PORT_EEPROM,0x50,addr,buf,len); | 92 | return fc->i2c_request(fc,FC_READ,FC_I2C_PORT_EEPROM,0x50,addr,buf,len); |
100 | } | 93 | } |
@@ -110,7 +103,8 @@ static u8 calc_lrc(u8 *buf, int len) | |||
110 | return sum; | 103 | return sum; |
111 | } | 104 | } |
112 | 105 | ||
113 | static int flexcop_eeprom_request(struct flexcop_device *fc, flexcop_access_op_t op, u16 addr, u8 *buf, u16 len, int retries) | 106 | static int flexcop_eeprom_request(struct flexcop_device *fc, |
107 | flexcop_access_op_t op, u16 addr, u8 *buf, u16 len, int retries) | ||
114 | { | 108 | { |
115 | int i,ret = 0; | 109 | int i,ret = 0; |
116 | u8 chipaddr = 0x50 | ((addr >> 8) & 3); | 110 | u8 chipaddr = 0x50 | ((addr >> 8) & 3); |
@@ -123,7 +117,8 @@ static int flexcop_eeprom_request(struct flexcop_device *fc, flexcop_access_op_t | |||
123 | return ret; | 117 | return ret; |
124 | } | 118 | } |
125 | 119 | ||
126 | static int flexcop_eeprom_lrc_read(struct flexcop_device *fc, u16 addr, u8 *buf, u16 len, int retries) | 120 | static int flexcop_eeprom_lrc_read(struct flexcop_device *fc, u16 addr, |
121 | u8 *buf, u16 len, int retries) | ||
127 | { | 122 | { |
128 | int ret = flexcop_eeprom_request(fc, FC_READ, addr, buf, len, retries); | 123 | int ret = flexcop_eeprom_request(fc, FC_READ, addr, buf, len, retries); |
129 | if (ret == 0) | 124 | if (ret == 0) |
@@ -133,8 +128,7 @@ static int flexcop_eeprom_lrc_read(struct flexcop_device *fc, u16 addr, u8 *buf, | |||
133 | } | 128 | } |
134 | 129 | ||
135 | /* JJ's comment about extended == 1: it is not presently used anywhere but was | 130 | /* JJ's comment about extended == 1: it is not presently used anywhere but was |
136 | * added to the low-level functions for possible support of EUI64 | 131 | * added to the low-level functions for possible support of EUI64 */ |
137 | */ | ||
138 | int flexcop_eeprom_check_mac_addr(struct flexcop_device *fc, int extended) | 132 | int flexcop_eeprom_check_mac_addr(struct flexcop_device *fc, int extended) |
139 | { | 133 | { |
140 | u8 buf[8]; | 134 | u8 buf[8]; |
@@ -142,12 +136,9 @@ int flexcop_eeprom_check_mac_addr(struct flexcop_device *fc, int extended) | |||
142 | 136 | ||
143 | if ((ret = flexcop_eeprom_lrc_read(fc,0x3f8,buf,8,4)) == 0) { | 137 | if ((ret = flexcop_eeprom_lrc_read(fc,0x3f8,buf,8,4)) == 0) { |
144 | if (extended != 0) { | 138 | if (extended != 0) { |
145 | err("TODO: extended (EUI64) MAC addresses aren't completely supported yet"); | 139 | err("TODO: extended (EUI64) MAC addresses aren't " |
140 | "completely supported yet"); | ||
146 | ret = -EINVAL; | 141 | ret = -EINVAL; |
147 | /* memcpy(fc->dvb_adapter.proposed_mac,buf,3); | ||
148 | mac[3] = 0xfe; | ||
149 | mac[4] = 0xff; | ||
150 | memcpy(&fc->dvb_adapter.proposed_mac[3],&buf[5],3); */ | ||
151 | } else | 142 | } else |
152 | memcpy(fc->dvb_adapter.proposed_mac,buf,6); | 143 | memcpy(fc->dvb_adapter.proposed_mac,buf,6); |
153 | } | 144 | } |
diff --git a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c index 5cded3708541..f7afab5944cf 100644 --- a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c +++ b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c | |||
@@ -592,14 +592,14 @@ int flexcop_frontend_init(struct flexcop_device *fc) | |||
592 | fc->fe_sleep = ops->sleep; | 592 | fc->fe_sleep = ops->sleep; |
593 | ops->sleep = flexcop_sleep; | 593 | ops->sleep = flexcop_sleep; |
594 | 594 | ||
595 | fc->dev_type = FC_SKY; | 595 | fc->dev_type = FC_SKY_REV26; |
596 | goto fe_found; | 596 | goto fe_found; |
597 | } | 597 | } |
598 | 598 | ||
599 | /* try the air dvb-t (mt352/Samsung tdtc9251dh0(??)) */ | 599 | /* try the air dvb-t (mt352/Samsung tdtc9251dh0(??)) */ |
600 | fc->fe = dvb_attach(mt352_attach, &samsung_tdtc9251dh0_config, i2c); | 600 | fc->fe = dvb_attach(mt352_attach, &samsung_tdtc9251dh0_config, i2c); |
601 | if (fc->fe != NULL) { | 601 | if (fc->fe != NULL) { |
602 | fc->dev_type = FC_AIR_DVB; | 602 | fc->dev_type = FC_AIR_DVBT; |
603 | fc->fe->ops.tuner_ops.calc_regs = samsung_tdtc9251dh0_calc_regs; | 603 | fc->fe->ops.tuner_ops.calc_regs = samsung_tdtc9251dh0_calc_regs; |
604 | goto fe_found; | 604 | goto fe_found; |
605 | } | 605 | } |
@@ -653,7 +653,7 @@ int flexcop_frontend_init(struct flexcop_device *fc) | |||
653 | fc->fe_sleep = ops->sleep; | 653 | fc->fe_sleep = ops->sleep; |
654 | ops->sleep = flexcop_sleep; | 654 | ops->sleep = flexcop_sleep; |
655 | 655 | ||
656 | fc->dev_type = FC_SKY_OLD; | 656 | fc->dev_type = FC_SKY_REV23; |
657 | goto fe_found; | 657 | goto fe_found; |
658 | } | 658 | } |
659 | 659 | ||
diff --git a/drivers/media/dvb/b2c2/flexcop-hw-filter.c b/drivers/media/dvb/b2c2/flexcop-hw-filter.c index 451974ba32f3..77e45475f4c7 100644 --- a/drivers/media/dvb/b2c2/flexcop-hw-filter.c +++ b/drivers/media/dvb/b2c2/flexcop-hw-filter.c | |||
@@ -1,33 +1,30 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop-hw-filter.c - pid and mac address filtering and control functions |
4 | * flexcop-hw-filter.c - pid and mac address filtering and corresponding control functions. | 4 | * see flexcop.c for copyright information |
5 | * | ||
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #include "flexcop.h" | 6 | #include "flexcop.h" |
9 | 7 | ||
10 | static void flexcop_rcv_data_ctrl(struct flexcop_device *fc, int onoff) | 8 | static void flexcop_rcv_data_ctrl(struct flexcop_device *fc, int onoff) |
11 | { | 9 | { |
12 | flexcop_set_ibi_value(ctrl_208,Rcv_Data_sig,onoff); | 10 | flexcop_set_ibi_value(ctrl_208, Rcv_Data_sig, onoff); |
13 | 11 | deb_ts("rcv_data is now: '%s'\n", onoff ? "on" : "off"); | |
14 | deb_ts("rcv_data is now: '%s'\n",onoff ? "on" : "off"); | ||
15 | } | 12 | } |
16 | 13 | ||
17 | void flexcop_smc_ctrl(struct flexcop_device *fc, int onoff) | 14 | void flexcop_smc_ctrl(struct flexcop_device *fc, int onoff) |
18 | { | 15 | { |
19 | flexcop_set_ibi_value(ctrl_208,SMC_Enable_sig,onoff); | 16 | flexcop_set_ibi_value(ctrl_208, SMC_Enable_sig, onoff); |
20 | } | 17 | } |
21 | 18 | ||
22 | static void flexcop_null_filter_ctrl(struct flexcop_device *fc, int onoff) | 19 | static void flexcop_null_filter_ctrl(struct flexcop_device *fc, int onoff) |
23 | { | 20 | { |
24 | flexcop_set_ibi_value(ctrl_208,Null_filter_sig,onoff); | 21 | flexcop_set_ibi_value(ctrl_208, Null_filter_sig, onoff); |
25 | } | 22 | } |
26 | 23 | ||
27 | void flexcop_set_mac_filter(struct flexcop_device *fc, u8 mac[6]) | 24 | void flexcop_set_mac_filter(struct flexcop_device *fc, u8 mac[6]) |
28 | { | 25 | { |
29 | flexcop_ibi_value v418,v41c; | 26 | flexcop_ibi_value v418, v41c; |
30 | v41c = fc->read_ibi_reg(fc,mac_address_41c); | 27 | v41c = fc->read_ibi_reg(fc, mac_address_41c); |
31 | 28 | ||
32 | v418.mac_address_418.MAC1 = mac[0]; | 29 | v418.mac_address_418.MAC1 = mac[0]; |
33 | v418.mac_address_418.MAC2 = mac[1]; | 30 | v418.mac_address_418.MAC2 = mac[1]; |
@@ -36,27 +33,28 @@ void flexcop_set_mac_filter(struct flexcop_device *fc, u8 mac[6]) | |||
36 | v41c.mac_address_41c.MAC7 = mac[4]; | 33 | v41c.mac_address_41c.MAC7 = mac[4]; |
37 | v41c.mac_address_41c.MAC8 = mac[5]; | 34 | v41c.mac_address_41c.MAC8 = mac[5]; |
38 | 35 | ||
39 | fc->write_ibi_reg(fc,mac_address_418,v418); | 36 | fc->write_ibi_reg(fc, mac_address_418, v418); |
40 | fc->write_ibi_reg(fc,mac_address_41c,v41c); | 37 | fc->write_ibi_reg(fc, mac_address_41c, v41c); |
41 | } | 38 | } |
42 | 39 | ||
43 | void flexcop_mac_filter_ctrl(struct flexcop_device *fc, int onoff) | 40 | void flexcop_mac_filter_ctrl(struct flexcop_device *fc, int onoff) |
44 | { | 41 | { |
45 | flexcop_set_ibi_value(ctrl_208,MAC_filter_Mode_sig,onoff); | 42 | flexcop_set_ibi_value(ctrl_208, MAC_filter_Mode_sig, onoff); |
46 | } | 43 | } |
47 | 44 | ||
48 | static void flexcop_pid_group_filter(struct flexcop_device *fc, u16 pid, u16 mask) | 45 | static void flexcop_pid_group_filter(struct flexcop_device *fc, |
46 | u16 pid, u16 mask) | ||
49 | { | 47 | { |
50 | /* index_reg_310.extra_index_reg need to 0 or 7 to work */ | 48 | /* index_reg_310.extra_index_reg need to 0 or 7 to work */ |
51 | flexcop_ibi_value v30c; | 49 | flexcop_ibi_value v30c; |
52 | v30c.pid_filter_30c_ext_ind_0_7.Group_PID = pid; | 50 | v30c.pid_filter_30c_ext_ind_0_7.Group_PID = pid; |
53 | v30c.pid_filter_30c_ext_ind_0_7.Group_mask = mask; | 51 | v30c.pid_filter_30c_ext_ind_0_7.Group_mask = mask; |
54 | fc->write_ibi_reg(fc,pid_filter_30c,v30c); | 52 | fc->write_ibi_reg(fc, pid_filter_30c, v30c); |
55 | } | 53 | } |
56 | 54 | ||
57 | static void flexcop_pid_group_filter_ctrl(struct flexcop_device *fc, int onoff) | 55 | static void flexcop_pid_group_filter_ctrl(struct flexcop_device *fc, int onoff) |
58 | { | 56 | { |
59 | flexcop_set_ibi_value(ctrl_208,Mask_filter_sig,onoff); | 57 | flexcop_set_ibi_value(ctrl_208, Mask_filter_sig, onoff); |
60 | } | 58 | } |
61 | 59 | ||
62 | /* this fancy define reduces the code size of the quite similar PID controlling of | 60 | /* this fancy define reduces the code size of the quite similar PID controlling of |
@@ -65,91 +63,112 @@ static void flexcop_pid_group_filter_ctrl(struct flexcop_device *fc, int onoff) | |||
65 | 63 | ||
66 | #define pid_ctrl(vregname,field,enablefield,trans_field,transval) \ | 64 | #define pid_ctrl(vregname,field,enablefield,trans_field,transval) \ |
67 | flexcop_ibi_value vpid = fc->read_ibi_reg(fc, vregname), \ | 65 | flexcop_ibi_value vpid = fc->read_ibi_reg(fc, vregname), \ |
68 | v208 = fc->read_ibi_reg(fc, ctrl_208); \ | 66 | v208 = fc->read_ibi_reg(fc, ctrl_208); \ |
69 | \ | 67 | vpid.vregname.field = onoff ? pid : 0x1fff; \ |
70 | vpid.vregname.field = onoff ? pid : 0x1fff; \ | 68 | vpid.vregname.trans_field = transval; \ |
71 | vpid.vregname.trans_field = transval; \ | 69 | v208.ctrl_208.enablefield = onoff; \ |
72 | v208.ctrl_208.enablefield = onoff; \ | 70 | fc->write_ibi_reg(fc, vregname, vpid); \ |
73 | \ | 71 | fc->write_ibi_reg(fc, ctrl_208, v208); |
74 | fc->write_ibi_reg(fc,vregname,vpid); \ | ||
75 | fc->write_ibi_reg(fc,ctrl_208,v208); | ||
76 | 72 | ||
77 | static void flexcop_pid_Stream1_PID_ctrl(struct flexcop_device *fc, u16 pid, int onoff) | 73 | static void flexcop_pid_Stream1_PID_ctrl(struct flexcop_device *fc, |
74 | u16 pid, int onoff) | ||
78 | { | 75 | { |
79 | pid_ctrl(pid_filter_300,Stream1_PID,Stream1_filter_sig,Stream1_trans,0); | 76 | pid_ctrl(pid_filter_300, Stream1_PID, Stream1_filter_sig, |
77 | Stream1_trans, 0); | ||
80 | } | 78 | } |
81 | 79 | ||
82 | static void flexcop_pid_Stream2_PID_ctrl(struct flexcop_device *fc, u16 pid, int onoff) | 80 | static void flexcop_pid_Stream2_PID_ctrl(struct flexcop_device *fc, |
81 | u16 pid, int onoff) | ||
83 | { | 82 | { |
84 | pid_ctrl(pid_filter_300,Stream2_PID,Stream2_filter_sig,Stream2_trans,0); | 83 | pid_ctrl(pid_filter_300, Stream2_PID, Stream2_filter_sig, |
84 | Stream2_trans, 0); | ||
85 | } | 85 | } |
86 | 86 | ||
87 | static void flexcop_pid_PCR_PID_ctrl(struct flexcop_device *fc, u16 pid, int onoff) | 87 | static void flexcop_pid_PCR_PID_ctrl(struct flexcop_device *fc, |
88 | u16 pid, int onoff) | ||
88 | { | 89 | { |
89 | pid_ctrl(pid_filter_304,PCR_PID,PCR_filter_sig,PCR_trans,0); | 90 | pid_ctrl(pid_filter_304, PCR_PID, PCR_filter_sig, PCR_trans, 0); |
90 | } | 91 | } |
91 | 92 | ||
92 | static void flexcop_pid_PMT_PID_ctrl(struct flexcop_device *fc, u16 pid, int onoff) | 93 | static void flexcop_pid_PMT_PID_ctrl(struct flexcop_device *fc, |
94 | u16 pid, int onoff) | ||
93 | { | 95 | { |
94 | pid_ctrl(pid_filter_304,PMT_PID,PMT_filter_sig,PMT_trans,0); | 96 | pid_ctrl(pid_filter_304, PMT_PID, PMT_filter_sig, PMT_trans, 0); |
95 | } | 97 | } |
96 | 98 | ||
97 | static void flexcop_pid_EMM_PID_ctrl(struct flexcop_device *fc, u16 pid, int onoff) | 99 | static void flexcop_pid_EMM_PID_ctrl(struct flexcop_device *fc, |
100 | u16 pid, int onoff) | ||
98 | { | 101 | { |
99 | pid_ctrl(pid_filter_308,EMM_PID,EMM_filter_sig,EMM_trans,0); | 102 | pid_ctrl(pid_filter_308, EMM_PID, EMM_filter_sig, EMM_trans, 0); |
100 | } | 103 | } |
101 | 104 | ||
102 | static void flexcop_pid_ECM_PID_ctrl(struct flexcop_device *fc, u16 pid, int onoff) | 105 | static void flexcop_pid_ECM_PID_ctrl(struct flexcop_device *fc, |
106 | u16 pid, int onoff) | ||
103 | { | 107 | { |
104 | pid_ctrl(pid_filter_308,ECM_PID,ECM_filter_sig,ECM_trans,0); | 108 | pid_ctrl(pid_filter_308, ECM_PID, ECM_filter_sig, ECM_trans, 0); |
105 | } | 109 | } |
106 | 110 | ||
107 | static void flexcop_pid_control(struct flexcop_device *fc, int index, u16 pid,int onoff) | 111 | static void flexcop_pid_control(struct flexcop_device *fc, |
112 | int index, u16 pid, int onoff) | ||
108 | { | 113 | { |
109 | if (pid == 0x2000) | 114 | if (pid == 0x2000) |
110 | return; | 115 | return; |
111 | 116 | ||
112 | deb_ts("setting pid: %5d %04x at index %d '%s'\n",pid,pid,index,onoff ? "on" : "off"); | 117 | deb_ts("setting pid: %5d %04x at index %d '%s'\n", |
118 | pid, pid, index, onoff ? "on" : "off"); | ||
113 | 119 | ||
114 | /* We could use bit magic here to reduce source code size. | 120 | /* We could use bit magic here to reduce source code size. |
115 | * I decided against it, but to use the real register names */ | 121 | * I decided against it, but to use the real register names */ |
116 | switch (index) { | 122 | switch (index) { |
117 | case 0: flexcop_pid_Stream1_PID_ctrl(fc,pid,onoff); break; | 123 | case 0: |
118 | case 1: flexcop_pid_Stream2_PID_ctrl(fc,pid,onoff); break; | 124 | flexcop_pid_Stream1_PID_ctrl(fc, pid, onoff); |
119 | case 2: flexcop_pid_PCR_PID_ctrl(fc,pid,onoff); break; | 125 | break; |
120 | case 3: flexcop_pid_PMT_PID_ctrl(fc,pid,onoff); break; | 126 | case 1: |
121 | case 4: flexcop_pid_EMM_PID_ctrl(fc,pid,onoff); break; | 127 | flexcop_pid_Stream2_PID_ctrl(fc, pid, onoff); |
122 | case 5: flexcop_pid_ECM_PID_ctrl(fc,pid,onoff); break; | 128 | break; |
123 | default: | 129 | case 2: |
124 | if (fc->has_32_hw_pid_filter && index < 38) { | 130 | flexcop_pid_PCR_PID_ctrl(fc, pid, onoff); |
125 | flexcop_ibi_value vpid,vid; | 131 | break; |
126 | 132 | case 3: | |
127 | /* set the index */ | 133 | flexcop_pid_PMT_PID_ctrl(fc, pid, onoff); |
128 | vid = fc->read_ibi_reg(fc,index_reg_310); | 134 | break; |
129 | vid.index_reg_310.index_reg = index - 6; | 135 | case 4: |
130 | fc->write_ibi_reg(fc,index_reg_310, vid); | 136 | flexcop_pid_EMM_PID_ctrl(fc, pid, onoff); |
131 | 137 | break; | |
132 | vpid = fc->read_ibi_reg(fc,pid_n_reg_314); | 138 | case 5: |
133 | vpid.pid_n_reg_314.PID = onoff ? pid : 0x1fff; | 139 | flexcop_pid_ECM_PID_ctrl(fc, pid, onoff); |
134 | vpid.pid_n_reg_314.PID_enable_bit = onoff; | 140 | break; |
135 | fc->write_ibi_reg(fc,pid_n_reg_314, vpid); | 141 | default: |
136 | } | 142 | if (fc->has_32_hw_pid_filter && index < 38) { |
137 | break; | 143 | flexcop_ibi_value vpid, vid; |
144 | |||
145 | /* set the index */ | ||
146 | vid = fc->read_ibi_reg(fc, index_reg_310); | ||
147 | vid.index_reg_310.index_reg = index - 6; | ||
148 | fc->write_ibi_reg(fc, index_reg_310, vid); | ||
149 | |||
150 | vpid = fc->read_ibi_reg(fc, pid_n_reg_314); | ||
151 | vpid.pid_n_reg_314.PID = onoff ? pid : 0x1fff; | ||
152 | vpid.pid_n_reg_314.PID_enable_bit = onoff; | ||
153 | fc->write_ibi_reg(fc, pid_n_reg_314, vpid); | ||
154 | } | ||
155 | break; | ||
138 | } | 156 | } |
139 | } | 157 | } |
140 | 158 | ||
141 | static int flexcop_toggle_fullts_streaming(struct flexcop_device *fc,int onoff) | 159 | static int flexcop_toggle_fullts_streaming(struct flexcop_device *fc, int onoff) |
142 | { | 160 | { |
143 | if (fc->fullts_streaming_state != onoff) { | 161 | if (fc->fullts_streaming_state != onoff) { |
144 | deb_ts("%s full TS transfer\n",onoff ? "enabling" : "disabling"); | 162 | deb_ts("%s full TS transfer\n",onoff ? "enabling" : "disabling"); |
145 | flexcop_pid_group_filter(fc, 0, 0x1fe0 * (!onoff)); | 163 | flexcop_pid_group_filter(fc, 0, 0x1fe0 * (!onoff)); |
146 | flexcop_pid_group_filter_ctrl(fc,onoff); | 164 | flexcop_pid_group_filter_ctrl(fc, onoff); |
147 | fc->fullts_streaming_state = onoff; | 165 | fc->fullts_streaming_state = onoff; |
148 | } | 166 | } |
149 | return 0; | 167 | return 0; |
150 | } | 168 | } |
151 | 169 | ||
152 | int flexcop_pid_feed_control(struct flexcop_device *fc, struct dvb_demux_feed *dvbdmxfeed, int onoff) | 170 | int flexcop_pid_feed_control(struct flexcop_device *fc, |
171 | struct dvb_demux_feed *dvbdmxfeed, int onoff) | ||
153 | { | 172 | { |
154 | int max_pid_filter = 6 + fc->has_32_hw_pid_filter*32; | 173 | int max_pid_filter = 6 + fc->has_32_hw_pid_filter*32; |
155 | 174 | ||
@@ -164,24 +183,25 @@ int flexcop_pid_feed_control(struct flexcop_device *fc, struct dvb_demux_feed *d | |||
164 | * - or the requested pid is 0x2000 */ | 183 | * - or the requested pid is 0x2000 */ |
165 | 184 | ||
166 | if (!fc->pid_filtering && fc->feedcount == onoff) | 185 | if (!fc->pid_filtering && fc->feedcount == onoff) |
167 | flexcop_toggle_fullts_streaming(fc,onoff); | 186 | flexcop_toggle_fullts_streaming(fc, onoff); |
168 | 187 | ||
169 | if (fc->pid_filtering) { | 188 | if (fc->pid_filtering) { |
170 | flexcop_pid_control(fc,dvbdmxfeed->index,dvbdmxfeed->pid,onoff); | 189 | flexcop_pid_control \ |
190 | (fc, dvbdmxfeed->index, dvbdmxfeed->pid, onoff); | ||
171 | 191 | ||
172 | if (fc->extra_feedcount > 0) | 192 | if (fc->extra_feedcount > 0) |
173 | flexcop_toggle_fullts_streaming(fc,1); | 193 | flexcop_toggle_fullts_streaming(fc, 1); |
174 | else if (dvbdmxfeed->pid == 0x2000) | 194 | else if (dvbdmxfeed->pid == 0x2000) |
175 | flexcop_toggle_fullts_streaming(fc,onoff); | 195 | flexcop_toggle_fullts_streaming(fc, onoff); |
176 | else | 196 | else |
177 | flexcop_toggle_fullts_streaming(fc,0); | 197 | flexcop_toggle_fullts_streaming(fc, 0); |
178 | } | 198 | } |
179 | 199 | ||
180 | /* if it was the first or last feed request change the stream-status */ | 200 | /* if it was the first or last feed request change the stream-status */ |
181 | if (fc->feedcount == onoff) { | 201 | if (fc->feedcount == onoff) { |
182 | flexcop_rcv_data_ctrl(fc,onoff); | 202 | flexcop_rcv_data_ctrl(fc, onoff); |
183 | if (fc->stream_control) /* device specific stream control */ | 203 | if (fc->stream_control) /* device specific stream control */ |
184 | fc->stream_control(fc,onoff); | 204 | fc->stream_control(fc, onoff); |
185 | 205 | ||
186 | /* feeding stopped -> reset the flexcop filter*/ | 206 | /* feeding stopped -> reset the flexcop filter*/ |
187 | if (onoff == 0) { | 207 | if (onoff == 0) { |
@@ -189,7 +209,6 @@ int flexcop_pid_feed_control(struct flexcop_device *fc, struct dvb_demux_feed *d | |||
189 | flexcop_hw_filter_init(fc); | 209 | flexcop_hw_filter_init(fc); |
190 | } | 210 | } |
191 | } | 211 | } |
192 | |||
193 | return 0; | 212 | return 0; |
194 | } | 213 | } |
195 | EXPORT_SYMBOL(flexcop_pid_feed_control); | 214 | EXPORT_SYMBOL(flexcop_pid_feed_control); |
@@ -199,15 +218,15 @@ void flexcop_hw_filter_init(struct flexcop_device *fc) | |||
199 | int i; | 218 | int i; |
200 | flexcop_ibi_value v; | 219 | flexcop_ibi_value v; |
201 | for (i = 0; i < 6 + 32*fc->has_32_hw_pid_filter; i++) | 220 | for (i = 0; i < 6 + 32*fc->has_32_hw_pid_filter; i++) |
202 | flexcop_pid_control(fc,i,0x1fff,0); | 221 | flexcop_pid_control(fc, i, 0x1fff, 0); |
203 | 222 | ||
204 | flexcop_pid_group_filter(fc, 0, 0x1fe0); | 223 | flexcop_pid_group_filter(fc, 0, 0x1fe0); |
205 | flexcop_pid_group_filter_ctrl(fc,0); | 224 | flexcop_pid_group_filter_ctrl(fc, 0); |
206 | 225 | ||
207 | v = fc->read_ibi_reg(fc,pid_filter_308); | 226 | v = fc->read_ibi_reg(fc, pid_filter_308); |
208 | v.pid_filter_308.EMM_filter_4 = 1; | 227 | v.pid_filter_308.EMM_filter_4 = 1; |
209 | v.pid_filter_308.EMM_filter_6 = 0; | 228 | v.pid_filter_308.EMM_filter_6 = 0; |
210 | fc->write_ibi_reg(fc,pid_filter_308,v); | 229 | fc->write_ibi_reg(fc, pid_filter_308, v); |
211 | 230 | ||
212 | flexcop_null_filter_ctrl(fc, 1); | 231 | flexcop_null_filter_ctrl(fc, 1); |
213 | } | 232 | } |
diff --git a/drivers/media/dvb/b2c2/flexcop-i2c.c b/drivers/media/dvb/b2c2/flexcop-i2c.c index a0cfde18e640..e2bed5076485 100644 --- a/drivers/media/dvb/b2c2/flexcop-i2c.c +++ b/drivers/media/dvb/b2c2/flexcop-i2c.c | |||
@@ -1,17 +1,14 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | ||
4 | * flexcop-i2c.c - flexcop internal 2Wire bus (I2C) and dvb i2c initialization | 3 | * flexcop-i2c.c - flexcop internal 2Wire bus (I2C) and dvb i2c initialization |
5 | * | 4 | * see flexcop.c for copyright information |
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #include "flexcop.h" | 6 | #include "flexcop.h" |
9 | 7 | ||
10 | #define FC_MAX_I2C_RETRIES 100000 | 8 | #define FC_MAX_I2C_RETRIES 100000 |
11 | 9 | ||
12 | /* #define DUMP_I2C_MESSAGES */ | 10 | static int flexcop_i2c_operation(struct flexcop_device *fc, |
13 | 11 | flexcop_ibi_value *r100) | |
14 | static int flexcop_i2c_operation(struct flexcop_device *fc, flexcop_ibi_value *r100) | ||
15 | { | 12 | { |
16 | int i; | 13 | int i; |
17 | flexcop_ibi_value r; | 14 | flexcop_ibi_value r; |
@@ -26,7 +23,7 @@ static int flexcop_i2c_operation(struct flexcop_device *fc, flexcop_ibi_value *r | |||
26 | r = fc->read_ibi_reg(fc, tw_sm_c_100); | 23 | r = fc->read_ibi_reg(fc, tw_sm_c_100); |
27 | 24 | ||
28 | if (!r.tw_sm_c_100.no_base_addr_ack_error) { | 25 | if (!r.tw_sm_c_100.no_base_addr_ack_error) { |
29 | if (r.tw_sm_c_100.st_done) { /* && !r.tw_sm_c_100.working_start */ | 26 | if (r.tw_sm_c_100.st_done) { |
30 | *r100 = r; | 27 | *r100 = r; |
31 | deb_i2c("i2c success\n"); | 28 | deb_i2c("i2c success\n"); |
32 | return 0; | 29 | return 0; |
@@ -36,15 +33,17 @@ static int flexcop_i2c_operation(struct flexcop_device *fc, flexcop_ibi_value *r | |||
36 | return -EREMOTEIO; | 33 | return -EREMOTEIO; |
37 | } | 34 | } |
38 | } | 35 | } |
39 | deb_i2c("tried %d times i2c operation, never finished or too many ack errors.\n",i); | 36 | deb_i2c("tried %d times i2c operation, " |
37 | "never finished or too many ack errors.\n", i); | ||
40 | return -EREMOTEIO; | 38 | return -EREMOTEIO; |
41 | } | 39 | } |
42 | 40 | ||
43 | static int flexcop_i2c_read4(struct flexcop_i2c_adapter *i2c, | 41 | static int flexcop_i2c_read4(struct flexcop_i2c_adapter *i2c, |
44 | flexcop_ibi_value r100, u8 *buf) | 42 | flexcop_ibi_value r100, u8 *buf) |
45 | { | 43 | { |
46 | flexcop_ibi_value r104; | 44 | flexcop_ibi_value r104; |
47 | int len = r100.tw_sm_c_100.total_bytes, /* remember total_bytes is buflen-1 */ | 45 | int len = r100.tw_sm_c_100.total_bytes, |
46 | /* remember total_bytes is buflen-1 */ | ||
48 | ret; | 47 | ret; |
49 | 48 | ||
50 | /* work-around to have CableStar2 and SkyStar2 rev 2.7 work | 49 | /* work-around to have CableStar2 and SkyStar2 rev 2.7 work |
@@ -81,11 +80,11 @@ static int flexcop_i2c_read4(struct flexcop_i2c_adapter *i2c, | |||
81 | if (len > 1) buf[2] = r104.tw_sm_c_104.data3_reg; | 80 | if (len > 1) buf[2] = r104.tw_sm_c_104.data3_reg; |
82 | if (len > 2) buf[3] = r104.tw_sm_c_104.data4_reg; | 81 | if (len > 2) buf[3] = r104.tw_sm_c_104.data4_reg; |
83 | } | 82 | } |
84 | |||
85 | return 0; | 83 | return 0; |
86 | } | 84 | } |
87 | 85 | ||
88 | static int flexcop_i2c_write4(struct flexcop_device *fc, flexcop_ibi_value r100, u8 *buf) | 86 | static int flexcop_i2c_write4(struct flexcop_device *fc, |
87 | flexcop_ibi_value r100, u8 *buf) | ||
89 | { | 88 | { |
90 | flexcop_ibi_value r104; | 89 | flexcop_ibi_value r104; |
91 | int len = r100.tw_sm_c_100.total_bytes; /* remember total_bytes is buflen-1 */ | 90 | int len = r100.tw_sm_c_100.total_bytes; /* remember total_bytes is buflen-1 */ |
@@ -93,7 +92,6 @@ static int flexcop_i2c_write4(struct flexcop_device *fc, flexcop_ibi_value r100, | |||
93 | 92 | ||
94 | /* there is at least one byte, otherwise we wouldn't be here */ | 93 | /* there is at least one byte, otherwise we wouldn't be here */ |
95 | r100.tw_sm_c_100.data1_reg = buf[0]; | 94 | r100.tw_sm_c_100.data1_reg = buf[0]; |
96 | |||
97 | r104.tw_sm_c_104.data2_reg = len > 0 ? buf[1] : 0; | 95 | r104.tw_sm_c_104.data2_reg = len > 0 ? buf[1] : 0; |
98 | r104.tw_sm_c_104.data3_reg = len > 1 ? buf[2] : 0; | 96 | r104.tw_sm_c_104.data3_reg = len > 1 ? buf[2] : 0; |
99 | r104.tw_sm_c_104.data4_reg = len > 2 ? buf[3] : 0; | 97 | r104.tw_sm_c_104.data4_reg = len > 2 ? buf[3] : 0; |
@@ -106,7 +104,7 @@ static int flexcop_i2c_write4(struct flexcop_device *fc, flexcop_ibi_value r100, | |||
106 | } | 104 | } |
107 | 105 | ||
108 | int flexcop_i2c_request(struct flexcop_i2c_adapter *i2c, | 106 | int flexcop_i2c_request(struct flexcop_i2c_adapter *i2c, |
109 | flexcop_access_op_t op, u8 chipaddr, u8 addr, u8 *buf, u16 len) | 107 | flexcop_access_op_t op, u8 chipaddr, u8 addr, u8 *buf, u16 len) |
110 | { | 108 | { |
111 | int ret; | 109 | int ret; |
112 | 110 | ||
@@ -129,7 +127,6 @@ int flexcop_i2c_request(struct flexcop_i2c_adapter *i2c, | |||
129 | printk("rd("); | 127 | printk("rd("); |
130 | else | 128 | else |
131 | printk("wr("); | 129 | printk("wr("); |
132 | |||
133 | printk("%02x): %02x ", chipaddr, addr); | 130 | printk("%02x): %02x ", chipaddr, addr); |
134 | #endif | 131 | #endif |
135 | 132 | ||
@@ -175,7 +172,8 @@ int flexcop_i2c_request(struct flexcop_i2c_adapter *i2c, | |||
175 | EXPORT_SYMBOL(flexcop_i2c_request); | 172 | EXPORT_SYMBOL(flexcop_i2c_request); |
176 | 173 | ||
177 | /* master xfer callback for demodulator */ | 174 | /* master xfer callback for demodulator */ |
178 | static int flexcop_master_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num) | 175 | static int flexcop_master_xfer(struct i2c_adapter *i2c_adap, |
176 | struct i2c_msg msgs[], int num) | ||
179 | { | 177 | { |
180 | struct flexcop_i2c_adapter *i2c = i2c_get_adapdata(i2c_adap); | 178 | struct flexcop_i2c_adapter *i2c = i2c_get_adapdata(i2c_adap); |
181 | int i, ret = 0; | 179 | int i, ret = 0; |
@@ -194,12 +192,13 @@ static int flexcop_master_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs | |||
194 | /* reading */ | 192 | /* reading */ |
195 | if (i+1 < num && (msgs[i+1].flags == I2C_M_RD)) { | 193 | if (i+1 < num && (msgs[i+1].flags == I2C_M_RD)) { |
196 | ret = i2c->fc->i2c_request(i2c, FC_READ, msgs[i].addr, | 194 | ret = i2c->fc->i2c_request(i2c, FC_READ, msgs[i].addr, |
197 | msgs[i].buf[0], msgs[i+1].buf, msgs[i+1].len); | 195 | msgs[i].buf[0], msgs[i+1].buf, |
196 | msgs[i+1].len); | ||
198 | i++; /* skip the following message */ | 197 | i++; /* skip the following message */ |
199 | } else /* writing */ | 198 | } else /* writing */ |
200 | ret = i2c->fc->i2c_request(i2c, FC_WRITE, msgs[i].addr, | 199 | ret = i2c->fc->i2c_request(i2c, FC_WRITE, msgs[i].addr, |
201 | msgs[i].buf[0], &msgs[i].buf[1], | 200 | msgs[i].buf[0], &msgs[i].buf[1], |
202 | msgs[i].len - 1); | 201 | msgs[i].len - 1); |
203 | if (ret < 0) { | 202 | if (ret < 0) { |
204 | err("i2c master_xfer failed"); | 203 | err("i2c master_xfer failed"); |
205 | break; | 204 | break; |
@@ -226,23 +225,21 @@ static struct i2c_algorithm flexcop_algo = { | |||
226 | int flexcop_i2c_init(struct flexcop_device *fc) | 225 | int flexcop_i2c_init(struct flexcop_device *fc) |
227 | { | 226 | { |
228 | int ret; | 227 | int ret; |
229 | |||
230 | mutex_init(&fc->i2c_mutex); | 228 | mutex_init(&fc->i2c_mutex); |
231 | 229 | ||
232 | fc->fc_i2c_adap[0].fc = fc; | 230 | fc->fc_i2c_adap[0].fc = fc; |
233 | fc->fc_i2c_adap[1].fc = fc; | 231 | fc->fc_i2c_adap[1].fc = fc; |
234 | fc->fc_i2c_adap[2].fc = fc; | 232 | fc->fc_i2c_adap[2].fc = fc; |
235 | |||
236 | fc->fc_i2c_adap[0].port = FC_I2C_PORT_DEMOD; | 233 | fc->fc_i2c_adap[0].port = FC_I2C_PORT_DEMOD; |
237 | fc->fc_i2c_adap[1].port = FC_I2C_PORT_EEPROM; | 234 | fc->fc_i2c_adap[1].port = FC_I2C_PORT_EEPROM; |
238 | fc->fc_i2c_adap[2].port = FC_I2C_PORT_TUNER; | 235 | fc->fc_i2c_adap[2].port = FC_I2C_PORT_TUNER; |
239 | 236 | ||
240 | strlcpy(fc->fc_i2c_adap[0].i2c_adap.name, "B2C2 FlexCop I2C to demod", | 237 | strlcpy(fc->fc_i2c_adap[0].i2c_adap.name, "B2C2 FlexCop I2C to demod", |
241 | sizeof(fc->fc_i2c_adap[0].i2c_adap.name)); | 238 | sizeof(fc->fc_i2c_adap[0].i2c_adap.name)); |
242 | strlcpy(fc->fc_i2c_adap[1].i2c_adap.name, "B2C2 FlexCop I2C to eeprom", | 239 | strlcpy(fc->fc_i2c_adap[1].i2c_adap.name, "B2C2 FlexCop I2C to eeprom", |
243 | sizeof(fc->fc_i2c_adap[1].i2c_adap.name)); | 240 | sizeof(fc->fc_i2c_adap[1].i2c_adap.name)); |
244 | strlcpy(fc->fc_i2c_adap[2].i2c_adap.name, "B2C2 FlexCop I2C to tuner", | 241 | strlcpy(fc->fc_i2c_adap[2].i2c_adap.name, "B2C2 FlexCop I2C to tuner", |
245 | sizeof(fc->fc_i2c_adap[2].i2c_adap.name)); | 242 | sizeof(fc->fc_i2c_adap[2].i2c_adap.name)); |
246 | 243 | ||
247 | i2c_set_adapdata(&fc->fc_i2c_adap[0].i2c_adap, &fc->fc_i2c_adap[0]); | 244 | i2c_set_adapdata(&fc->fc_i2c_adap[0].i2c_adap, &fc->fc_i2c_adap[0]); |
248 | i2c_set_adapdata(&fc->fc_i2c_adap[1].i2c_adap, &fc->fc_i2c_adap[1]); | 245 | i2c_set_adapdata(&fc->fc_i2c_adap[1].i2c_adap, &fc->fc_i2c_adap[1]); |
@@ -280,7 +277,6 @@ adap_2_failed: | |||
280 | i2c_del_adapter(&fc->fc_i2c_adap[1].i2c_adap); | 277 | i2c_del_adapter(&fc->fc_i2c_adap[1].i2c_adap); |
281 | adap_1_failed: | 278 | adap_1_failed: |
282 | i2c_del_adapter(&fc->fc_i2c_adap[0].i2c_adap); | 279 | i2c_del_adapter(&fc->fc_i2c_adap[0].i2c_adap); |
283 | |||
284 | return ret; | 280 | return ret; |
285 | } | 281 | } |
286 | 282 | ||
@@ -291,6 +287,5 @@ void flexcop_i2c_exit(struct flexcop_device *fc) | |||
291 | i2c_del_adapter(&fc->fc_i2c_adap[1].i2c_adap); | 287 | i2c_del_adapter(&fc->fc_i2c_adap[1].i2c_adap); |
292 | i2c_del_adapter(&fc->fc_i2c_adap[0].i2c_adap); | 288 | i2c_del_adapter(&fc->fc_i2c_adap[0].i2c_adap); |
293 | } | 289 | } |
294 | |||
295 | fc->init_state &= ~FC_STATE_I2C_INIT; | 290 | fc->init_state &= ~FC_STATE_I2C_INIT; |
296 | } | 291 | } |
diff --git a/drivers/media/dvb/b2c2/flexcop-misc.c b/drivers/media/dvb/b2c2/flexcop-misc.c index 93d20e56f909..e56627d2f0f4 100644 --- a/drivers/media/dvb/b2c2/flexcop-misc.c +++ b/drivers/media/dvb/b2c2/flexcop-misc.c | |||
@@ -1,9 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop-misc.c - miscellaneous functions |
4 | * flexcop-misc.c - miscellaneous functions. | 4 | * see flexcop.c for copyright information |
5 | * | ||
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #include "flexcop.h" | 6 | #include "flexcop.h" |
9 | 7 | ||
@@ -12,39 +10,43 @@ void flexcop_determine_revision(struct flexcop_device *fc) | |||
12 | flexcop_ibi_value v = fc->read_ibi_reg(fc,misc_204); | 10 | flexcop_ibi_value v = fc->read_ibi_reg(fc,misc_204); |
13 | 11 | ||
14 | switch (v.misc_204.Rev_N_sig_revision_hi) { | 12 | switch (v.misc_204.Rev_N_sig_revision_hi) { |
15 | case 0x2: | 13 | case 0x2: |
16 | deb_info("found a FlexCopII.\n"); | 14 | deb_info("found a FlexCopII.\n"); |
17 | fc->rev = FLEXCOP_II; | 15 | fc->rev = FLEXCOP_II; |
18 | break; | 16 | break; |
19 | case 0x3: | 17 | case 0x3: |
20 | deb_info("found a FlexCopIIb.\n"); | 18 | deb_info("found a FlexCopIIb.\n"); |
21 | fc->rev = FLEXCOP_IIB; | 19 | fc->rev = FLEXCOP_IIB; |
22 | break; | 20 | break; |
23 | case 0x0: | 21 | case 0x0: |
24 | deb_info("found a FlexCopIII.\n"); | 22 | deb_info("found a FlexCopIII.\n"); |
25 | fc->rev = FLEXCOP_III; | 23 | fc->rev = FLEXCOP_III; |
26 | break; | 24 | break; |
27 | default: | 25 | default: |
28 | err("unkown FlexCop Revision: %x. Please report the linux-dvb@linuxtv.org.",v.misc_204.Rev_N_sig_revision_hi); | 26 | err("unknown FlexCop Revision: %x. Please report this to " |
29 | break; | 27 | "linux-dvb@linuxtv.org.", |
28 | v.misc_204.Rev_N_sig_revision_hi); | ||
29 | break; | ||
30 | } | 30 | } |
31 | 31 | ||
32 | if ((fc->has_32_hw_pid_filter = v.misc_204.Rev_N_sig_caps)) | 32 | if ((fc->has_32_hw_pid_filter = v.misc_204.Rev_N_sig_caps)) |
33 | deb_info("this FlexCop has the additional 32 hardware pid filter.\n"); | 33 | deb_info("this FlexCop has " |
34 | "the additional 32 hardware pid filter.\n"); | ||
34 | else | 35 | else |
35 | deb_info("this FlexCop has only the 6 basic main hardware pid filter.\n"); | 36 | deb_info("this FlexCop has " |
37 | "the 6 basic main hardware pid filter.\n"); | ||
36 | /* bus parts have to decide if hw pid filtering is used or not. */ | 38 | /* bus parts have to decide if hw pid filtering is used or not. */ |
37 | } | 39 | } |
38 | 40 | ||
39 | static const char *flexcop_revision_names[] = { | 41 | static const char *flexcop_revision_names[] = { |
40 | "Unkown chip", | 42 | "Unknown chip", |
41 | "FlexCopII", | 43 | "FlexCopII", |
42 | "FlexCopIIb", | 44 | "FlexCopIIb", |
43 | "FlexCopIII", | 45 | "FlexCopIII", |
44 | }; | 46 | }; |
45 | 47 | ||
46 | static const char *flexcop_device_names[] = { | 48 | static const char *flexcop_device_names[] = { |
47 | "Unkown device", | 49 | "Unknown device", |
48 | "Air2PC/AirStar 2 DVB-T", | 50 | "Air2PC/AirStar 2 DVB-T", |
49 | "Air2PC/AirStar 2 ATSC 1st generation", | 51 | "Air2PC/AirStar 2 ATSC 1st generation", |
50 | "Air2PC/AirStar 2 ATSC 2nd generation", | 52 | "Air2PC/AirStar 2 ATSC 2nd generation", |
@@ -61,21 +63,23 @@ static const char *flexcop_bus_names[] = { | |||
61 | "PCI", | 63 | "PCI", |
62 | }; | 64 | }; |
63 | 65 | ||
64 | void flexcop_device_name(struct flexcop_device *fc,const char *prefix,const | 66 | void flexcop_device_name(struct flexcop_device *fc, |
65 | char *suffix) | 67 | const char *prefix, const char *suffix) |
66 | { | 68 | { |
67 | info("%s '%s' at the '%s' bus controlled by a '%s' %s",prefix, | 69 | info("%s '%s' at the '%s' bus controlled by a '%s' %s", |
68 | flexcop_device_names[fc->dev_type],flexcop_bus_names[fc->bus_type], | 70 | prefix, flexcop_device_names[fc->dev_type], |
69 | flexcop_revision_names[fc->rev],suffix); | 71 | flexcop_bus_names[fc->bus_type], |
72 | flexcop_revision_names[fc->rev], suffix); | ||
70 | } | 73 | } |
71 | 74 | ||
72 | void flexcop_dump_reg(struct flexcop_device *fc, flexcop_ibi_register reg, int num) | 75 | void flexcop_dump_reg(struct flexcop_device *fc, |
76 | flexcop_ibi_register reg, int num) | ||
73 | { | 77 | { |
74 | flexcop_ibi_value v; | 78 | flexcop_ibi_value v; |
75 | int i; | 79 | int i; |
76 | for (i = 0; i < num; i++) { | 80 | for (i = 0; i < num; i++) { |
77 | v = fc->read_ibi_reg(fc,reg+4*i); | 81 | v = fc->read_ibi_reg(fc, reg+4*i); |
78 | deb_rdump("0x%03x: %08x, ",reg+4*i, v.raw); | 82 | deb_rdump("0x%03x: %08x, ", reg+4*i, v.raw); |
79 | } | 83 | } |
80 | deb_rdump("\n"); | 84 | deb_rdump("\n"); |
81 | } | 85 | } |
diff --git a/drivers/media/dvb/b2c2/flexcop-reg.h b/drivers/media/dvb/b2c2/flexcop-reg.h index 7599fccc1a5b..dc4528dcbb98 100644 --- a/drivers/media/dvb/b2c2/flexcop-reg.h +++ b/drivers/media/dvb/b2c2/flexcop-reg.h | |||
@@ -1,14 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | ||
4 | * flexcop-reg.h - register abstraction for FlexCopII, FlexCopIIb and FlexCopIII | 3 | * flexcop-reg.h - register abstraction for FlexCopII, FlexCopIIb and FlexCopIII |
5 | * | 4 | * see flexcop.c for copyright information |
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #ifndef __FLEXCOP_REG_H__ | 6 | #ifndef __FLEXCOP_REG_H__ |
9 | #define __FLEXCOP_REG_H__ | 7 | #define __FLEXCOP_REG_H__ |
10 | 8 | ||
11 | |||
12 | typedef enum { | 9 | typedef enum { |
13 | FLEXCOP_UNK = 0, | 10 | FLEXCOP_UNK = 0, |
14 | FLEXCOP_II, | 11 | FLEXCOP_II, |
@@ -18,13 +15,13 @@ typedef enum { | |||
18 | 15 | ||
19 | typedef enum { | 16 | typedef enum { |
20 | FC_UNK = 0, | 17 | FC_UNK = 0, |
21 | FC_AIR_DVB, | 18 | FC_CABLE, |
19 | FC_AIR_DVBT, | ||
22 | FC_AIR_ATSC1, | 20 | FC_AIR_ATSC1, |
23 | FC_AIR_ATSC2, | 21 | FC_AIR_ATSC2, |
24 | FC_SKY, | ||
25 | FC_SKY_OLD, | ||
26 | FC_CABLE, | ||
27 | FC_AIR_ATSC3, | 22 | FC_AIR_ATSC3, |
23 | FC_SKY_REV23, | ||
24 | FC_SKY_REV26, | ||
28 | FC_SKY_REV27, | 25 | FC_SKY_REV27, |
29 | FC_SKY_REV28, | 26 | FC_SKY_REV28, |
30 | } flexcop_device_type_t; | 27 | } flexcop_device_type_t; |
@@ -36,12 +33,12 @@ typedef enum { | |||
36 | 33 | ||
37 | /* FlexCop IBI Registers */ | 34 | /* FlexCop IBI Registers */ |
38 | #if defined(__LITTLE_ENDIAN) | 35 | #if defined(__LITTLE_ENDIAN) |
39 | #include "flexcop_ibi_value_le.h" | 36 | #include "flexcop_ibi_value_le.h" |
40 | #else | 37 | #else |
41 | #if defined(__BIG_ENDIAN) | 38 | #if defined(__BIG_ENDIAN) |
42 | #include "flexcop_ibi_value_be.h" | 39 | #include "flexcop_ibi_value_be.h" |
43 | #else | 40 | #else |
44 | #error no endian defined | 41 | #error no endian defined |
45 | #endif | 42 | #endif |
46 | #endif | 43 | #endif |
47 | 44 | ||
diff --git a/drivers/media/dvb/b2c2/flexcop-sram.c b/drivers/media/dvb/b2c2/flexcop-sram.c index cda69528548a..f2199e43e803 100644 --- a/drivers/media/dvb/b2c2/flexcop-sram.c +++ b/drivers/media/dvb/b2c2/flexcop-sram.c | |||
@@ -1,45 +1,43 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop-sram.c - functions for controlling the SRAM |
4 | * flexcop-sram.c - functions for controlling the SRAM. | 4 | * see flexcop.c for copyright information |
5 | * | ||
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #include "flexcop.h" | 6 | #include "flexcop.h" |
9 | 7 | ||
10 | static void flexcop_sram_set_chip (struct flexcop_device *fc, flexcop_sram_type_t type) | 8 | static void flexcop_sram_set_chip(struct flexcop_device *fc, |
9 | flexcop_sram_type_t type) | ||
11 | { | 10 | { |
12 | flexcop_set_ibi_value(wan_ctrl_reg_71c,sram_chip,type); | 11 | flexcop_set_ibi_value(wan_ctrl_reg_71c, sram_chip, type); |
13 | } | 12 | } |
14 | 13 | ||
15 | int flexcop_sram_init(struct flexcop_device *fc) | 14 | int flexcop_sram_init(struct flexcop_device *fc) |
16 | { | 15 | { |
17 | switch (fc->rev) { | 16 | switch (fc->rev) { |
18 | case FLEXCOP_II: | 17 | case FLEXCOP_II: |
19 | case FLEXCOP_IIB: | 18 | case FLEXCOP_IIB: |
20 | flexcop_sram_set_chip(fc,FC_SRAM_1_32KB); | 19 | flexcop_sram_set_chip(fc, FC_SRAM_1_32KB); |
21 | break; | 20 | break; |
22 | case FLEXCOP_III: | 21 | case FLEXCOP_III: |
23 | flexcop_sram_set_chip(fc,FC_SRAM_1_48KB); | 22 | flexcop_sram_set_chip(fc, FC_SRAM_1_48KB); |
24 | break; | 23 | break; |
25 | default: | 24 | default: |
26 | return -EINVAL; | 25 | return -EINVAL; |
27 | } | 26 | } |
28 | return 0; | 27 | return 0; |
29 | } | 28 | } |
30 | 29 | ||
31 | int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target) | 30 | int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, |
31 | flexcop_sram_dest_target_t target) | ||
32 | { | 32 | { |
33 | flexcop_ibi_value v; | 33 | flexcop_ibi_value v; |
34 | 34 | v = fc->read_ibi_reg(fc, sram_dest_reg_714); | |
35 | v = fc->read_ibi_reg(fc,sram_dest_reg_714); | ||
36 | 35 | ||
37 | if (fc->rev != FLEXCOP_III && target == FC_SRAM_DEST_TARGET_FC3_CA) { | 36 | if (fc->rev != FLEXCOP_III && target == FC_SRAM_DEST_TARGET_FC3_CA) { |
38 | err("SRAM destination target to available on FlexCopII(b)\n"); | 37 | err("SRAM destination target to available on FlexCopII(b)\n"); |
39 | return -EINVAL; | 38 | return -EINVAL; |
40 | } | 39 | } |
41 | 40 | deb_sram("sram dest: %x target: %x\n", dest, target); | |
42 | deb_sram("sram dest: %x target: %x\n",dest, target); | ||
43 | 41 | ||
44 | if (dest & FC_SRAM_DEST_NET) | 42 | if (dest & FC_SRAM_DEST_NET) |
45 | v.sram_dest_reg_714.NET_Dest = target; | 43 | v.sram_dest_reg_714.NET_Dest = target; |
@@ -154,14 +152,12 @@ static void sram_write_chunk(struct adapter *adapter, u32 addr, u8 *buf, u16 len | |||
154 | else | 152 | else |
155 | bank = 0x10000000; | 153 | bank = 0x10000000; |
156 | } | 154 | } |
157 | |||
158 | flex_sram_write(adapter, bank, addr & 0x7fff, buf, len); | 155 | flex_sram_write(adapter, bank, addr & 0x7fff, buf, len); |
159 | } | 156 | } |
160 | 157 | ||
161 | static void sram_read_chunk(struct adapter *adapter, u32 addr, u8 *buf, u16 len) | 158 | static void sram_read_chunk(struct adapter *adapter, u32 addr, u8 *buf, u16 len) |
162 | { | 159 | { |
163 | u32 bank; | 160 | u32 bank; |
164 | |||
165 | bank = 0; | 161 | bank = 0; |
166 | 162 | ||
167 | if (adapter->dw_sram_type == 0x20000) { | 163 | if (adapter->dw_sram_type == 0x20000) { |
@@ -174,26 +170,22 @@ static void sram_read_chunk(struct adapter *adapter, u32 addr, u8 *buf, u16 len) | |||
174 | else | 170 | else |
175 | bank = 0x10000000; | 171 | bank = 0x10000000; |
176 | } | 172 | } |
177 | |||
178 | flex_sram_read(adapter, bank, addr & 0x7fff, buf, len); | 173 | flex_sram_read(adapter, bank, addr & 0x7fff, buf, len); |
179 | } | 174 | } |
180 | 175 | ||
181 | static void sram_read(struct adapter *adapter, u32 addr, u8 *buf, u32 len) | 176 | static void sram_read(struct adapter *adapter, u32 addr, u8 *buf, u32 len) |
182 | { | 177 | { |
183 | u32 length; | 178 | u32 length; |
184 | |||
185 | while (len != 0) { | 179 | while (len != 0) { |
186 | length = len; | 180 | length = len; |
187 | 181 | /* check if the address range belongs to the same | |
188 | // check if the address range belongs to the same | 182 | * 32K memory chip. If not, the data is read |
189 | // 32K memory chip. If not, the data is read from | 183 | * from one chip at a time */ |
190 | // one chip at a time. | ||
191 | if ((addr >> 0x0f) != ((addr + len - 1) >> 0x0f)) { | 184 | if ((addr >> 0x0f) != ((addr + len - 1) >> 0x0f)) { |
192 | length = (((addr >> 0x0f) + 1) << 0x0f) - addr; | 185 | length = (((addr >> 0x0f) + 1) << 0x0f) - addr; |
193 | } | 186 | } |
194 | 187 | ||
195 | sram_read_chunk(adapter, addr, buf, length); | 188 | sram_read_chunk(adapter, addr, buf, length); |
196 | |||
197 | addr = addr + length; | 189 | addr = addr + length; |
198 | buf = buf + length; | 190 | buf = buf + length; |
199 | len = len - length; | 191 | len = len - length; |
@@ -203,19 +195,17 @@ static void sram_read(struct adapter *adapter, u32 addr, u8 *buf, u32 len) | |||
203 | static void sram_write(struct adapter *adapter, u32 addr, u8 *buf, u32 len) | 195 | static void sram_write(struct adapter *adapter, u32 addr, u8 *buf, u32 len) |
204 | { | 196 | { |
205 | u32 length; | 197 | u32 length; |
206 | |||
207 | while (len != 0) { | 198 | while (len != 0) { |
208 | length = len; | 199 | length = len; |
209 | 200 | ||
210 | // check if the address range belongs to the same | 201 | /* check if the address range belongs to the same |
211 | // 32K memory chip. If not, the data is written to | 202 | * 32K memory chip. If not, the data is |
212 | // one chip at a time. | 203 | * written to one chip at a time */ |
213 | if ((addr >> 0x0f) != ((addr + len - 1) >> 0x0f)) { | 204 | if ((addr >> 0x0f) != ((addr + len - 1) >> 0x0f)) { |
214 | length = (((addr >> 0x0f) + 1) << 0x0f) - addr; | 205 | length = (((addr >> 0x0f) + 1) << 0x0f) - addr; |
215 | } | 206 | } |
216 | 207 | ||
217 | sram_write_chunk(adapter, addr, buf, length); | 208 | sram_write_chunk(adapter, addr, buf, length); |
218 | |||
219 | addr = addr + length; | 209 | addr = addr + length; |
220 | buf = buf + length; | 210 | buf = buf + length; |
221 | len = len - length; | 211 | len = len - length; |
@@ -224,39 +214,29 @@ static void sram_write(struct adapter *adapter, u32 addr, u8 *buf, u32 len) | |||
224 | 214 | ||
225 | static void sram_set_size(struct adapter *adapter, u32 mask) | 215 | static void sram_set_size(struct adapter *adapter, u32 mask) |
226 | { | 216 | { |
227 | write_reg_dw(adapter, 0x71c, (mask | (~0x30000 & read_reg_dw(adapter, 0x71c)))); | 217 | write_reg_dw(adapter, 0x71c, |
218 | (mask | (~0x30000 & read_reg_dw(adapter, 0x71c)))); | ||
228 | } | 219 | } |
229 | 220 | ||
230 | static void sram_init(struct adapter *adapter) | 221 | static void sram_init(struct adapter *adapter) |
231 | { | 222 | { |
232 | u32 tmp; | 223 | u32 tmp; |
233 | |||
234 | tmp = read_reg_dw(adapter, 0x71c); | 224 | tmp = read_reg_dw(adapter, 0x71c); |
235 | |||
236 | write_reg_dw(adapter, 0x71c, 1); | 225 | write_reg_dw(adapter, 0x71c, 1); |
237 | 226 | ||
238 | if (read_reg_dw(adapter, 0x71c) != 0) { | 227 | if (read_reg_dw(adapter, 0x71c) != 0) { |
239 | write_reg_dw(adapter, 0x71c, tmp); | 228 | write_reg_dw(adapter, 0x71c, tmp); |
240 | |||
241 | adapter->dw_sram_type = tmp & 0x30000; | 229 | adapter->dw_sram_type = tmp & 0x30000; |
242 | |||
243 | ddprintk("%s: dw_sram_type = %x\n", __func__, adapter->dw_sram_type); | 230 | ddprintk("%s: dw_sram_type = %x\n", __func__, adapter->dw_sram_type); |
244 | |||
245 | } else { | 231 | } else { |
246 | |||
247 | adapter->dw_sram_type = 0x10000; | 232 | adapter->dw_sram_type = 0x10000; |
248 | |||
249 | ddprintk("%s: dw_sram_type = %x\n", __func__, adapter->dw_sram_type); | 233 | ddprintk("%s: dw_sram_type = %x\n", __func__, adapter->dw_sram_type); |
250 | } | 234 | } |
251 | |||
252 | /* return value is never used? */ | ||
253 | /* return adapter->dw_sram_type; */ | ||
254 | } | 235 | } |
255 | 236 | ||
256 | static int sram_test_location(struct adapter *adapter, u32 mask, u32 addr) | 237 | static int sram_test_location(struct adapter *adapter, u32 mask, u32 addr) |
257 | { | 238 | { |
258 | u8 tmp1, tmp2; | 239 | u8 tmp1, tmp2; |
259 | |||
260 | dprintk("%s: mask = %x, addr = %x\n", __func__, mask, addr); | 240 | dprintk("%s: mask = %x, addr = %x\n", __func__, mask, addr); |
261 | 241 | ||
262 | sram_set_size(adapter, mask); | 242 | sram_set_size(adapter, mask); |
@@ -269,7 +249,6 @@ static int sram_test_location(struct adapter *adapter, u32 mask, u32 addr) | |||
269 | sram_write(adapter, addr + 4, &tmp1, 1); | 249 | sram_write(adapter, addr + 4, &tmp1, 1); |
270 | 250 | ||
271 | tmp2 = 0; | 251 | tmp2 = 0; |
272 | |||
273 | mdelay(20); | 252 | mdelay(20); |
274 | 253 | ||
275 | sram_read(adapter, addr, &tmp2, 1); | 254 | sram_read(adapter, addr, &tmp2, 1); |
@@ -287,7 +266,6 @@ static int sram_test_location(struct adapter *adapter, u32 mask, u32 addr) | |||
287 | sram_write(adapter, addr + 4, &tmp1, 1); | 266 | sram_write(adapter, addr + 4, &tmp1, 1); |
288 | 267 | ||
289 | tmp2 = 0; | 268 | tmp2 = 0; |
290 | |||
291 | mdelay(20); | 269 | mdelay(20); |
292 | 270 | ||
293 | sram_read(adapter, addr, &tmp2, 1); | 271 | sram_read(adapter, addr, &tmp2, 1); |
@@ -297,26 +275,24 @@ static int sram_test_location(struct adapter *adapter, u32 mask, u32 addr) | |||
297 | 275 | ||
298 | if (tmp2 != 0x5a) | 276 | if (tmp2 != 0x5a) |
299 | return 0; | 277 | return 0; |
300 | |||
301 | return 1; | 278 | return 1; |
302 | } | 279 | } |
303 | 280 | ||
304 | static u32 sram_length(struct adapter *adapter) | 281 | static u32 sram_length(struct adapter *adapter) |
305 | { | 282 | { |
306 | if (adapter->dw_sram_type == 0x10000) | 283 | if (adapter->dw_sram_type == 0x10000) |
307 | return 32768; // 32K | 284 | return 32768; /* 32K */ |
308 | if (adapter->dw_sram_type == 0x00000) | 285 | if (adapter->dw_sram_type == 0x00000) |
309 | return 65536; // 64K | 286 | return 65536; /* 64K */ |
310 | if (adapter->dw_sram_type == 0x20000) | 287 | if (adapter->dw_sram_type == 0x20000) |
311 | return 131072; // 128K | 288 | return 131072; /* 128K */ |
312 | 289 | return 32768; /* 32K */ | |
313 | return 32768; // 32K | ||
314 | } | 290 | } |
315 | 291 | ||
316 | /* FlexcopII can work with 32K, 64K or 128K of external SRAM memory. | 292 | /* FlexcopII can work with 32K, 64K or 128K of external SRAM memory. |
317 | - for 128K there are 4x32K chips at bank 0,1,2,3. | 293 | - for 128K there are 4x32K chips at bank 0,1,2,3. |
318 | - for 64K there are 2x32K chips at bank 1,2. | 294 | - for 64K there are 2x32K chips at bank 1,2. |
319 | - for 32K there is one 32K chip at bank 0. | 295 | - for 32K there is one 32K chip at bank 0. |
320 | 296 | ||
321 | FlexCop works only with one bank at a time. The bank is selected | 297 | FlexCop works only with one bank at a time. The bank is selected |
322 | by bits 28-29 of the 0x700 register. | 298 | by bits 28-29 of the 0x700 register. |
@@ -324,24 +300,18 @@ static u32 sram_length(struct adapter *adapter) | |||
324 | bank 0 covers addresses 0x00000-0x07fff | 300 | bank 0 covers addresses 0x00000-0x07fff |
325 | bank 1 covers addresses 0x08000-0x0ffff | 301 | bank 1 covers addresses 0x08000-0x0ffff |
326 | bank 2 covers addresses 0x10000-0x17fff | 302 | bank 2 covers addresses 0x10000-0x17fff |
327 | bank 3 covers addresses 0x18000-0x1ffff | 303 | bank 3 covers addresses 0x18000-0x1ffff */ |
328 | */ | ||
329 | 304 | ||
330 | static int flexcop_sram_detect(struct flexcop_device *fc) | 305 | static int flexcop_sram_detect(struct flexcop_device *fc) |
331 | { | 306 | { |
332 | flexcop_ibi_value r208,r71c_0,vr71c_1; | 307 | flexcop_ibi_value r208, r71c_0, vr71c_1; |
333 | |||
334 | r208 = fc->read_ibi_reg(fc, ctrl_208); | 308 | r208 = fc->read_ibi_reg(fc, ctrl_208); |
335 | fc->write_ibi_reg(fc, ctrl_208, ibi_zero); | 309 | fc->write_ibi_reg(fc, ctrl_208, ibi_zero); |
336 | 310 | ||
337 | r71c_0 = fc->read_ibi_reg(fc, wan_ctrl_reg_71c); | 311 | r71c_0 = fc->read_ibi_reg(fc, wan_ctrl_reg_71c); |
338 | |||
339 | write_reg_dw(adapter, 0x71c, 1); | 312 | write_reg_dw(adapter, 0x71c, 1); |
340 | |||
341 | tmp3 = read_reg_dw(adapter, 0x71c); | 313 | tmp3 = read_reg_dw(adapter, 0x71c); |
342 | |||
343 | dprintk("%s: tmp3 = %x\n", __func__, tmp3); | 314 | dprintk("%s: tmp3 = %x\n", __func__, tmp3); |
344 | |||
345 | write_reg_dw(adapter, 0x71c, tmp2); | 315 | write_reg_dw(adapter, 0x71c, tmp2); |
346 | 316 | ||
347 | // check for internal SRAM ??? | 317 | // check for internal SRAM ??? |
@@ -350,9 +320,7 @@ static int flexcop_sram_detect(struct flexcop_device *fc) | |||
350 | sram_set_size(adapter, 0x10000); | 320 | sram_set_size(adapter, 0x10000); |
351 | sram_init(adapter); | 321 | sram_init(adapter); |
352 | write_reg_dw(adapter, 0x208, tmp); | 322 | write_reg_dw(adapter, 0x208, tmp); |
353 | |||
354 | dprintk("%s: sram size = 32K\n", __func__); | 323 | dprintk("%s: sram size = 32K\n", __func__); |
355 | |||
356 | return 32; | 324 | return 32; |
357 | } | 325 | } |
358 | 326 | ||
@@ -360,9 +328,7 @@ static int flexcop_sram_detect(struct flexcop_device *fc) | |||
360 | sram_set_size(adapter, 0x20000); | 328 | sram_set_size(adapter, 0x20000); |
361 | sram_init(adapter); | 329 | sram_init(adapter); |
362 | write_reg_dw(adapter, 0x208, tmp); | 330 | write_reg_dw(adapter, 0x208, tmp); |
363 | |||
364 | dprintk("%s: sram size = 128K\n", __func__); | 331 | dprintk("%s: sram size = 128K\n", __func__); |
365 | |||
366 | return 128; | 332 | return 128; |
367 | } | 333 | } |
368 | 334 | ||
@@ -370,9 +336,7 @@ static int flexcop_sram_detect(struct flexcop_device *fc) | |||
370 | sram_set_size(adapter, 0x00000); | 336 | sram_set_size(adapter, 0x00000); |
371 | sram_init(adapter); | 337 | sram_init(adapter); |
372 | write_reg_dw(adapter, 0x208, tmp); | 338 | write_reg_dw(adapter, 0x208, tmp); |
373 | |||
374 | dprintk("%s: sram size = 64K\n", __func__); | 339 | dprintk("%s: sram size = 64K\n", __func__); |
375 | |||
376 | return 64; | 340 | return 64; |
377 | } | 341 | } |
378 | 342 | ||
@@ -380,18 +344,14 @@ static int flexcop_sram_detect(struct flexcop_device *fc) | |||
380 | sram_set_size(adapter, 0x10000); | 344 | sram_set_size(adapter, 0x10000); |
381 | sram_init(adapter); | 345 | sram_init(adapter); |
382 | write_reg_dw(adapter, 0x208, tmp); | 346 | write_reg_dw(adapter, 0x208, tmp); |
383 | |||
384 | dprintk("%s: sram size = 32K\n", __func__); | 347 | dprintk("%s: sram size = 32K\n", __func__); |
385 | |||
386 | return 32; | 348 | return 32; |
387 | } | 349 | } |
388 | 350 | ||
389 | sram_set_size(adapter, 0x10000); | 351 | sram_set_size(adapter, 0x10000); |
390 | sram_init(adapter); | 352 | sram_init(adapter); |
391 | write_reg_dw(adapter, 0x208, tmp); | 353 | write_reg_dw(adapter, 0x208, tmp); |
392 | |||
393 | dprintk("%s: SRAM detection failed. Set to 32K \n", __func__); | 354 | dprintk("%s: SRAM detection failed. Set to 32K \n", __func__); |
394 | |||
395 | return 0; | 355 | return 0; |
396 | } | 356 | } |
397 | 357 | ||
diff --git a/drivers/media/dvb/b2c2/flexcop-usb.h b/drivers/media/dvb/b2c2/flexcop-usb.h index 630e647a2caa..92529a9c4475 100644 --- a/drivers/media/dvb/b2c2/flexcop-usb.h +++ b/drivers/media/dvb/b2c2/flexcop-usb.h | |||
@@ -1,15 +1,20 @@ | |||
1 | /* | ||
2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III | ||
3 | * flexcop-usb.h - header file for the USB part | ||
4 | * see flexcop.c for copyright information | ||
5 | */ | ||
1 | #ifndef __FLEXCOP_USB_H_INCLUDED__ | 6 | #ifndef __FLEXCOP_USB_H_INCLUDED__ |
2 | #define __FLEXCOP_USB_H_INCLUDED__ | 7 | #define __FLEXCOP_USB_H_INCLUDED__ |
3 | 8 | ||
4 | #include <linux/usb.h> | 9 | #include <linux/usb.h> |
5 | 10 | ||
6 | /* transfer parameters */ | 11 | /* transfer parameters */ |
7 | #define B2C2_USB_FRAMES_PER_ISO 4 | 12 | #define B2C2_USB_FRAMES_PER_ISO 4 |
8 | #define B2C2_USB_NUM_ISO_URB 4 | 13 | #define B2C2_USB_NUM_ISO_URB 4 |
9 | 14 | ||
10 | #define B2C2_USB_CTRL_PIPE_IN usb_rcvctrlpipe(fc_usb->udev,0) | 15 | #define B2C2_USB_CTRL_PIPE_IN usb_rcvctrlpipe(fc_usb->udev, 0) |
11 | #define B2C2_USB_CTRL_PIPE_OUT usb_sndctrlpipe(fc_usb->udev,0) | 16 | #define B2C2_USB_CTRL_PIPE_OUT usb_sndctrlpipe(fc_usb->udev, 0) |
12 | #define B2C2_USB_DATA_PIPE usb_rcvisocpipe(fc_usb->udev,0x81) | 17 | #define B2C2_USB_DATA_PIPE usb_rcvisocpipe(fc_usb->udev, 0x81) |
13 | 18 | ||
14 | struct flexcop_usb { | 19 | struct flexcop_usb { |
15 | struct usb_device *udev; | 20 | struct usb_device *udev; |
@@ -18,8 +23,8 @@ struct flexcop_usb { | |||
18 | u8 *iso_buffer; | 23 | u8 *iso_buffer; |
19 | int buffer_size; | 24 | int buffer_size; |
20 | dma_addr_t dma_addr; | 25 | dma_addr_t dma_addr; |
21 | struct urb *iso_urb[B2C2_USB_NUM_ISO_URB]; | ||
22 | 26 | ||
27 | struct urb *iso_urb[B2C2_USB_NUM_ISO_URB]; | ||
23 | struct flexcop_device *fc_dev; | 28 | struct flexcop_device *fc_dev; |
24 | 29 | ||
25 | u8 tmp_buffer[1023+190]; | 30 | u8 tmp_buffer[1023+190]; |
@@ -30,14 +35,6 @@ struct flexcop_usb { | |||
30 | /* request types TODO What is its use?*/ | 35 | /* request types TODO What is its use?*/ |
31 | typedef enum { | 36 | typedef enum { |
32 | 37 | ||
33 | /* something is wrong with this part | ||
34 | RTYPE_READ_DW = (1 << 6), | ||
35 | RTYPE_WRITE_DW_1 = (3 << 6), | ||
36 | RTYPE_READ_V8_MEMORY = (6 << 6), | ||
37 | RTYPE_WRITE_V8_MEMORY = (7 << 6), | ||
38 | RTYPE_WRITE_V8_FLASH = (8 << 6), | ||
39 | RTYPE_GENERIC = (9 << 6), | ||
40 | */ | ||
41 | } flexcop_usb_request_type_t; | 38 | } flexcop_usb_request_type_t; |
42 | #endif | 39 | #endif |
43 | 40 | ||
@@ -47,7 +44,6 @@ typedef enum { | |||
47 | B2C2_USB_READ_V8_MEM = 0x05, | 44 | B2C2_USB_READ_V8_MEM = 0x05, |
48 | B2C2_USB_READ_REG = 0x08, | 45 | B2C2_USB_READ_REG = 0x08, |
49 | B2C2_USB_WRITE_REG = 0x0A, | 46 | B2C2_USB_WRITE_REG = 0x0A, |
50 | /* B2C2_USB_WRITEREGLO = 0x0A, */ | ||
51 | B2C2_USB_WRITEREGHI = 0x0B, | 47 | B2C2_USB_WRITEREGHI = 0x0B, |
52 | B2C2_USB_FLASH_BLOCK = 0x10, | 48 | B2C2_USB_FLASH_BLOCK = 0x10, |
53 | B2C2_USB_I2C_REQUEST = 0x11, | 49 | B2C2_USB_I2C_REQUEST = 0x11, |
@@ -62,15 +58,13 @@ typedef enum { | |||
62 | USB_FUNC_I2C_REPEATWRITE = 0x04, | 58 | USB_FUNC_I2C_REPEATWRITE = 0x04, |
63 | USB_FUNC_GET_DESCRIPTOR = 0x05, | 59 | USB_FUNC_GET_DESCRIPTOR = 0x05, |
64 | USB_FUNC_I2C_REPEATREAD = 0x06, | 60 | USB_FUNC_I2C_REPEATREAD = 0x06, |
65 | /* DKT 020208 - add this to support special case of DiSEqC */ | 61 | /* DKT 020208 - add this to support special case of DiSEqC */ |
66 | USB_FUNC_I2C_CHECKWRITE = 0x07, | 62 | USB_FUNC_I2C_CHECKWRITE = 0x07, |
67 | USB_FUNC_I2C_CHECKRESULT = 0x08, | 63 | USB_FUNC_I2C_CHECKRESULT = 0x08, |
68 | } flexcop_usb_i2c_function_t; | 64 | } flexcop_usb_i2c_function_t; |
69 | 65 | ||
70 | /* | 66 | /* function definition for UTILITY request 0x12 |
71 | * function definition for UTILITY request 0x12 | 67 | * DKT 020304 - new utility function */ |
72 | * DKT 020304 - new utility function | ||
73 | */ | ||
74 | typedef enum { | 68 | typedef enum { |
75 | UTILITY_SET_FILTER = 0x01, | 69 | UTILITY_SET_FILTER = 0x01, |
76 | UTILITY_DATA_ENABLE = 0x02, | 70 | UTILITY_DATA_ENABLE = 0x02, |
@@ -84,7 +78,7 @@ typedef enum { | |||
84 | UTILITY_DATA_RESET = 0x0A, | 78 | UTILITY_DATA_RESET = 0x0A, |
85 | UTILITY_GET_DATA_STATUS = 0x10, | 79 | UTILITY_GET_DATA_STATUS = 0x10, |
86 | UTILITY_GET_V8_REG = 0x11, | 80 | UTILITY_GET_V8_REG = 0x11, |
87 | /* DKT 020326 - add function for v1.14 */ | 81 | /* DKT 020326 - add function for v1.14 */ |
88 | UTILITY_SRAM_WRITE = 0x12, | 82 | UTILITY_SRAM_WRITE = 0x12, |
89 | UTILITY_SRAM_READ = 0x13, | 83 | UTILITY_SRAM_READ = 0x13, |
90 | UTILITY_SRAM_TESTFILL = 0x14, | 84 | UTILITY_SRAM_TESTFILL = 0x14, |
@@ -92,13 +86,13 @@ typedef enum { | |||
92 | UTILITY_SRAM_TESTVERIFY = 0x16, | 86 | UTILITY_SRAM_TESTVERIFY = 0x16, |
93 | } flexcop_usb_utility_function_t; | 87 | } flexcop_usb_utility_function_t; |
94 | 88 | ||
95 | #define B2C2_WAIT_FOR_OPERATION_RW 1*HZ /* 1 s */ | 89 | #define B2C2_WAIT_FOR_OPERATION_RW (1*HZ) |
96 | #define B2C2_WAIT_FOR_OPERATION_RDW 3*HZ /* 3 s */ | 90 | #define B2C2_WAIT_FOR_OPERATION_RDW (3*HZ) |
97 | #define B2C2_WAIT_FOR_OPERATION_WDW 1*HZ /* 1 s */ | 91 | #define B2C2_WAIT_FOR_OPERATION_WDW (1*HZ) |
98 | 92 | ||
99 | #define B2C2_WAIT_FOR_OPERATION_V8READ 3*HZ /* 3 s */ | 93 | #define B2C2_WAIT_FOR_OPERATION_V8READ (3*HZ) |
100 | #define B2C2_WAIT_FOR_OPERATION_V8WRITE 3*HZ /* 3 s */ | 94 | #define B2C2_WAIT_FOR_OPERATION_V8WRITE (3*HZ) |
101 | #define B2C2_WAIT_FOR_OPERATION_V8FLASH 3*HZ /* 3 s */ | 95 | #define B2C2_WAIT_FOR_OPERATION_V8FLASH (3*HZ) |
102 | 96 | ||
103 | typedef enum { | 97 | typedef enum { |
104 | V8_MEMORY_PAGE_DVB_CI = 0x20, | 98 | V8_MEMORY_PAGE_DVB_CI = 0x20, |
@@ -107,13 +101,11 @@ typedef enum { | |||
107 | V8_MEMORY_PAGE_FLASH = 0x80 | 101 | V8_MEMORY_PAGE_FLASH = 0x80 |
108 | } flexcop_usb_mem_page_t; | 102 | } flexcop_usb_mem_page_t; |
109 | 103 | ||
110 | #define V8_MEMORY_EXTENDED (1 << 15) | 104 | #define V8_MEMORY_EXTENDED (1 << 15) |
111 | 105 | #define USB_MEM_READ_MAX 32 | |
112 | #define USB_MEM_READ_MAX 32 | 106 | #define USB_MEM_WRITE_MAX 1 |
113 | #define USB_MEM_WRITE_MAX 1 | 107 | #define USB_FLASH_MAX 8 |
114 | #define USB_FLASH_MAX 8 | 108 | #define V8_MEMORY_PAGE_SIZE 0x8000 /* 32K */ |
115 | 109 | #define V8_MEMORY_PAGE_MASK 0x7FFF | |
116 | #define V8_MEMORY_PAGE_SIZE 0x8000 // 32K | ||
117 | #define V8_MEMORY_PAGE_MASK 0x7FFF | ||
118 | 110 | ||
119 | #endif | 111 | #endif |
diff --git a/drivers/media/dvb/b2c2/flexcop.c b/drivers/media/dvb/b2c2/flexcop.c index e836caecebbd..2df1b0214dcd 100644 --- a/drivers/media/dvb/b2c2/flexcop.c +++ b/drivers/media/dvb/b2c2/flexcop.c | |||
@@ -1,22 +1,20 @@ | |||
1 | /* | 1 | /* |
2 | * flexcop.c - driver for digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop.c - main module part |
4 | * Copyright (C) 2004-5 Patrick Boettcher <patrick.boettcher@desy.de> | 4 | * Copyright (C) 2004-9 Patrick Boettcher <patrick.boettcher@desy.de> |
5 | * | 5 | * based on skystar2-driver Copyright (C) 2003 Vadim Catana, skystar@moldova.cc |
6 | * based on the skystar2-driver | ||
7 | * Copyright (C) 2003 Vadim Catana, skystar@moldova.cc | ||
8 | * | 6 | * |
9 | * Acknowledgements: | 7 | * Acknowledgements: |
10 | * John Jurrius from BBTI, Inc. for extensive support with | 8 | * John Jurrius from BBTI, Inc. for extensive support |
11 | * code examples and data books | 9 | * with code examples and data books |
12 | * | 10 | * Bjarne Steinsbo, bjarne at steinsbo.com (some ideas for rewriting) |
13 | * Bjarne Steinsbo, bjarne at steinsbo.com (some ideas for rewriting) | ||
14 | * | 11 | * |
15 | * Contributions to the skystar2-driver have been done by | 12 | * Contributions to the skystar2-driver have been done by |
16 | * Vincenzo Di Massa, hawk.it at tiscalinet.it (several DiSEqC fixes) | 13 | * Vincenzo Di Massa, hawk.it at tiscalinet.it (several DiSEqC fixes) |
17 | * Roberto Ragusa, r.ragusa at libero.it (polishing, restyling the code) | 14 | * Roberto Ragusa, r.ragusa at libero.it (polishing, restyling the code) |
18 | * Niklas Peinecke, peinecke at gdv.uni-hannover.de (hardware pid/mac filtering) | 15 | * Uwe Bugla, uwe.bugla at gmx.de (doing tests, restyling code, writing docu) |
19 | * | 16 | * Niklas Peinecke, peinecke at gdv.uni-hannover.de (hardware pid/mac |
17 | * filtering) | ||
20 | * | 18 | * |
21 | * This program is free software; you can redistribute it and/or | 19 | * This program is free software; you can redistribute it and/or |
22 | * modify it under the terms of the GNU Lesser General Public License | 20 | * modify it under the terms of the GNU Lesser General Public License |
@@ -46,7 +44,10 @@ | |||
46 | 44 | ||
47 | int b2c2_flexcop_debug; | 45 | int b2c2_flexcop_debug; |
48 | module_param_named(debug, b2c2_flexcop_debug, int, 0644); | 46 | module_param_named(debug, b2c2_flexcop_debug, int, 0644); |
49 | MODULE_PARM_DESC(debug, "set debug level (1=info,2=tuner,4=i2c,8=ts,16=sram,32=reg (|-able))." DEBSTATUS); | 47 | MODULE_PARM_DESC(debug, |
48 | "set debug level (1=info,2=tuner,4=i2c,8=ts," | ||
49 | "16=sram,32=reg (|-able))." | ||
50 | DEBSTATUS); | ||
50 | #undef DEBSTATUS | 51 | #undef DEBSTATUS |
51 | 52 | ||
52 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | 53 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); |
@@ -57,37 +58,36 @@ flexcop_ibi_value ibi_zero; | |||
57 | static int flexcop_dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) | 58 | static int flexcop_dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) |
58 | { | 59 | { |
59 | struct flexcop_device *fc = dvbdmxfeed->demux->priv; | 60 | struct flexcop_device *fc = dvbdmxfeed->demux->priv; |
60 | return flexcop_pid_feed_control(fc,dvbdmxfeed,1); | 61 | return flexcop_pid_feed_control(fc, dvbdmxfeed, 1); |
61 | } | 62 | } |
62 | 63 | ||
63 | static int flexcop_dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) | 64 | static int flexcop_dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) |
64 | { | 65 | { |
65 | struct flexcop_device *fc = dvbdmxfeed->demux->priv; | 66 | struct flexcop_device *fc = dvbdmxfeed->demux->priv; |
66 | return flexcop_pid_feed_control(fc,dvbdmxfeed,0); | 67 | return flexcop_pid_feed_control(fc, dvbdmxfeed, 0); |
67 | } | 68 | } |
68 | 69 | ||
69 | static int flexcop_dvb_init(struct flexcop_device *fc) | 70 | static int flexcop_dvb_init(struct flexcop_device *fc) |
70 | { | 71 | { |
71 | int ret = dvb_register_adapter(&fc->dvb_adapter, | 72 | int ret = dvb_register_adapter(&fc->dvb_adapter, |
72 | "FlexCop Digital TV device", fc->owner, | 73 | "FlexCop Digital TV device", fc->owner, |
73 | fc->dev, adapter_nr); | 74 | fc->dev, adapter_nr); |
74 | if (ret < 0) { | 75 | if (ret < 0) { |
75 | err("error registering DVB adapter"); | 76 | err("error registering DVB adapter"); |
76 | return ret; | 77 | return ret; |
77 | } | 78 | } |
78 | fc->dvb_adapter.priv = fc; | 79 | fc->dvb_adapter.priv = fc; |
79 | 80 | ||
80 | fc->demux.dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING); | 81 | fc->demux.dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING |
82 | | DMX_MEMORY_BASED_FILTERING); | ||
81 | fc->demux.priv = fc; | 83 | fc->demux.priv = fc; |
82 | |||
83 | fc->demux.filternum = fc->demux.feednum = FC_MAX_FEED; | 84 | fc->demux.filternum = fc->demux.feednum = FC_MAX_FEED; |
84 | |||
85 | fc->demux.start_feed = flexcop_dvb_start_feed; | 85 | fc->demux.start_feed = flexcop_dvb_start_feed; |
86 | fc->demux.stop_feed = flexcop_dvb_stop_feed; | 86 | fc->demux.stop_feed = flexcop_dvb_stop_feed; |
87 | fc->demux.write_to_decoder = NULL; | 87 | fc->demux.write_to_decoder = NULL; |
88 | 88 | ||
89 | if ((ret = dvb_dmx_init(&fc->demux)) < 0) { | 89 | if ((ret = dvb_dmx_init(&fc->demux)) < 0) { |
90 | err("dvb_dmx failed: error %d",ret); | 90 | err("dvb_dmx failed: error %d", ret); |
91 | goto err_dmx; | 91 | goto err_dmx; |
92 | } | 92 | } |
93 | 93 | ||
@@ -97,23 +97,23 @@ static int flexcop_dvb_init(struct flexcop_device *fc) | |||
97 | fc->dmxdev.demux = &fc->demux.dmx; | 97 | fc->dmxdev.demux = &fc->demux.dmx; |
98 | fc->dmxdev.capabilities = 0; | 98 | fc->dmxdev.capabilities = 0; |
99 | if ((ret = dvb_dmxdev_init(&fc->dmxdev, &fc->dvb_adapter)) < 0) { | 99 | if ((ret = dvb_dmxdev_init(&fc->dmxdev, &fc->dvb_adapter)) < 0) { |
100 | err("dvb_dmxdev_init failed: error %d",ret); | 100 | err("dvb_dmxdev_init failed: error %d", ret); |
101 | goto err_dmx_dev; | 101 | goto err_dmx_dev; |
102 | } | 102 | } |
103 | 103 | ||
104 | if ((ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->hw_frontend)) < 0) { | 104 | if ((ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->hw_frontend)) < 0) { |
105 | err("adding hw_frontend to dmx failed: error %d",ret); | 105 | err("adding hw_frontend to dmx failed: error %d", ret); |
106 | goto err_dmx_add_hw_frontend; | 106 | goto err_dmx_add_hw_frontend; |
107 | } | 107 | } |
108 | 108 | ||
109 | fc->mem_frontend.source = DMX_MEMORY_FE; | 109 | fc->mem_frontend.source = DMX_MEMORY_FE; |
110 | if ((ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->mem_frontend)) < 0) { | 110 | if ((ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->mem_frontend)) < 0) { |
111 | err("adding mem_frontend to dmx failed: error %d",ret); | 111 | err("adding mem_frontend to dmx failed: error %d", ret); |
112 | goto err_dmx_add_mem_frontend; | 112 | goto err_dmx_add_mem_frontend; |
113 | } | 113 | } |
114 | 114 | ||
115 | if ((ret = fc->demux.dmx.connect_frontend(&fc->demux.dmx, &fc->hw_frontend)) < 0) { | 115 | if ((ret = fc->demux.dmx.connect_frontend(&fc->demux.dmx, &fc->hw_frontend)) < 0) { |
116 | err("connect frontend failed: error %d",ret); | 116 | err("connect frontend failed: error %d", ret); |
117 | goto err_connect_frontend; | 117 | goto err_connect_frontend; |
118 | } | 118 | } |
119 | 119 | ||
@@ -123,9 +123,9 @@ static int flexcop_dvb_init(struct flexcop_device *fc) | |||
123 | return 0; | 123 | return 0; |
124 | 124 | ||
125 | err_connect_frontend: | 125 | err_connect_frontend: |
126 | fc->demux.dmx.remove_frontend(&fc->demux.dmx,&fc->mem_frontend); | 126 | fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->mem_frontend); |
127 | err_dmx_add_mem_frontend: | 127 | err_dmx_add_mem_frontend: |
128 | fc->demux.dmx.remove_frontend(&fc->demux.dmx,&fc->hw_frontend); | 128 | fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->hw_frontend); |
129 | err_dmx_add_hw_frontend: | 129 | err_dmx_add_hw_frontend: |
130 | dvb_dmxdev_release(&fc->dmxdev); | 130 | dvb_dmxdev_release(&fc->dmxdev); |
131 | err_dmx_dev: | 131 | err_dmx_dev: |
@@ -141,12 +141,13 @@ static void flexcop_dvb_exit(struct flexcop_device *fc) | |||
141 | dvb_net_release(&fc->dvbnet); | 141 | dvb_net_release(&fc->dvbnet); |
142 | 142 | ||
143 | fc->demux.dmx.close(&fc->demux.dmx); | 143 | fc->demux.dmx.close(&fc->demux.dmx); |
144 | fc->demux.dmx.remove_frontend(&fc->demux.dmx,&fc->mem_frontend); | 144 | fc->demux.dmx.remove_frontend(&fc->demux.dmx, |
145 | fc->demux.dmx.remove_frontend(&fc->demux.dmx,&fc->hw_frontend); | 145 | &fc->mem_frontend); |
146 | fc->demux.dmx.remove_frontend(&fc->demux.dmx, | ||
147 | &fc->hw_frontend); | ||
146 | dvb_dmxdev_release(&fc->dmxdev); | 148 | dvb_dmxdev_release(&fc->dmxdev); |
147 | dvb_dmx_release(&fc->demux); | 149 | dvb_dmx_release(&fc->demux); |
148 | dvb_unregister_adapter(&fc->dvb_adapter); | 150 | dvb_unregister_adapter(&fc->dvb_adapter); |
149 | |||
150 | deb_info("deinitialized dvb stuff\n"); | 151 | deb_info("deinitialized dvb stuff\n"); |
151 | } | 152 | } |
152 | fc->init_state &= ~FC_STATE_DVB_INIT; | 153 | fc->init_state &= ~FC_STATE_DVB_INIT; |
@@ -168,9 +169,9 @@ EXPORT_SYMBOL(flexcop_pass_dmx_packets); | |||
168 | 169 | ||
169 | static void flexcop_reset(struct flexcop_device *fc) | 170 | static void flexcop_reset(struct flexcop_device *fc) |
170 | { | 171 | { |
171 | flexcop_ibi_value v210,v204; | 172 | flexcop_ibi_value v210, v204; |
172 | 173 | ||
173 | /* reset the flexcop itself */ | 174 | /* reset the flexcop itself */ |
174 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); | 175 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); |
175 | 176 | ||
176 | v210.raw = 0; | 177 | v210.raw = 0; |
@@ -183,13 +184,11 @@ static void flexcop_reset(struct flexcop_device *fc) | |||
183 | v210.sw_reset_210.reset_block_600 = 1; | 184 | v210.sw_reset_210.reset_block_600 = 1; |
184 | v210.sw_reset_210.reset_block_700 = 1; | 185 | v210.sw_reset_210.reset_block_700 = 1; |
185 | v210.sw_reset_210.Block_reset_enable = 0xb2; | 186 | v210.sw_reset_210.Block_reset_enable = 0xb2; |
186 | |||
187 | v210.sw_reset_210.Special_controls = 0xc259; | 187 | v210.sw_reset_210.Special_controls = 0xc259; |
188 | |||
189 | fc->write_ibi_reg(fc,sw_reset_210,v210); | 188 | fc->write_ibi_reg(fc,sw_reset_210,v210); |
190 | msleep(1); | 189 | msleep(1); |
191 | 190 | ||
192 | /* reset the periphical devices */ | 191 | /* reset the periphical devices */ |
193 | 192 | ||
194 | v204 = fc->read_ibi_reg(fc,misc_204); | 193 | v204 = fc->read_ibi_reg(fc,misc_204); |
195 | v204.misc_204.Per_reset_sig = 0; | 194 | v204.misc_204.Per_reset_sig = 0; |
@@ -201,11 +200,10 @@ static void flexcop_reset(struct flexcop_device *fc) | |||
201 | 200 | ||
202 | void flexcop_reset_block_300(struct flexcop_device *fc) | 201 | void flexcop_reset_block_300(struct flexcop_device *fc) |
203 | { | 202 | { |
204 | flexcop_ibi_value v208_save = fc->read_ibi_reg(fc,ctrl_208), | 203 | flexcop_ibi_value v208_save = fc->read_ibi_reg(fc, ctrl_208), |
205 | v210 = fc->read_ibi_reg(fc,sw_reset_210); | 204 | v210 = fc->read_ibi_reg(fc, sw_reset_210); |
206 | |||
207 | deb_rdump("208: %08x, 210: %08x\n",v208_save.raw,v210.raw); | ||
208 | 205 | ||
206 | deb_rdump("208: %08x, 210: %08x\n", v208_save.raw, v210.raw); | ||
209 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); | 207 | fc->write_ibi_reg(fc,ctrl_208,ibi_zero); |
210 | 208 | ||
211 | v210.sw_reset_210.reset_block_300 = 1; | 209 | v210.sw_reset_210.reset_block_300 = 1; |
@@ -218,7 +216,8 @@ void flexcop_reset_block_300(struct flexcop_device *fc) | |||
218 | struct flexcop_device *flexcop_device_kmalloc(size_t bus_specific_len) | 216 | struct flexcop_device *flexcop_device_kmalloc(size_t bus_specific_len) |
219 | { | 217 | { |
220 | void *bus; | 218 | void *bus; |
221 | struct flexcop_device *fc = kzalloc(sizeof(struct flexcop_device), GFP_KERNEL); | 219 | struct flexcop_device *fc = kzalloc(sizeof(struct flexcop_device), |
220 | GFP_KERNEL); | ||
222 | if (!fc) { | 221 | if (!fc) { |
223 | err("no memory"); | 222 | err("no memory"); |
224 | return NULL; | 223 | return NULL; |
@@ -253,7 +252,6 @@ int flexcop_device_initialize(struct flexcop_device *fc) | |||
253 | flexcop_determine_revision(fc); | 252 | flexcop_determine_revision(fc); |
254 | flexcop_sram_init(fc); | 253 | flexcop_sram_init(fc); |
255 | flexcop_hw_filter_init(fc); | 254 | flexcop_hw_filter_init(fc); |
256 | |||
257 | flexcop_smc_ctrl(fc, 0); | 255 | flexcop_smc_ctrl(fc, 0); |
258 | 256 | ||
259 | if ((ret = flexcop_dvb_init(fc))) | 257 | if ((ret = flexcop_dvb_init(fc))) |
@@ -278,7 +276,6 @@ int flexcop_device_initialize(struct flexcop_device *fc) | |||
278 | goto error; | 276 | goto error; |
279 | 277 | ||
280 | flexcop_device_name(fc,"initialization of","complete"); | 278 | flexcop_device_name(fc,"initialization of","complete"); |
281 | |||
282 | return 0; | 279 | return 0; |
283 | 280 | ||
284 | error: | 281 | error: |
diff --git a/drivers/media/dvb/b2c2/flexcop.h b/drivers/media/dvb/b2c2/flexcop.h index 0cebe1d92e0b..897b10c85ad9 100644 --- a/drivers/media/dvb/b2c2/flexcop.h +++ b/drivers/media/dvb/b2c2/flexcop.h | |||
@@ -1,9 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * This file is part of linux driver the digital TV devices equipped with B2C2 FlexcopII(b)/III | 2 | * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
3 | * | 3 | * flexcop.h - private header file for all flexcop-chip-source files |
4 | * flexcop.h - private header file for all flexcop-chip-source files. | 4 | * see flexcop.c for copyright information |
5 | * | ||
6 | * see flexcop.c for copyright information. | ||
7 | */ | 5 | */ |
8 | #ifndef __FLEXCOP_H__ | 6 | #ifndef __FLEXCOP_H__ |
9 | #define __FLEXCOP_H___ | 7 | #define __FLEXCOP_H___ |
@@ -21,11 +19,11 @@ extern int b2c2_flexcop_debug; | |||
21 | #define dprintk(level,args...) | 19 | #define dprintk(level,args...) |
22 | #endif | 20 | #endif |
23 | 21 | ||
24 | #define deb_info(args...) dprintk(0x01,args) | 22 | #define deb_info(args...) dprintk(0x01, args) |
25 | #define deb_tuner(args...) dprintk(0x02,args) | 23 | #define deb_tuner(args...) dprintk(0x02, args) |
26 | #define deb_i2c(args...) dprintk(0x04,args) | 24 | #define deb_i2c(args...) dprintk(0x04, args) |
27 | #define deb_ts(args...) dprintk(0x08,args) | 25 | #define deb_ts(args...) dprintk(0x08, args) |
28 | #define deb_sram(args...) dprintk(0x10,args) | 26 | #define deb_sram(args...) dprintk(0x10, args) |
29 | #define deb_rdump(args...) dprintk(0x20,args) | 27 | #define deb_rdump(args...) dprintk(0x20, args) |
30 | 28 | ||
31 | #endif | 29 | #endif |
diff --git a/drivers/media/dvb/b2c2/flexcop_ibi_value_be.h b/drivers/media/dvb/b2c2/flexcop_ibi_value_be.h index ed9a6756b194..8f64bdbd72bb 100644 --- a/drivers/media/dvb/b2c2/flexcop_ibi_value_be.h +++ b/drivers/media/dvb/b2c2/flexcop_ibi_value_be.h | |||
@@ -1,10 +1,7 @@ | |||
1 | /* This file is part of linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III | 1 | /* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
2 | * | ||
3 | * register descriptions | 2 | * register descriptions |
4 | * | 3 | * see flexcop.c for copyright information |
5 | * see flexcop.c for copyright information. | ||
6 | */ | 4 | */ |
7 | |||
8 | /* This file is automatically generated, do not edit things here. */ | 5 | /* This file is automatically generated, do not edit things here. */ |
9 | #ifndef __FLEXCOP_IBI_VALUE_INCLUDED__ | 6 | #ifndef __FLEXCOP_IBI_VALUE_INCLUDED__ |
10 | #define __FLEXCOP_IBI_VALUE_INCLUDED__ | 7 | #define __FLEXCOP_IBI_VALUE_INCLUDED__ |
diff --git a/drivers/media/dvb/b2c2/flexcop_ibi_value_le.h b/drivers/media/dvb/b2c2/flexcop_ibi_value_le.h index 49f2315b6e58..c75830d7d942 100644 --- a/drivers/media/dvb/b2c2/flexcop_ibi_value_le.h +++ b/drivers/media/dvb/b2c2/flexcop_ibi_value_le.h | |||
@@ -1,10 +1,7 @@ | |||
1 | /* This file is part of linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III | 1 | /* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III |
2 | * | ||
3 | * register descriptions | 2 | * register descriptions |
4 | * | 3 | * see flexcop.c for copyright information |
5 | * see flexcop.c for copyright information. | ||
6 | */ | 4 | */ |
7 | |||
8 | /* This file is automatically generated, do not edit things here. */ | 5 | /* This file is automatically generated, do not edit things here. */ |
9 | #ifndef __FLEXCOP_IBI_VALUE_INCLUDED__ | 6 | #ifndef __FLEXCOP_IBI_VALUE_INCLUDED__ |
10 | #define __FLEXCOP_IBI_VALUE_INCLUDED__ | 7 | #define __FLEXCOP_IBI_VALUE_INCLUDED__ |