1

Temat: Propox MMnet1001, I2C, TLV320AIC23B

Otóż mam takowy problem podczas używania własnych aplikacji opartych o ALSA oraz tych gotowych 'arecord', 'aplay'.

Log z konsoli DBG:

[ 794.700000] tlv320aic23_write cannot write 07f to register R8
[ 794.700000] i2c i2c-0: sendbytes: NAK bailout.
[ 794.710000] tlv320aic23_write cannot write 042 to register R7
[ 794.720000] i2c i2c-0: sendbytes: NAK bailout.
[ 794.720000] tlv320aic23_write cannot write 001 to register R9
[ 794.730000] i2c i2c-0: sendbytes: NAK bailout.
[ 794.730000] tlv320aic23_write cannot write 047 to register R6

Wygląda na problem z I2C lub samym kodekiem audio TLV320AIC23B.
Korzystałem z jądra 2.6.34.4 oraz 2.6.29.3 (od producenta) i na obu mam ten sam problem.

OpenWRT dla AT91 : Propox MMnet1001 + EVBmm(Tm) : Linux MMnet 2.6.36.4 armv5tejl : OpenWRT TRUNK

2

Odp: Propox MMnet1001, I2C, TLV320AIC23B

Zwykle tyle że z jakiegoś powodu następuje za szybko odczyt z i2c. niekiedy pomaga zwiększenie opóźnienia (przez grzebanie w kodzie sterownika).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Propox MMnet1001, I2C, TLV320AIC23B

W kodzie sterownika... ale sterownika od I2C czy samego kodeka?

OpenWRT dla AT91 : Propox MMnet1001 + EVBmm(Tm) : Linux MMnet 2.6.36.4 armv5tejl : OpenWRT TRUNK

4

Odp: Propox MMnet1001, I2C, TLV320AIC23B

Sterownika.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Propox MMnet1001, I2C, TLV320AIC23B

Rozumiem, że sterownika od I2C, ale nie potrafię w sterownikach znaleźć odpowiedniej wartości sterującej tym opóźnieniem.

OpenWRT dla AT91 : Propox MMnet1001 + EVBmm(Tm) : Linux MMnet 2.6.36.4 armv5tejl : OpenWRT TRUNK

6

Odp: Propox MMnet1001, I2C, TLV320AIC23B

Doszedłem do tego, że prędkością I2C mogę sterować poprzez argument przy bootowaniu 'i2c_bus'. Próbowałem już różne kombinacje i efekt mizerny... natrafiłem też na to że kodek może mieć tryb pracy źle ustawiony, wg. dokumentacji powinien być w trybie SLAVE, jednak z kolei nie wiem jak to cholerstwo poprawnie ustawić.

OpenWRT dla AT91 : Propox MMnet1001 + EVBmm(Tm) : Linux MMnet 2.6.36.4 armv5tejl : OpenWRT TRUNK

7

Odp: Propox MMnet1001, I2C, TLV320AIC23B

Znalazłem rozwiązanie.
Natura problemu okazała się być techniczna, a nie jak wcześniej podejrzewałem programowa.

Rozwiązaniem okazało się dolutowanie do linii SDIN i SCLK po jednym rezystorze podciągającym, każdy po 10k.

OpenWRT dla AT91 : Propox MMnet1001 + EVBmm(Tm) : Linux MMnet 2.6.36.4 armv5tejl : OpenWRT TRUNK