blob: 9e84ec1373a565f89e4a4973c8bbae9ddd84d5f5 [file] [log] [blame] [edit]
// Copyright 2023 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/amlogic-display/clock-regs.h"
#include <gtest/gtest.h>
namespace amlogic_display {
namespace {
TEST(VideoClock2Divider, GetSetDivider2) {
auto reg = VideoClock2Divider::Get().FromValue(0);
reg.SetDivider2(1);
EXPECT_EQ(reg.Divider2(), 1);
EXPECT_EQ(reg.divider2_minus_one(), 0u);
reg.SetDivider2(2);
EXPECT_EQ(reg.Divider2(), 2);
EXPECT_EQ(reg.divider2_minus_one(), 1u);
reg.SetDivider2(256);
EXPECT_EQ(reg.Divider2(), 256);
EXPECT_EQ(reg.divider2_minus_one(), 255u);
}
TEST(VideoClock1Divider, GetSetDivider1) {
auto reg = VideoClock1Divider::Get().FromValue(0);
reg.SetDivider1(1);
EXPECT_EQ(reg.Divider1(), 1);
EXPECT_EQ(reg.divider1_minus_one(), 0u);
reg.SetDivider1(2);
EXPECT_EQ(reg.Divider1(), 2);
EXPECT_EQ(reg.divider1_minus_one(), 1u);
reg.SetDivider1(256);
EXPECT_EQ(reg.Divider1(), 256);
EXPECT_EQ(reg.divider1_minus_one(), 255u);
}
TEST(VideoClock1Divider, GetSetDivider0) {
auto reg = VideoClock1Divider::Get().FromValue(0);
reg.SetDivider0(1);
EXPECT_EQ(reg.Divider0(), 1);
EXPECT_EQ(reg.divider0_minus_one(), 0u);
reg.SetDivider0(2);
EXPECT_EQ(reg.Divider0(), 2);
EXPECT_EQ(reg.divider0_minus_one(), 1u);
reg.SetDivider0(256);
EXPECT_EQ(reg.Divider0(), 256);
EXPECT_EQ(reg.divider0_minus_one(), 255u);
}
TEST(HdmiClockControl, GetSetHdmiSystemClockDivider) {
auto reg = HdmiClockControl::Get().FromValue(0);
reg.SetHdmiTxSystemClockDivider(1);
EXPECT_EQ(reg.HdmiTxSystemClockDivider(), 1);
EXPECT_EQ(reg.hdmi_tx_system_clock_divider_minus_one(), 0u);
reg.SetHdmiTxSystemClockDivider(2);
EXPECT_EQ(reg.HdmiTxSystemClockDivider(), 2);
EXPECT_EQ(reg.hdmi_tx_system_clock_divider_minus_one(), 1u);
reg.SetHdmiTxSystemClockDivider(128);
EXPECT_EQ(reg.HdmiTxSystemClockDivider(), 128);
EXPECT_EQ(reg.hdmi_tx_system_clock_divider_minus_one(), 127u);
}
TEST(VpuClockCControl, GetSetBranch1MuxDivider) {
auto reg = VpuClockCControl::Get().FromValue(0);
reg.SetBranch1MuxDivider(1);
EXPECT_EQ(reg.Branch1MuxDivider(), 1);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 0u);
reg.SetBranch1MuxDivider(2);
EXPECT_EQ(reg.Branch1MuxDivider(), 2);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 1u);
reg.SetBranch1MuxDivider(128);
EXPECT_EQ(reg.Branch1MuxDivider(), 128);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 127u);
}
TEST(VpuClockCControl, GetSetBranch0MuxDivider) {
auto reg = VpuClockCControl::Get().FromValue(0);
reg.SetBranch0MuxDivider(1);
EXPECT_EQ(reg.Branch0MuxDivider(), 1);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 0u);
reg.SetBranch0MuxDivider(2);
EXPECT_EQ(reg.Branch0MuxDivider(), 2);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 1u);
reg.SetBranch0MuxDivider(128);
EXPECT_EQ(reg.Branch0MuxDivider(), 128);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 127u);
}
TEST(VpuClockControl, GetSetBranch1MuxDivider) {
auto reg = VpuClockControl::Get().FromValue(0);
reg.SetBranch1MuxDivider(1);
EXPECT_EQ(reg.Branch1MuxDivider(), 1);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 0u);
reg.SetBranch1MuxDivider(2);
EXPECT_EQ(reg.Branch1MuxDivider(), 2);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 1u);
reg.SetBranch1MuxDivider(128);
EXPECT_EQ(reg.Branch1MuxDivider(), 128);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 127u);
}
TEST(VpuClockControl, GetSetBranch0MuxDivider) {
auto reg = VpuClockControl::Get().FromValue(0);
reg.SetBranch0MuxDivider(1);
EXPECT_EQ(reg.Branch0MuxDivider(), 1);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 0u);
reg.SetBranch0MuxDivider(2);
EXPECT_EQ(reg.Branch0MuxDivider(), 2);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 1u);
reg.SetBranch0MuxDivider(128);
EXPECT_EQ(reg.Branch0MuxDivider(), 128);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 127u);
}
TEST(VpuClockBControl, GetSetDivider1) {
auto reg = VpuClockBControl::Get().FromValue(0);
reg.SetDivider1(1);
EXPECT_EQ(reg.Divider1(), 1);
EXPECT_EQ(reg.divider1_minus_one(), 0u);
reg.SetDivider1(2);
EXPECT_EQ(reg.Divider1(), 2);
EXPECT_EQ(reg.divider1_minus_one(), 1u);
reg.SetDivider1(16);
EXPECT_EQ(reg.Divider1(), 16);
EXPECT_EQ(reg.divider1_minus_one(), 15u);
}
TEST(VpuClockBControl, GetSetDivider2) {
auto reg = VpuClockBControl::Get().FromValue(0);
reg.SetDivider2(1);
EXPECT_EQ(reg.Divider2(), 1);
EXPECT_EQ(reg.divider2_minus_one(), 0u);
reg.SetDivider2(2);
EXPECT_EQ(reg.Divider2(), 2);
EXPECT_EQ(reg.divider2_minus_one(), 1u);
reg.SetDivider2(256);
EXPECT_EQ(reg.Divider2(), 256);
EXPECT_EQ(reg.divider2_minus_one(), 255u);
}
TEST(VideoAdvancedPeripheralBusClockControl, GetSetBranch1MuxDivider) {
auto reg = VideoAdvancedPeripheralBusClockControl::Get().FromValue(0);
reg.SetBranch1MuxDivider(1);
EXPECT_EQ(reg.Branch1MuxDivider(), 1);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 0u);
reg.SetBranch1MuxDivider(2);
EXPECT_EQ(reg.Branch1MuxDivider(), 2);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 1u);
reg.SetBranch1MuxDivider(128);
EXPECT_EQ(reg.Branch1MuxDivider(), 128);
EXPECT_EQ(reg.branch1_mux_divider_minus_one(), 127u);
}
TEST(VideoAdvancedPeripheralBusClockControl, GetSetBranch0MuxDivider) {
auto reg = VideoAdvancedPeripheralBusClockControl::Get().FromValue(0);
reg.SetBranch0MuxDivider(1);
EXPECT_EQ(reg.Branch0MuxDivider(), 1);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 0u);
reg.SetBranch0MuxDivider(2);
EXPECT_EQ(reg.Branch0MuxDivider(), 2);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 1u);
reg.SetBranch0MuxDivider(128);
EXPECT_EQ(reg.Branch0MuxDivider(), 128);
EXPECT_EQ(reg.branch0_mux_divider_minus_one(), 127u);
}
TEST(VideoInputMeasureClockControl, GetSetDsiDivider) {
auto reg = VideoInputMeasureClockControl::Get().FromValue(0);
reg.SetDsiMeasureClockDivider(1);
EXPECT_EQ(reg.DsiMeasureClockDivider(), 1);
EXPECT_EQ(reg.dsi_measure_clock_divider_minus_one(), 0u);
reg.SetDsiMeasureClockDivider(2);
EXPECT_EQ(reg.DsiMeasureClockDivider(), 2);
EXPECT_EQ(reg.dsi_measure_clock_divider_minus_one(), 1u);
reg.SetDsiMeasureClockDivider(128);
EXPECT_EQ(reg.DsiMeasureClockDivider(), 128);
EXPECT_EQ(reg.dsi_measure_clock_divider_minus_one(), 127u);
}
TEST(VideoInputMeasureClockControl, GetSetVideoInputDivider) {
auto reg = VideoInputMeasureClockControl::Get().FromValue(0);
reg.SetVideoInputMeasureClockDivider(1);
EXPECT_EQ(reg.VideoInputMeasureClockDivider(), 1);
EXPECT_EQ(reg.video_input_measure_clock_divider_minus_one(), 0u);
reg.SetVideoInputMeasureClockDivider(2);
EXPECT_EQ(reg.VideoInputMeasureClockDivider(), 2);
EXPECT_EQ(reg.video_input_measure_clock_divider_minus_one(), 1u);
reg.SetVideoInputMeasureClockDivider(128);
EXPECT_EQ(reg.VideoInputMeasureClockDivider(), 128);
EXPECT_EQ(reg.video_input_measure_clock_divider_minus_one(), 127u);
}
TEST(MipiDsiPhyClockControl, GetSetDivider) {
auto reg = MipiDsiPhyClockControl::Get().FromValue(0);
reg.SetDivider(1);
EXPECT_EQ(reg.Divider(), 1);
EXPECT_EQ(reg.divider_minus_one(), 0u);
reg.SetDivider(2);
EXPECT_EQ(reg.Divider(), 2);
EXPECT_EQ(reg.divider_minus_one(), 1u);
reg.SetDivider(128);
EXPECT_EQ(reg.Divider(), 128);
EXPECT_EQ(reg.divider_minus_one(), 127u);
}
} // namespace
} // namespace amlogic_display