Skip to content

Commit 18002c9

Browse files
authored
Update SetSysEdid to include different types of Extension blocks (#677)
1 parent f094767 commit 18002c9

File tree

1 file changed

+29
-13
lines changed
  • nx/include/switch/services

1 file changed

+29
-13
lines changed

nx/include/switch/services/set.h

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -487,14 +487,38 @@ typedef struct {
487487
u8 padding[2];
488488
} SetSysDataBlock;
489489

490+
typedef struct {
491+
u8 extension_tag; ///< 2 = CEA EDID timing extension, 0x70 = DisplayID Extension Block, 0xF0 = EDID Extension Block Map
492+
union {
493+
struct {
494+
u8 revision;
495+
u8 dtd_start;
496+
u8 native_dtd_count : 4;
497+
u8 native_dtd_feature_bitmap : 4;
498+
SetSysDataBlock data_block;
499+
SetSysModeLine extended_timing_descriptor[5];
500+
u8 padding[5];
501+
} NX_PACKED cea; ///< CEA EDID timing extension
502+
struct {
503+
u8 data[0x7E];
504+
} display_id; ///< [13.0.0+] DisplayID Extension Block
505+
struct {
506+
u8 second_block_extension_tag;
507+
u8 third_block_extension_tag;
508+
u8 padding[0x7C];
509+
} block_map; ///< [13.0.0+] EDID Extension Block Map
510+
} extension_block;
511+
u8 extended_checksum; ///< Sum of 128 extended bytes should equal 0 mod 256.
512+
} SetSysExtensionBlock;
513+
490514
/// Edid
491515
typedef struct {
492516
u8 pattern[8]; ///< Fixed pattern 00 FF FF FF FF FF FF 00.
493517
u16 pnp_id; ///< Big-endian set of 3 5-bit values representing letters, 1 = A .. 26 = Z.
494518
u16 product_code;
495519
u32 serial_number;
496520
u8 manufacture_week;
497-
u8 manufacture_year; ///< Real value is val - 10.
521+
u8 manufacture_year; ///< Real year is 1990 + val.
498522
u8 edid_version;
499523
u8 edid_revision;
500524
u8 video_input_parameters_bitmap;
@@ -545,20 +569,12 @@ typedef struct {
545569
u8 extended_timing_info;
546570
u8 padding[7];
547571
} display_descriptor_range_limits;
548-
u8 extension_count; ///< Always 1.
572+
u8 extension_count;
549573
u8 checksum; ///< Sum of all 128 bytes should equal 0 mod 256.
550574
///< Extended data.
551-
u8 extension_tag; ///< Always 2 = CEA EDID timing extension.
552-
u8 revision;
553-
u8 dtd_start;
554-
u8 native_dtd_count : 4;
555-
u8 native_dtd_feature_bitmap : 4;
556-
SetSysDataBlock data_block;
557-
SetSysModeLine extended_timing_descriptor[5];
558-
u8 padding[5];
559-
u8 extended_checksum; ///< Sum of 128 extended bytes should equal 0 mod 256.
560-
u8 data2[0x80]; ///< [13.0.0+]
561-
u8 data3[0x80]; ///< [13.0.0+]
575+
SetSysExtensionBlock data1;
576+
SetSysExtensionBlock data2; ///< [13.0.0+]
577+
SetSysExtensionBlock data3; ///< [13.0.0+]
562578
} SetSysEdid;
563579

564580
/// DataDeletionSettings

0 commit comments

Comments
 (0)