Serenity Operating System
at master 55 lines 942 B view raw
1/* 2 * Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/Types.h> 10 11namespace Kernel::IntelGraphics { 12 13enum class Generation { 14 Gen4, 15 Gen9, 16}; 17 18struct PLLSettings; 19 20struct PLLParameterLimit { 21 size_t min, max; 22}; 23 24struct PLLMaxSettings { 25 PLLParameterLimit dot_clock, vco, n, m, m1, m2, p, p1, p2; 26}; 27 28struct PLLSettings { 29 bool is_valid() const { return (n != 0 && m1 != 0 && m2 != 0 && p1 != 0 && p2 != 0); } 30 u64 compute_dot_clock(u64 refclock) const 31 { 32 return (refclock * (5 * m1 + m2) / n) / (p1 * p2); 33 } 34 35 u64 compute_vco(u64 refclock) const 36 { 37 return refclock * (5 * m1 + m2) / n; 38 } 39 40 u64 compute_m() const 41 { 42 return 5 * m1 + m2; 43 } 44 45 u64 compute_p() const 46 { 47 return p1 * p2; 48 } 49 u64 n { 0 }; 50 u64 m1 { 0 }; 51 u64 m2 { 0 }; 52 u64 p1 { 0 }; 53 u64 p2 { 0 }; 54}; 55}