Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: [PATCH] Skystar2 pid filters reorganization
Hi!
See below.
*********** REPLY SEPARATOR ***********
On 11/29/2003 at 5:30 AM Holger Waechtler wrote:
...
>>
>> In case you haven't yet tried: Doesn't work. Augusto seems to suggest,
>> that the high bits of the 0x3fff PID mask _must_ be cleared (this
>> explains the strange bit masks used sometimes in the code).
>
>MPEG-TS PIDs have 13 bits, thus 0x1fff is the correct mask everywhere.
>
>Holger
I think this is generating some confusion. I'll try to clarify the specifics for the FC.
As we know, the transfer to the FC chips is done using 32-bits. We must provide all 32 bits. When writing to a PID register, the PID value has to be mask with 0x1fff.
There are three mass produced version of the Flexcop chip. They do share a lot of registers, but the biggest difference is the number of PIDS. In a nutshell:
-FCII
6 HW PIDs + 1 Group PID
HW DEMUX and section filter. (3X)
-FCIIB
6 HW PIDs + 1 Group PID
Plus
32 HW PIDs
HW DEMUX (same as FCII) and section filter. (35X)
-FCIII
6 HW PIDs + 1 Group PID
Plus
32 HW PIDs
HW DEMUX(better than FCII) and section filter. (35X)
USB+PHY
Programmable RISC core
Note that these chips also have a smartcard controller built-in and FCIII has a programmable CI interface.
The 6 HW filters are used as follows: (Applies to all FC versions including FPGA versions and FCI)
0x300, 0x304, 0x308
Bits 12-0 PID value
Bit 13 Enable the internal demux for this PID. (Must be set to 0 for skystar2.c)
Bit 14 Enable Multicast for this PID. (Must be set to 0 for skystar2.c). This used to filter only Multicast data after internally demux.
Bit 15 Reserved. (Debug/status on FCIII)
Bits 28-16 PID value
Bit 29 Same as 13
Bit 30 Same as 14
Bit 31 Same as 15
0x30c
Bits 12-0 PID value
Bit 13 Enable the internal demux for this PID. (Must be set to 0 for skystar2.c)
Bits 14-15 Reserved. (Debug/status on FCIII)
Bits 28-16 PID_mask value. Operation is ((Incoming PID) & PID_MASK) == PID value)
Bits 29-31 Reserved. (debug/status on FCIII)
0x208 This is the most important register in the FC
Bit 0 Enable PID 12-0 on 0x300
Bit 1 Enable PID 28-16 on 0x300
Bit 2 Enable PID 12-0 on 0x304
Bit 3 Enable PID 28-16 on 0x304
Bit 4 Enable PID 12-0 on 0x308
Bit 5 Enable PID 28-16 on 0x308
Bit 6 NULL Packets filter. When set or '1', filters out the 0x1fff packets.
Bit 7 Enables PID on 0x30c
Bit 8 Enables WAN port output. (Built-in HDLC port).
Bit 9-10 Internal CA enables. (FCII and FCIIB have a built-in embedded CA engine system, not in use in Europe). Reserved in FCIII.
Bit 11 Enable smartcard interface.
Bit 12 Switches between the two external transport inputs on FCII and FCIIB. Reserved on FCIII.
Bit 13 Reserved.
Bit 14 Enable section filter. Internal Demux only.
Bit 15 Enable data receiving. Should be set to '1' to receive data.
Bit 16 Enable DMA1 counter IRQ
Bit 17 Enable DMA1 timer IRQ
Bit 18 Enable DMA2 counter IRQ
Bit 19 Enable DMA2 timer IRQ
Bit 20 Enable DMA1 size IRQ. FCIII only.
Bit 21 Enable DMA2 size IRQ. FCIII only.
Bit 22 Enable Mailbox IRQ. FCIII only. Used by the internal RISC core.
Bits 31-23 Reserved.
The 32 HW PIDs: (Applies to FCIIB and FCIII)
Reg 0x310
Bits 4-0 PID index. (PIDs are read/write through 0x314).
Bits 7-5 Debug register index. FCIII only
Bit 8 Select which portion of the section filter to write to. (Only used when the internal demux is used).
Bit 9 Pass all-tables. (Only used when the internal demux is used, no match table-id). FCIII only
Reg 0x314
Bits 12-0 PID value
Bit 13 Enable internal demux. Should be set to 0 for the current skystar2.c
Bit 14 Enable this filter. This should be set to 1 to enable this filter.
As you can see, it is a little confusing. For the original 6 HW PIDs, you must have Bits 13 and 14 not set or '0' and enable the respective bit in register 0x208 in order to enable the PID.
For the 32 HW pids, you must have Bit 13 no set or '0' and bit 14 set or '1' in order to enable the PID.
To make things a little more complicated, the extra bits in the above registers are used for debugging and some internal status on the FCIII chip. They must be mask out.
All chips have an internal demux. It's only used in embedded applications or in the case of FCIII for the USB product. They all have an internal RISC core, but only FCIII is programmable.
Hope this clarifies all information I have written before. Please let me know if there are any thing I can further clarify.
Augusto
--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.
Home |
Main Index |
Thread Index