blob: 1bbb657845bd13b4f219352827df39313f0c06bc [file] [log] [blame]
// 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