forked from Minki/linux
64b70da038
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 or at your option any later version this program is distributed in the hope that it will be useful but without any warranties or representations without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 43 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190520170858.826676366@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
62 lines
1.5 KiB
C
62 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
|
|
* Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
|
|
* Copyright 2011 Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
|
|
*/
|
|
/*
|
|
* clock and PLL management functions
|
|
*/
|
|
|
|
#ifndef __VIA_CLOCK_H__
|
|
#define __VIA_CLOCK_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum via_clksrc {
|
|
VIA_CLKSRC_X1 = 0,
|
|
VIA_CLKSRC_TVX1,
|
|
VIA_CLKSRC_TVPLL,
|
|
VIA_CLKSRC_DVP1TVCLKR,
|
|
VIA_CLKSRC_CAP0,
|
|
VIA_CLKSRC_CAP1,
|
|
};
|
|
|
|
struct via_pll_config {
|
|
u16 multiplier;
|
|
u8 divisor;
|
|
u8 rshift;
|
|
};
|
|
|
|
struct via_clock {
|
|
void (*set_primary_clock_state)(u8 state);
|
|
void (*set_primary_clock_source)(enum via_clksrc src, bool use_pll);
|
|
void (*set_primary_pll_state)(u8 state);
|
|
void (*set_primary_pll)(struct via_pll_config config);
|
|
|
|
void (*set_secondary_clock_state)(u8 state);
|
|
void (*set_secondary_clock_source)(enum via_clksrc src, bool use_pll);
|
|
void (*set_secondary_pll_state)(u8 state);
|
|
void (*set_secondary_pll)(struct via_pll_config config);
|
|
|
|
void (*set_engine_pll_state)(u8 state);
|
|
void (*set_engine_pll)(struct via_pll_config config);
|
|
};
|
|
|
|
|
|
static inline u32 get_pll_internal_frequency(u32 ref_freq,
|
|
struct via_pll_config pll)
|
|
{
|
|
return ref_freq / pll.divisor * pll.multiplier;
|
|
}
|
|
|
|
static inline u32 get_pll_output_frequency(u32 ref_freq,
|
|
struct via_pll_config pll)
|
|
{
|
|
return get_pll_internal_frequency(ref_freq, pll) >> pll.rshift;
|
|
}
|
|
|
|
void via_clock_init(struct via_clock *clock, int gfx_chip);
|
|
|
|
#endif /* __VIA_CLOCK_H__ */
|