Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: Skystar2 i2c lockup
Hi!
*********** REPLY SEPARATOR ***********
On 12/11/2003 at 11:34 AM Niklas Peinecke wrote:
>Augusto Cardoso wrote:
>> Hi!
>>
>> Here are the registers for the "two line serial":
>>
>> Reg 0x100
>> WRITE
>> Bits 6-0 CHIPADDRESS
>> Bit 7 Reserved
>> Bits 15-8 BASE ADDRESS
>> Bits 23-16 DATA1
>> Bit 24 Start transaction.
>> Bit 25 R/#W Read=1, Write=0
>> Bit 27-26 Size of transaction. 00=1, 11=4 bytes.
>> Bit 29-28 Port selection 00=Invalid, 01=Frontend, 10-EEPROM, 11=Tuner
>> Bit 30 Base address presence indicator. When 1, no base address is
>generated.
>> Bit 31 Reserved
>>
>> Reg 0x100
>> READ
>> Bit 0 R/#W - Internal states.
>> Bits 7-1 CHIPADDRESS
>> Bits 15-8 BASE ADDRESS
>> Bits 23-16 DATA1
>> Bit 24 Status. When=1, transaction underway. =0 engine is free.
>> Bit 25 R/#W Read=1, Write=0
>> Bit 27-26 Size of transaction. 00=1, 11=4 bytes.
>> Bit 29-28 Port selection 00=Invalid, 01=Frontend, 10-EEPROM, 11=Tuner
>> Bit 30 ACK error. When =1, no ACK from slave.
>> Bit 31 When set, it indicate that the current transaction is done.
>>
>> Reg 0x104
>> Bit 7-0 Data2
>> Bit 15-8 Data3
>> Bit 23-16 Data4
>> Bit 24 Explicit STOP. When set, the transaction is done without a
>trailing STOP. FC3 only.
>> Bit 25 When set, generates a STOP event. FC3 only.
>> Bit 31-26 Reserved.
>>
>> Reg 0x108, 0x10c and 0x110 Have the same function, but affecting ports
>1(Frontend), 2(EEPROM) and 3(Tuner), respectively.
>> Bits 5-0 thi Time High for i2c timing. The reference is a pre-scale
>internal clock based on the main clock.
>> Bits 12-8 tlo Time Low for i2c timing. The reference is a pre-scale
>internal clock based on the main clock.
>> All other bits, reserved.
>>
>> I hope this is not too confusing.
>> Let me know if you have any questions.
>>
>> Augusto
>>
>Ok, here I go:
>
> > Reg 0x100
> > WRITE
>...
> > Bits 15-8 BASE ADDRESS
>...
> > Bit 30 Base address presence indicator. When 1, no base address is
>generated.
>
>Does this mean when Bit 30 is set, the base address specified in 15-8 is
>not sent via i2c but only the DATA1, DATA2, and DATA3? Suppose I only
>want to send DATA1. Should I set size of transaction to 00 or 01 then? I
>suppose 00. Thus, there is no way to send 0 byte transactions ("i2c
>pings"), right? Also there is no way to do a read only from the bus,
>without writing the base address first (or is that the purpose of Bit 30)?
>
You are correct about all the above.
The Bit 30 won't generate the base address on a read.
You need to set it to 00 in order to send DATA1 only.
There is no way to do a "i2c ping" with flexcop.
>I hope, I do not ask for too much.
>
I'm glad you ask the questions, it makes me think about this and try to remember how this suppose to work. :)
>Thanks,
>
>Niklas
>
>
>
>--
>
--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.
Home |
Main Index |
Thread Index