| // 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. |
| |
| #include "src/graphics/display/drivers/intel-i915/hardware-common.h" |
| |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| namespace i915 { |
| |
| TEST(HardwareCommonTest, Skylake) { |
| // Skylake has 5 DDIs (A-E), 4 DPLLs, 3 Pipes and 4 Transcoders |
| // (including an eDP transcoder). |
| |
| auto ddis = DdiIds<registers::Platform::kSkylake>(); |
| EXPECT_EQ(ddis.size(), 5u); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_A).Times(1)); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_E).Times(1)); |
| EXPECT_THAT(ddis, testing::Not(testing::Contains(DdiId::DDI_TC_6))); |
| |
| auto dplls = PllIds<registers::Platform::kSkylake>(); |
| EXPECT_EQ(dplls.size(), 4u); |
| EXPECT_THAT(dplls, testing::Contains(PllId::DPLL_0).Times(1)); |
| EXPECT_THAT(dplls, testing::Contains(PllId::DPLL_3).Times(1)); |
| |
| auto pipes = PipeIds<registers::Platform::kSkylake>(); |
| EXPECT_EQ(pipes.size(), 3u); |
| EXPECT_THAT(pipes, testing::UnorderedElementsAre(PipeId::PIPE_A, PipeId::PIPE_B, PipeId::PIPE_C)); |
| |
| auto transcoders = TranscoderIds<registers::Platform::kSkylake>(); |
| EXPECT_EQ(transcoders.size(), 4u); |
| EXPECT_THAT(transcoders, testing::UnorderedElementsAre( |
| TranscoderId::TRANSCODER_EDP, TranscoderId::TRANSCODER_A, |
| TranscoderId::TRANSCODER_B, TranscoderId::TRANSCODER_C)); |
| } |
| |
| TEST(HardwareCommonTest, KabyLake) { |
| // Kaby Lake has 5 DDIs (A-E), 4 DPLLs, 3 Pipes and 4 Transcoders |
| // (including an eDP transcoder). |
| |
| auto ddis = DdiIds<registers::Platform::kKabyLake>(); |
| EXPECT_EQ(ddis.size(), 5u); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_A).Times(1)); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_E).Times(1)); |
| EXPECT_THAT(ddis, testing::Not(testing::Contains(DdiId::DDI_TC_6))); |
| |
| auto dplls = PllIds<registers::Platform::kKabyLake>(); |
| EXPECT_EQ(dplls.size(), 4u); |
| EXPECT_THAT(dplls, testing::Contains(PllId::DPLL_0).Times(1)); |
| EXPECT_THAT(dplls, testing::Contains(PllId::DPLL_3).Times(1)); |
| |
| auto pipes = PipeIds<registers::Platform::kKabyLake>(); |
| EXPECT_EQ(pipes.size(), 3u); |
| EXPECT_THAT(pipes, testing::UnorderedElementsAre(PipeId::PIPE_A, PipeId::PIPE_B, PipeId::PIPE_C)); |
| |
| auto transcoders = TranscoderIds<registers::Platform::kKabyLake>(); |
| EXPECT_EQ(transcoders.size(), 4u); |
| EXPECT_THAT(transcoders, testing::UnorderedElementsAre( |
| TranscoderId::TRANSCODER_EDP, TranscoderId::TRANSCODER_A, |
| TranscoderId::TRANSCODER_B, TranscoderId::TRANSCODER_C)); |
| } |
| |
| TEST(HardwareCommonTest, TigerLake) { |
| // Tiger Lake has 9 DDIs (A-C, TC1-TC6), currently it supports 3 Pipes and 3 Transcoders. |
| // There is no eDP transcoder in Tiger Lake. |
| |
| auto ddis = DdiIds<registers::Platform::kTigerLake>(); |
| EXPECT_EQ(ddis.size(), 9u); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_A).Times(1)); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_C).Times(1)); |
| EXPECT_THAT(ddis, testing::Contains(DdiId::DDI_TC_6).Times(1)); |
| |
| // TODO(https://fxbug.dev/42060657): Update the test once Pipe D is supported. |
| auto pipes = PipeIds<registers::Platform::kTigerLake>(); |
| EXPECT_EQ(pipes.size(), 3u); |
| EXPECT_THAT(pipes, testing::UnorderedElementsAre(PipeId::PIPE_A, PipeId::PIPE_B, PipeId::PIPE_C)); |
| |
| // TODO(https://fxbug.dev/42060657): Update the test once Transcoder D is supported. |
| auto transcoders = TranscoderIds<registers::Platform::kTigerLake>(); |
| EXPECT_EQ(transcoders.size(), 3u); |
| // There is no eDP Transcoder. |
| EXPECT_THAT(transcoders, testing::Not(testing::Contains(TranscoderId::TRANSCODER_EDP))); |
| EXPECT_THAT(transcoders, testing::Contains(TranscoderId::TRANSCODER_A)); |
| } |
| |
| } // namespace i915 |