blob: f7ad5d00096f1869ca1abb456845cf07664bb225 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef RUNTIME_PROBE_UTILS_EDID_H_
#define RUNTIME_PROBE_UTILS_EDID_H_
#include <memory>
#include <string>
#include <vector>
namespace runtime_probe {
// Simplified edid structure refer to:
// https://elixir.bootlin.com/linux/latest/source/include/drm/drm_edid.h
struct EdidRaw {
uint8_t header[8];
uint8_t mfg_id[2];
uint8_t prod_code[2];
uint8_t pad_1[6]; // 12 - 17
uint8_t version;
uint8_t pad_2[35]; // 19 - 53;
uint16_t pixel_clock;
uint8_t hactive_lo;
uint8_t hblank_lo;
uint8_t hactive_hblank_hi;
uint8_t vactive_lo;
uint8_t vblank_lo;
uint8_t vactive_vblank_hi;
uint8_t pad_3[65]; // 62 - 126
uint8_t checksum;
} __attribute__((packed));
struct Edid {
std::string vendor;
int product_id;
int width;
int height;
static std::unique_ptr<Edid> From(const std::vector<uint8_t>& blob);
};
} // namespace runtime_probe
#endif // RUNTIME_PROBE_UTILS_EDID_H_