From 9d2cb3ad5efb15293474184cc2770ba525b9faf5 Mon Sep 17 00:00:00 2001 From: Piotr Dobrowolski Date: Mon, 25 Jun 2018 21:56:55 +0200 Subject: [PATCH] rx0-t0 --- app/application.cpp | 93 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 13 deletions(-) diff --git a/app/application.cpp b/app/application.cpp index 5a19d0a..63b7b7d 100644 --- a/app/application.cpp +++ b/app/application.cpp @@ -183,9 +183,35 @@ uint8_t matrixInit() { i2cWrite(0x64, 0x2d, 0x82); i2cWrite(0x64, 0x40, 0x00); + i2cWrite(0x64, 0x41, 0x00); + i2cWrite(0x64, 0x42, 0x3f); + i2cWrite(0x64, 0x43, 0x01); + i2cWrite(0x64, 0x44, 0x43); + i2cWrite(0x64, 0x45, 0x14); + i2cWrite(0x64, 0x46, 0xe4); + i2cWrite(0x64, 0x47, 0x80); + i2cWrite(0x64, 0x48, 0x04); + i2cWrite(0x64, 0x49, 0b10110100); + i2cWrite(0x64, 0x4a, 0xff); //i2cWrite(0x64, 0x49, 0xc0); - i2cWrite(0x64, 0x4b, 0x06); - i2cWrite(0x64, 0x4c, 0x76); + i2cWrite(0x64, 0x4b, 0x24); + + uint8_t err; + uint8_t physettings[4] = {0x4c, 0x02, 0x50, 0x00}; + + if ((err = twi_writeTo(0x64, physettings, 4, true)) != 0) { + Serial.printf("rxphy write failed: %d\r\n", err); + } + + physettings[0] = 0x4d; + physettings[1] = 0x16; + physettings[2] = 0x21; + + if ((err = twi_writeTo(0x64, physettings, 3, true)) != 0) { + Serial.printf("txphy write failed: %d\r\n", err); + } + + //i2cWrite(0x64, 0x4c, 0x76); /*debugf("reg49: %02x", get_reg49_value()); @@ -205,8 +231,8 @@ uint8_t matrixInit() { //i2cWrite(0x64, 0x49, 0xc0); //i2cWrite(0x64, 0x4a, 0b11000000); - i2cWrite(0x65, 0x0f, 0x10); - i2cWrite(0x64, 0x4a, 0b11101111); + //i2cWrite(0x65, 0x0f, 0x10); + //i2cWrite(0x64, 0x4a, 0b11101111); } void i2cDump(uint8_t addr) { @@ -242,7 +268,7 @@ void init() matrixInit(); - procTimer.initializeMs(3000, *[]() { + procTimer.initializeMs(500, *[]() { Serial.println(millis()); Serial.println("Hello!"); debugf(" int: %02x %02x %02x", i2cRead(0x64, 0x29, 3), Wire.read(), Wire.read()); @@ -263,6 +289,8 @@ void init() debugf("ctrl11: %02x", i2cRead(0x64, 0x4b)); + debugf("rxphy: %02x %02x %02x", i2cRead(0x64, 0x4c, 3), Wire.read(), Wire.read()); + debugf("txphy: %02x %02x", i2cRead(0x64, 0x4d, 2), Wire.read()); //i2cDump(0x64); /*setEDID(0, edidbuf); @@ -271,19 +299,58 @@ void init() setEDID(3, edidbuf);*/ - Serial.println("====\n\n0x65 (0):"); + //Serial.println("====\n\n0x65 (0):"); //select_output(0); //i2cDump(0x65); + for (int port = 0; port < 4; port++) { + Serial.printf("RX Port %d: ", port); + i2cWrite(0x65, 0x07, port); + uint8_t status = i2cRead(0x65, 0x07); + if (status & 0x80) Serial.printf("online "); + if (status & 0x40) Serial.printf("de "); + if (status & 0x20) Serial.printf("hdmi "); + if (status & 0x10) Serial.printf("enc "); - Serial.printf("%02x ", i2cRead(0x65, 0x07)); - Serial.printf("%02x ", i2cRead(0x65, 0x09)); - Serial.printf("%02x \r\n", i2cRead(0x65, 0x0f)); - Serial.println("====\n\n0x65 (1):"); + uint8_t status2 = i2cRead(0x65, 0x08); + if (status2 & 0x40) Serial.printf("vsync "); + + Serial.printf("[%02x ", i2cRead(0x65, 0x07)); + Serial.printf("%02x ", i2cRead(0x65, 0x08)); + Serial.printf("%02x ", i2cRead(0x65, 0x09)); + Serial.printf("%02x ", i2cRead(0x65, 0x0a)); + Serial.printf("%02x ", i2cRead(0x65, 0x0e)); + Serial.printf("%02x] \r\n", i2cRead(0x65, 0x0f)); + } + + for (int port = 0; port < 2; port++) { + Serial.printf("TX Port %d: ", port); + i2cWrite(0x65, 0x07, port << 2); + + uint8_t status = i2cRead(0x65, 0x08); + if (status & 0x80) Serial.printf("mute "); + if (status & 0x02) Serial.printf("enc_opt "); + + uint8_t status3 = i2cRead(0x65, 0x09); + if (status3 & 0x04) Serial.printf("rsen "); + + uint8_t status4 = i2cRead(0x65, 0x0f); + if (status4 & 0x01) Serial.printf("enc "); + if (status4 & 0x02) Serial.printf("ri_rdy "); + if (status4 & 0x10) Serial.printf("rptr "); + + Serial.printf("[%02x ", i2cRead(0x65, 0x07)); + Serial.printf("%02x ", i2cRead(0x65, 0x08)); + Serial.printf("%02x ", i2cRead(0x65, 0x09)); + Serial.printf("%02x ", i2cRead(0x65, 0x0a)); + Serial.printf("%02x ", i2cRead(0x65, 0x0e)); + Serial.printf("%02x]\r\n", i2cRead(0x65, 0x0f)); + } + //Serial.println("====\n\n0x65 (1):"); //select_output(1); //i2cDump(0x65); - Serial.printf("%02x ", i2cRead(0x65, 0x07)); - Serial.printf("%02x ", i2cRead(0x65, 0x09)); - Serial.printf("%02x \r\n", i2cRead(0x65, 0x0f)); + //Serial.printf("%02x ", i2cRead(0x65, 0x07)); + //Serial.printf("%02x ", i2cRead(0x65, 0x09)); + //Serial.printf("%02x \r\n", i2cRead(0x65, 0x0f)); }).start(); }