Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Skystar2 i2c lockup



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)?

I hope, I do not ask for too much.

Thanks,

Niklas



--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index