Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/displayid: convert to drm_edid

We'll need to propagate drm_edid everywhere.

v2: Rebase

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/a52a6882e87a4bb6b1670918f3aba13f9b52f6de.1652097712.git.jani.nikula@intel.com

+25 -20
+8 -8
drivers/gpu/drm/drm_displayid.c
··· 33 33 return 0; 34 34 } 35 35 36 - static const u8 *drm_find_displayid_extension(const struct edid *edid, 36 + static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid, 37 37 int *length, int *idx, 38 38 int *ext_index) 39 39 { 40 - const u8 *displayid = drm_find_edid_extension(edid, DISPLAYID_EXT, ext_index); 40 + const u8 *displayid = drm_find_edid_extension(drm_edid, DISPLAYID_EXT, ext_index); 41 41 const struct displayid_header *base; 42 42 int ret; 43 43 ··· 58 58 return displayid; 59 59 } 60 60 61 - void displayid_iter_edid_begin(const struct edid *edid, 61 + void displayid_iter_edid_begin(const struct drm_edid *drm_edid, 62 62 struct displayid_iter *iter) 63 63 { 64 64 memset(iter, 0, sizeof(*iter)); 65 65 66 - iter->edid = edid; 66 + iter->drm_edid = drm_edid; 67 67 } 68 68 69 69 static const struct displayid_block * ··· 88 88 { 89 89 const struct displayid_block *block; 90 90 91 - if (!iter->edid) 91 + if (!iter->drm_edid) 92 92 return NULL; 93 93 94 94 if (iter->section) { ··· 96 96 block = displayid_iter_block(iter); 97 97 if (WARN_ON(!block)) { 98 98 iter->section = NULL; 99 - iter->edid = NULL; 99 + iter->drm_edid = NULL; 100 100 return NULL; 101 101 } 102 102 ··· 109 109 } 110 110 111 111 for (;;) { 112 - iter->section = drm_find_displayid_extension(iter->edid, 112 + iter->section = drm_find_displayid_extension(iter->drm_edid, 113 113 &iter->length, 114 114 &iter->idx, 115 115 &iter->ext_index); 116 116 if (!iter->section) { 117 - iter->edid = NULL; 117 + iter->drm_edid = NULL; 118 118 return NULL; 119 119 } 120 120
+10 -7
drivers/gpu/drm/drm_edid.c
··· 3563 3563 3564 3564 /* 3565 3565 * Search EDID for CEA extension block. 3566 + * 3567 + * FIXME: Prefer not returning pointers to raw EDID data. 3566 3568 */ 3567 - const u8 *drm_find_edid_extension(const struct edid *edid, 3569 + const u8 *drm_find_edid_extension(const struct drm_edid *drm_edid, 3568 3570 int ext_id, int *ext_index) 3569 3571 { 3572 + const struct edid *edid = drm_edid ? drm_edid->edid : NULL; 3570 3573 const u8 *edid_ext = NULL; 3571 3574 int i; 3572 3575 ··· 3601 3598 bool found = false; 3602 3599 3603 3600 /* Look for a top level CEA extension block */ 3604 - if (drm_find_edid_extension(drm_edid->edid, CEA_EXT, &ext_index)) 3601 + if (drm_find_edid_extension(drm_edid, CEA_EXT, &ext_index)) 3605 3602 return true; 3606 3603 3607 3604 /* CEA blocks can also be found embedded in a DisplayID block */ 3608 - displayid_iter_edid_begin(drm_edid->edid, &iter); 3605 + displayid_iter_edid_begin(drm_edid, &iter); 3609 3606 displayid_iter_for_each(block, &iter) { 3610 3607 if (block->tag == DATA_BLOCK_CTA) { 3611 3608 found = true; ··· 4457 4454 memset(iter, 0, sizeof(*iter)); 4458 4455 4459 4456 drm_edid_iter_begin(drm_edid, &iter->edid_iter); 4460 - displayid_iter_edid_begin(drm_edid ? drm_edid->edid : NULL, &iter->displayid_iter); 4457 + displayid_iter_edid_begin(drm_edid, &iter->displayid_iter); 4461 4458 } 4462 4459 4463 4460 static const struct cea_db * ··· 5660 5657 const struct displayid_block *block; 5661 5658 struct displayid_iter iter; 5662 5659 5663 - displayid_iter_edid_begin(drm_edid->edid, &iter); 5660 + displayid_iter_edid_begin(drm_edid, &iter); 5664 5661 displayid_iter_for_each(block, &iter) { 5665 5662 if (block->tag == DATA_BLOCK_2_VENDOR_SPECIFIC) 5666 5663 drm_parse_vesa_mso_data(connector, block); ··· 5875 5872 struct displayid_iter iter; 5876 5873 int num_modes = 0; 5877 5874 5878 - displayid_iter_edid_begin(drm_edid->edid, &iter); 5875 + displayid_iter_edid_begin(drm_edid, &iter); 5879 5876 displayid_iter_for_each(block, &iter) { 5880 5877 if (block->tag == DATA_BLOCK_TYPE_1_DETAILED_TIMING || 5881 5878 block->tag == DATA_BLOCK_2_TYPE_7_DETAILED_TIMING) ··· 6375 6372 6376 6373 connector->has_tile = false; 6377 6374 6378 - displayid_iter_edid_begin(drm_edid ? drm_edid->edid : NULL, &iter); 6375 + displayid_iter_edid_begin(drm_edid, &iter); 6379 6376 displayid_iter_for_each(block, &iter) { 6380 6377 if (block->tag == DATA_BLOCK_TILED_DISPLAY) 6381 6378 drm_parse_tiled_block(connector, block);
+3 -3
include/drm/drm_displayid.h
··· 25 25 #include <linux/types.h> 26 26 #include <linux/bits.h> 27 27 28 - struct edid; 28 + struct drm_edid; 29 29 30 30 #define VESA_IEEE_OUI 0x3a0292 31 31 ··· 141 141 142 142 /* DisplayID iteration */ 143 143 struct displayid_iter { 144 - const struct edid *edid; 144 + const struct drm_edid *drm_edid; 145 145 146 146 const u8 *section; 147 147 int length; ··· 149 149 int ext_index; 150 150 }; 151 151 152 - void displayid_iter_edid_begin(const struct edid *edid, 152 + void displayid_iter_edid_begin(const struct drm_edid *drm_edid, 153 153 struct displayid_iter *iter); 154 154 const struct displayid_block * 155 155 __displayid_iter_next(struct displayid_iter *iter);
+4 -2
include/drm/drm_edid.h
··· 28 28 #include <drm/drm_mode.h> 29 29 30 30 struct drm_device; 31 + struct drm_edid; 31 32 struct i2c_adapter; 32 33 33 34 #define EDID_LENGTH 128 ··· 579 578 struct drm_display_mode * 580 579 drm_display_mode_from_cea_vic(struct drm_device *dev, 581 580 u8 video_code); 582 - const u8 *drm_find_edid_extension(const struct edid *edid, 583 - int ext_id, int *ext_index); 584 581 582 + /* Interface based on struct drm_edid */ 583 + const u8 *drm_find_edid_extension(const struct drm_edid *drm_edid, 584 + int ext_id, int *ext_index); 585 585 586 586 #endif /* __DRM_EDID_H__ */