mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-05-13 04:18:46 +00:00
display_identify: improve identification of ILI9341
This commit is contained in:
parent
cc3882abf1
commit
c0b5d33743
@ -44,8 +44,7 @@
|
|||||||
|
|
||||||
// ST7789V => 00 85 85 52
|
// ST7789V => 00 85 85 52
|
||||||
// GC9307 => 00 00 93 07
|
// GC9307 => 00 00 93 07
|
||||||
// ILI9341V => 00 00 80 00
|
// ILI9341V => 00 00 93 41
|
||||||
// some of the modules return "00 00 00 00", which means the vendor did not set the value
|
|
||||||
static uint32_t __attribute__((unused)) display_identify(void)
|
static uint32_t __attribute__((unused)) display_identify(void)
|
||||||
{
|
{
|
||||||
volatile uint8_t c;
|
volatile uint8_t c;
|
||||||
@ -57,6 +56,21 @@ static uint32_t __attribute__((unused)) display_identify(void)
|
|||||||
c = ADDR; id |= (c << 8); // ID2 - module/driver version ID
|
c = ADDR; id |= (c << 8); // ID2 - module/driver version ID
|
||||||
c = ADDR; id |= c; // ID3 - module/drive ID
|
c = ADDR; id |= c; // ID3 - module/drive ID
|
||||||
|
|
||||||
|
// the default RDDID for ILI9341 should be 0x8000.
|
||||||
|
// some display modules return 0x0.
|
||||||
|
// the ILI9341 has an extra id, let's check it here.
|
||||||
|
if ((id != 0x858552U) && (id != 0x9307U)) { // if not ST7789V and not GC9307
|
||||||
|
uint32_t id4 = 0;
|
||||||
|
CMD(0xD3); // Read ID4
|
||||||
|
c = ADDR; // dummy data - discard
|
||||||
|
c = ADDR; id4 |= (c << 16); // IC version
|
||||||
|
c = ADDR; id4 |= (c << 8); // IC model name byte 1
|
||||||
|
c = ADDR; id4 |= c; // IC model name byte 2
|
||||||
|
if (id4 == 0x9341U) { // definitely found a ILI9341
|
||||||
|
id = id4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user