From 69025ec04153b6f6df6b1fd7eb2429b2f6062f0f Mon Sep 17 00:00:00 2001 From: asyncnomi <41596453+asyncnomi@users.noreply.github.com> Date: Sat, 11 Nov 2023 16:37:37 +0100 Subject: [PATCH 1/2] Update TP2825.c --- src/driver/TP2825.c | 139 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 110 insertions(+), 29 deletions(-) diff --git a/src/driver/TP2825.c b/src/driver/TP2825.c index 66dbd6d0..f6ac89f8 100644 --- a/src/driver/TP2825.c +++ b/src/driver/TP2825.c @@ -52,33 +52,37 @@ void TP2825_Config(int ch_sel, int is_pal) // ch_sel: 0=AV in; 1=Module bay I2C_Write(ADDR_TP2825, 0x0D, 0x11); I2C_Write(ADDR_TP2825, 0x0E, 0x00); I2C_Write(ADDR_TP2825, 0x0F, 0x00); - - // I2C_Write(ADDR_TP2825, 0x15, 0x13); - I2C_Write(ADDR_TP2825, 0x16, 0x4A); - I2C_Write(ADDR_TP2825, 0x17, 0xC0); - I2C_Write(ADDR_TP2825, 0x18, 0x17); + I2C_Write(ADDR_TP2825, 0x10, 0x70); + I2C_Write(ADDR_TP2825, 0x11, 0x4D); + I2C_Write(ADDR_TP2825, 0x12, 0x40); + I2C_Write(ADDR_TP2825, 0x13, 0x00); + I2C_Write(ADDR_TP2825, 0x14, 0x00); + I2C_Write(ADDR_TP2825, 0x15, 0x13); + I2C_Write(ADDR_TP2825, 0x16, 0x67); + I2C_Write(ADDR_TP2825, 0x17, 0xBC); + I2C_Write(ADDR_TP2825, 0x18, 0x16); I2C_Write(ADDR_TP2825, 0x19, 0x20); I2C_Write(ADDR_TP2825, 0x1A, 0x17); + I2C_Write(ADDR_TP2825, 0x1B, 0x00); I2C_Write(ADDR_TP2825, 0x1C, 0x09); I2C_Write(ADDR_TP2825, 0x1D, 0x48); - - I2C_Write(ADDR_TP2825, 0x20, g_hw_stat.IS_TP2825_L ? 0x40 : 0xB0); + I2C_Write(ADDR_TP2825, 0x1E, 0x80); + I2C_Write(ADDR_TP2825, 0x1F, 0x80); + I2C_Write(ADDR_TP2825, 0x20, 0xB0); I2C_Write(ADDR_TP2825, 0x21, 0x86); I2C_Write(ADDR_TP2825, 0x22, 0x38); I2C_Write(ADDR_TP2825, 0x23, 0x3C); - // I2C_Write(ADDR_TP2825, 0x24, 0x56); + I2C_Write(ADDR_TP2825, 0x24, 0x56); I2C_Write(ADDR_TP2825, 0x25, 0xFF); - I2C_Write(ADDR_TP2825, 0x26, 0x02); I2C_Write(ADDR_TP2825, 0x27, 0x2D); - I2C_Write(ADDR_TP2825, 0x28, 0xC5); //--- - I2C_Write(ADDR_TP2825, 0x29, 0x18); //--- - I2C_Write(ADDR_TP2825, 0x2A, 0x30); //--- + I2C_Write(ADDR_TP2825, 0x28, 0x00); + I2C_Write(ADDR_TP2825, 0x29, 0x48); + I2C_Write(ADDR_TP2825, 0x2A, 0x30); I2C_Write(ADDR_TP2825, 0x2B, 0x70); I2C_Write(ADDR_TP2825, 0x2C, 0x1A); I2C_Write(ADDR_TP2825, 0x2D, 0x60); I2C_Write(ADDR_TP2825, 0x2E, 0x5E); I2C_Write(ADDR_TP2825, 0x2F, 0x00); - I2C_Write(ADDR_TP2825, 0x30, 0x7A); I2C_Write(ADDR_TP2825, 0x31, 0x4A); I2C_Write(ADDR_TP2825, 0x32, 0x4D); @@ -95,9 +99,7 @@ void TP2825_Config(int ch_sel, int is_pal) // ch_sel: 0=AV in; 1=Module bay I2C_Write(ADDR_TP2825, 0x3D, 0x60); I2C_Write(ADDR_TP2825, 0x3E, 0x00); I2C_Write(ADDR_TP2825, 0x3F, 0x00); - I2C_Write(ADDR_TP2825, 0x40, 0x00); - // I2C_Write(ADDR_TP2825, 0x41, 0x00); I2C_Write(ADDR_TP2825, 0x42, 0x00); I2C_Write(ADDR_TP2825, 0x43, 0x12); I2C_Write(ADDR_TP2825, 0x44, 0x07); @@ -108,10 +110,24 @@ void TP2825_Config(int ch_sel, int is_pal) // ch_sel: 0=AV in; 1=Module bay I2C_Write(ADDR_TP2825, 0x49, 0x00); I2C_Write(ADDR_TP2825, 0x4A, 0x00); I2C_Write(ADDR_TP2825, 0x4B, 0x00); - I2C_Write(ADDR_TP2825, 0x4C, 0xC3); - I2C_Write(ADDR_TP2825, 0x4D, 0x01); + I2C_Write(ADDR_TP2825, 0x4C, 0x03); + I2C_Write(ADDR_TP2825, 0x4D, 0x03); I2C_Write(ADDR_TP2825, 0x4E, 0x37); - I2C_Write(ADDR_TP2825, 0x4F, 0x00); + I2C_Write(ADDR_TP2825, 0x4F, 0x01); + I2C_Write(ADDR_TP2825, 0xB5, 0x01); + I2C_Write(ADDR_TP2825, 0xB8, 0x02); + I2C_Write(ADDR_TP2825, 0xBA, 0x10); + I2C_Write(ADDR_TP2825, 0xF3, 0x00); + I2C_Write(ADDR_TP2825, 0xF4, 0x00); + I2C_Write(ADDR_TP2825, 0xF5, 0x00); + I2C_Write(ADDR_TP2825, 0xF6, 0x00); + I2C_Write(ADDR_TP2825, 0xF7, 0x00); + I2C_Write(ADDR_TP2825, 0xF8, 0x00); + I2C_Write(ADDR_TP2825, 0xF9, 0x00); + I2C_Write(ADDR_TP2825, 0xFA, 0x00); + I2C_Write(ADDR_TP2825, 0xFB, 0x00); + I2C_Write(ADDR_TP2825, 0xFC, 0xC0); + I2C_Write(ADDR_TP2825, 0xFD, 0x00); } else { I2C_Write(ADDR_TP2825, 0x02, 0xCF); I2C_Write(ADDR_TP2825, 0x06, 0x32); @@ -192,27 +208,92 @@ void TP2825_Config(int ch_sel, int is_pal) // ch_sel: 0=AV in; 1=Module bay void TP2825_Switch_Mode(int is_pal) { if (is_pal) { I2C_Write(ADDR_TP2825, 0x02, 0xCE); + I2C_Write(ADDR_TP2825, 0x06, 0x32); + I2C_Write(ADDR_TP2825, 0x07, 0xC0); + I2C_Write(ADDR_TP2825, 0x08, 0x00); + I2C_Write(ADDR_TP2825, 0x09, 0x24); + I2C_Write(ADDR_TP2825, 0x0A, 0x48); + I2C_Write(ADDR_TP2825, 0x0B, 0xC0); + I2C_Write(ADDR_TP2825, 0x0C, 0x53); I2C_Write(ADDR_TP2825, 0x0D, 0x11); - + I2C_Write(ADDR_TP2825, 0x0E, 0x00); + I2C_Write(ADDR_TP2825, 0x0F, 0x00); + I2C_Write(ADDR_TP2825, 0x10, 0x70); + I2C_Write(ADDR_TP2825, 0x11, 0x4D); + I2C_Write(ADDR_TP2825, 0x12, 0x40); + I2C_Write(ADDR_TP2825, 0x13, 0x00); + I2C_Write(ADDR_TP2825, 0x14, 0x00); + I2C_Write(ADDR_TP2825, 0x15, 0x13); + I2C_Write(ADDR_TP2825, 0x16, 0x67); + I2C_Write(ADDR_TP2825, 0x17, 0xBC); + I2C_Write(ADDR_TP2825, 0x18, 0x16); I2C_Write(ADDR_TP2825, 0x19, 0x20); I2C_Write(ADDR_TP2825, 0x1A, 0x17); + I2C_Write(ADDR_TP2825, 0x1B, 0x00); I2C_Write(ADDR_TP2825, 0x1C, 0x09); I2C_Write(ADDR_TP2825, 0x1D, 0x48); - I2C_Write(ADDR_TP2825, 0x16, 0x4A); - I2C_Write(ADDR_TP2825, 0x18, 0x17); - - I2C_Write(ADDR_TP2825, 0x20, g_hw_stat.IS_TP2825_L ? 0x40 : 0xB0); - I2C_Write(ADDR_TP2825, 0x26, 0x02); + I2C_Write(ADDR_TP2825, 0x1E, 0x80); + I2C_Write(ADDR_TP2825, 0x1F, 0x80); + I2C_Write(ADDR_TP2825, 0x20, 0xB0); + I2C_Write(ADDR_TP2825, 0x21, 0x86); + I2C_Write(ADDR_TP2825, 0x22, 0x38); + I2C_Write(ADDR_TP2825, 0x23, 0x3C); + I2C_Write(ADDR_TP2825, 0x24, 0x56); + I2C_Write(ADDR_TP2825, 0x25, 0xFF); + I2C_Write(ADDR_TP2825, 0x27, 0x2D); + I2C_Write(ADDR_TP2825, 0x28, 0x00); + I2C_Write(ADDR_TP2825, 0x29, 0x48); + I2C_Write(ADDR_TP2825, 0x2A, 0x30); + I2C_Write(ADDR_TP2825, 0x2B, 0x70); + I2C_Write(ADDR_TP2825, 0x2C, 0x1A); I2C_Write(ADDR_TP2825, 0x2D, 0x60); - + I2C_Write(ADDR_TP2825, 0x2E, 0x5E); + I2C_Write(ADDR_TP2825, 0x2F, 0x00); I2C_Write(ADDR_TP2825, 0x30, 0x7A); I2C_Write(ADDR_TP2825, 0x31, 0x4A); I2C_Write(ADDR_TP2825, 0x32, 0x4D); I2C_Write(ADDR_TP2825, 0x33, 0xF0); - - I2C_Write(ADDR_TP2825, 0x4C, 0xC3); - I2C_Write(ADDR_TP2825, 0x4D, 0x01); - I2C_Write(ADDR_TP2825, 0x4F, 0x00); + I2C_Write(ADDR_TP2825, 0x34, 0x00); + I2C_Write(ADDR_TP2825, 0x35, 0x65); + I2C_Write(ADDR_TP2825, 0x36, 0xDC); + I2C_Write(ADDR_TP2825, 0x37, 0x00); + I2C_Write(ADDR_TP2825, 0x38, 0x40); + I2C_Write(ADDR_TP2825, 0x39, 0x84); + I2C_Write(ADDR_TP2825, 0x3A, 0x00); + I2C_Write(ADDR_TP2825, 0x3B, 0x03); + I2C_Write(ADDR_TP2825, 0x3C, 0x00); + I2C_Write(ADDR_TP2825, 0x3D, 0x60); + I2C_Write(ADDR_TP2825, 0x3E, 0x00); + I2C_Write(ADDR_TP2825, 0x3F, 0x00); + I2C_Write(ADDR_TP2825, 0x40, 0x00); + I2C_Write(ADDR_TP2825, 0x42, 0x00); + I2C_Write(ADDR_TP2825, 0x43, 0x12); + I2C_Write(ADDR_TP2825, 0x44, 0x07); + I2C_Write(ADDR_TP2825, 0x45, 0x49); + I2C_Write(ADDR_TP2825, 0x46, 0x00); + I2C_Write(ADDR_TP2825, 0x47, 0x00); + I2C_Write(ADDR_TP2825, 0x48, 0x00); + I2C_Write(ADDR_TP2825, 0x49, 0x00); + I2C_Write(ADDR_TP2825, 0x4A, 0x00); + I2C_Write(ADDR_TP2825, 0x4B, 0x00); + I2C_Write(ADDR_TP2825, 0x4C, 0x03); + I2C_Write(ADDR_TP2825, 0x4D, 0x03); + I2C_Write(ADDR_TP2825, 0x4E, 0x37); + I2C_Write(ADDR_TP2825, 0x4F, 0x01); + I2C_Write(ADDR_TP2825, 0xB5, 0x01); + I2C_Write(ADDR_TP2825, 0xB8, 0x02); + I2C_Write(ADDR_TP2825, 0xBA, 0x10); + I2C_Write(ADDR_TP2825, 0xF3, 0x00); + I2C_Write(ADDR_TP2825, 0xF4, 0x00); + I2C_Write(ADDR_TP2825, 0xF5, 0x00); + I2C_Write(ADDR_TP2825, 0xF6, 0x00); + I2C_Write(ADDR_TP2825, 0xF7, 0x00); + I2C_Write(ADDR_TP2825, 0xF8, 0x00); + I2C_Write(ADDR_TP2825, 0xF9, 0x00); + I2C_Write(ADDR_TP2825, 0xFA, 0x00); + I2C_Write(ADDR_TP2825, 0xFB, 0x00); + I2C_Write(ADDR_TP2825, 0xFC, 0xC0); + I2C_Write(ADDR_TP2825, 0xFD, 0x00); } else { I2C_Write(ADDR_TP2825, 0x02, 0xCF); I2C_Write(ADDR_TP2825, 0x0D, 0x10); From 82fd546f72aacf2bd507f707cf644c451796c9e9 Mon Sep 17 00:00:00 2001 From: asyncnomi <41596453+asyncnomi@users.noreply.github.com> Date: Sat, 11 Nov 2023 16:39:16 +0100 Subject: [PATCH 2/2] Update TP2825.c disable color loss --- src/driver/TP2825.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/driver/TP2825.c b/src/driver/TP2825.c index f6ac89f8..e96a7949 100644 --- a/src/driver/TP2825.c +++ b/src/driver/TP2825.c @@ -77,7 +77,7 @@ void TP2825_Config(int ch_sel, int is_pal) // ch_sel: 0=AV in; 1=Module bay I2C_Write(ADDR_TP2825, 0x27, 0x2D); I2C_Write(ADDR_TP2825, 0x28, 0x00); I2C_Write(ADDR_TP2825, 0x29, 0x48); - I2C_Write(ADDR_TP2825, 0x2A, 0x30); + I2C_Write(ADDR_TP2825, 0x2A, 0xB0); I2C_Write(ADDR_TP2825, 0x2B, 0x70); I2C_Write(ADDR_TP2825, 0x2C, 0x1A); I2C_Write(ADDR_TP2825, 0x2D, 0x60); @@ -243,7 +243,7 @@ void TP2825_Switch_Mode(int is_pal) { I2C_Write(ADDR_TP2825, 0x27, 0x2D); I2C_Write(ADDR_TP2825, 0x28, 0x00); I2C_Write(ADDR_TP2825, 0x29, 0x48); - I2C_Write(ADDR_TP2825, 0x2A, 0x30); + I2C_Write(ADDR_TP2825, 0x2A, 0xB0); I2C_Write(ADDR_TP2825, 0x2B, 0x70); I2C_Write(ADDR_TP2825, 0x2C, 0x1A); I2C_Write(ADDR_TP2825, 0x2D, 0x60);