⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pll_access.c

📁 ati driver
💻 C
字号:
/*	Copyright (c) 2002/03, Thomas Kurschel		Part of Radeon driver and accelerant			Basic access of PLL registers*/#include "radeon_interface.h"#include "pll_access.h"#include "../regs/pll_regs.h"#include "../common/utils.h"// read value "val" from PLL-register "addr"uint32 Radeon_INPLL( vuint8 *regs, radeon_type asic, int addr ){		uint32 res;		OUTREG8( regs, RADEON_CLOCK_CNTL_INDEX, addr & 0x3f );	res = INREG( regs, RADEON_CLOCK_CNTL_DATA );		R300_PLLFix( regs, asic );	return res;}// write value "val" to PLL-register "addr" void Radeon_OUTPLL( vuint8 *regs, radeon_type asic, uint8 addr, uint32 val ){	(void)asic;		OUTREG8( regs, RADEON_CLOCK_CNTL_INDEX, ((addr & 0x3f ) |		RADEON_PLL_WR_EN));	OUTREG( regs, RADEON_CLOCK_CNTL_DATA, val );		// TBD: on XFree, there is no call of R300_PLLFix here, 	// though it should as we've accessed CLOCK_CNTL_INDEX	//R300_PLLFix( ai );}// write "val" to PLL-register "addr" keeping bits "mask"void Radeon_OUTPLLP( vuint8 *regs, radeon_type asic, uint8 addr, 	uint32 val, uint32 mask ){	uint32 tmp = Radeon_INPLL( regs, asic, addr );	tmp &= mask;	tmp |= val;	Radeon_OUTPLL( regs, asic, addr, tmp );}// r300: to be called after each CLOCK_CNTL_INDEX access// (hardware bug fix suggested by XFree86)void R300_PLLFix( vuint8 *regs, radeon_type asic ) {	uint32 save, tmp;	if( asic != rt_r300 )		return;		    save = INREG( regs, RADEON_CLOCK_CNTL_INDEX );    tmp = save & ~(0x3f | RADEON_PLL_WR_EN);    OUTREG( regs, RADEON_CLOCK_CNTL_INDEX, tmp );    tmp = INREG( regs, RADEON_CLOCK_CNTL_DATA );    OUTREG( regs, RADEON_CLOCK_CNTL_INDEX, save );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -