| // Copyright 2022 The Fuchsia 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 SRC_GRAPHICS_DISPLAY_DRIVERS_INTEL_I915_PCI_IDS_H_ |
| #define SRC_GRAPHICS_DISPLAY_DRIVERS_INTEL_I915_PCI_IDS_H_ |
| |
| #include <zircon/assert.h> |
| |
| #include <cstdint> |
| |
| #include "src/graphics/display/drivers/intel-i915/hardware-common.h" |
| |
| // PCI Device ID sources. |
| // |
| // Skylake: IHD-OS-SKL-Vol 4-05.16 page 11 and page 12 |
| // Kaby Lake: IHD-OS-KBL-Vol 4-1.17 page 10 |
| // Tiger Lake: IHD-OS-TGL-Vol 4-12.21 page 9 |
| // |
| // Other lines that use Kaby Lake graphics: |
| // * Coffee Lake: IHD-OS-CFL-Vol 1-1.20 page 10 |
| // * Amber Lake: IHD-OS-AML-Vol 1-1.20 pages 9-10 |
| // * Whiskey Lake: IHD-OS-WHL-Vol 1-1.20 page 7 |
| // * Comet Lake: IHD-OS-CML-Vol 1-4.20 pages 9-10 |
| |
| namespace i915 { |
| |
| constexpr bool is_skl(uint16_t device_id) { return (device_id & 0xff00) == 0x1900; } |
| |
| constexpr bool is_kbl(uint16_t device_id) { |
| return (device_id & 0xff00) == 0x5900 || (device_id & 0xff00) == 0x3e00; |
| } |
| |
| constexpr bool is_tgl(uint16_t device_id) { return (device_id & 0xff00) == 0x9a00; } |
| |
| constexpr bool is_skl_u(uint16_t device_id) { |
| return device_id == 0x1916 || device_id == 0x1906 || device_id == 0x1926 || device_id == 0x1927 || |
| device_id == 0x1923; |
| } |
| |
| constexpr bool is_skl_y(uint16_t device_id) { return device_id == 0x191e; } |
| |
| constexpr bool is_kbl_u(uint16_t device_id) { |
| return device_id == 0x5916 || device_id == 0x5926 || device_id == 0x5906 || device_id == 0x5927 || |
| device_id == 0x3ea5; |
| } |
| |
| constexpr bool is_kbl_y(uint16_t device_id) { return device_id == 0x591c || device_id == 0x591e; } |
| |
| constexpr bool is_tgl_u(uint16_t device_id) { |
| return device_id == 0x9a49 || device_id == 0x9a78 || device_id == 0x9a40; |
| } |
| |
| constexpr uint16_t kTestDeviceDid = 0xffff; |
| constexpr bool is_test_device(uint16_t device_id) { return device_id == kTestDeviceDid; } |
| |
| constexpr registers::Platform GetPlatform(uint16_t device_id) { |
| if (is_skl(device_id)) { |
| return registers::Platform::kSkylake; |
| } |
| if (is_kbl(device_id)) { |
| return registers::Platform::kKabyLake; |
| } |
| if (is_tgl(device_id)) { |
| return registers::Platform::kTigerLake; |
| } |
| if (is_test_device(device_id)) { |
| return registers::Platform::kTestDevice; |
| } |
| ZX_ASSERT_MSG(false, "device id %u not supported", device_id); |
| } |
| |
| } // namespace i915 |
| |
| #endif // SRC_GRAPHICS_DISPLAY_DRIVERS_INTEL_I915_PCI_IDS_H_ |