| @@ -247,26 +247,28 @@ bool drm_edid_is_valid(struct edid *edid | | | @@ -247,26 +247,28 @@ bool drm_edid_is_valid(struct edid *edid |
247 | u8 *raw = (u8 *)edid; | | 247 | u8 *raw = (u8 *)edid; |
248 | | | 248 | |
249 | if (!edid) | | 249 | if (!edid) |
250 | return false; | | 250 | return false; |
251 | | | 251 | |
252 | for (i = 0; i <= edid->extensions; i++) | | 252 | for (i = 0; i <= edid->extensions; i++) |
253 | if (!drm_edid_block_valid(raw + i * EDID_LENGTH, i, true)) | | 253 | if (!drm_edid_block_valid(raw + i * EDID_LENGTH, i, true)) |
254 | return false; | | 254 | return false; |
255 | | | 255 | |
256 | return true; | | 256 | return true; |
257 | } | | 257 | } |
258 | EXPORT_SYMBOL(drm_edid_is_valid); | | 258 | EXPORT_SYMBOL(drm_edid_is_valid); |
259 | | | 259 | |
| | | 260 | #ifndef __NetBSD__ /* XXX i2c */ |
| | | 261 | |
260 | #define DDC_SEGMENT_ADDR 0x30 | | 262 | #define DDC_SEGMENT_ADDR 0x30 |
261 | /** | | 263 | /** |
262 | * Get EDID information via I2C. | | 264 | * Get EDID information via I2C. |
263 | * | | 265 | * |
264 | * \param adapter : i2c device adaptor | | 266 | * \param adapter : i2c device adaptor |
265 | * \param buf : EDID data buffer to be filled | | 267 | * \param buf : EDID data buffer to be filled |
266 | * \param len : EDID data buffer length | | 268 | * \param len : EDID data buffer length |
267 | * \return 0 on success or -1 on failure. | | 269 | * \return 0 on success or -1 on failure. |
268 | * | | 270 | * |
269 | * Try to fetch EDID information by calling i2c driver function. | | 271 | * Try to fetch EDID information by calling i2c driver function. |
270 | */ | | 272 | */ |
271 | static int | | 273 | static int |
272 | drm_do_probe_ddc_edid(struct i2c_adapter *adapter, unsigned char *buf, | | 274 | drm_do_probe_ddc_edid(struct i2c_adapter *adapter, unsigned char *buf, |
| @@ -427,26 +429,28 @@ EXPORT_SYMBOL(drm_probe_ddc); | | | @@ -427,26 +429,28 @@ EXPORT_SYMBOL(drm_probe_ddc); |
427 | */ | | 429 | */ |
428 | struct edid *drm_get_edid(struct drm_connector *connector, | | 430 | struct edid *drm_get_edid(struct drm_connector *connector, |
429 | struct i2c_adapter *adapter) | | 431 | struct i2c_adapter *adapter) |
430 | { | | 432 | { |
431 | struct edid *edid = NULL; | | 433 | struct edid *edid = NULL; |
432 | | | 434 | |
433 | if (drm_probe_ddc(adapter)) | | 435 | if (drm_probe_ddc(adapter)) |
434 | edid = (struct edid *)drm_do_get_edid(connector, adapter); | | 436 | edid = (struct edid *)drm_do_get_edid(connector, adapter); |
435 | | | 437 | |
436 | return edid; | | 438 | return edid; |
437 | } | | 439 | } |
438 | EXPORT_SYMBOL(drm_get_edid); | | 440 | EXPORT_SYMBOL(drm_get_edid); |
439 | | | 441 | |
| | | 442 | #endif /* !defined(__NetBSD__) */ |
| | | 443 | |
440 | /*** EDID parsing ***/ | | 444 | /*** EDID parsing ***/ |
441 | | | 445 | |
442 | /** | | 446 | /** |
443 | * edid_vendor - match a string against EDID's obfuscated vendor field | | 447 | * edid_vendor - match a string against EDID's obfuscated vendor field |
444 | * @edid: EDID to match | | 448 | * @edid: EDID to match |
445 | * @vendor: vendor string | | 449 | * @vendor: vendor string |
446 | * | | 450 | * |
447 | * Returns true if @vendor is in @edid, false otherwise | | 451 | * Returns true if @vendor is in @edid, false otherwise |
448 | */ | | 452 | */ |
449 | static bool edid_vendor(struct edid *edid, char *vendor) | | 453 | static bool edid_vendor(struct edid *edid, char *vendor) |
450 | { | | 454 | { |
451 | char edid_vendor[3]; | | 455 | char edid_vendor[3]; |
452 | | | 456 | |