2013-03-23 5 views
0

나는 devyni4_bus.c 드라이버를 Zynq SoC 주변 장치에 대한 비슷한 드라이버를 개발하려고 devfreq 전원 관리와 함께 사용되는 찾고 있습니다. 내가 걱정 해요 방법은 이것이다 :Zynq 클럭 함께 Devfreq

static int exynos4210_set_busclk(struct busfreq_data *data, struct opp *opp) 
{ 
     ... 
     __raw_writel(tmp, EXYNOS4_CLKDIV_DMC0); 
     ... 

} 

raw_writel 그것을 실행해야한다는 주파수를 등록 엑시 노스 시계에 쓰는 나에게 보인다. 이 레지스터는 arch/arm/mach-exynos/include/mach/regs-clock.h에 정의되어 있습니다. 지금은 arch\arm\mach-zynq\include\mach\zynq_soc.h을보고 Zynq 설정과 동등한 것을 찾으려고합니다. 그러나 꽤 많은 클럭이 정의되고 있으므로 설정해야 할 설정이 있는지 잘 모르겠습니다. 누구든지 도와 줄 수 있습니까?

+0

이것은 3.8입니다. –

+2

포스터는 www.kernel.org의 커널 메인 라인이 아니라'git clone git : // git.xilinx.com/linux-xlnx.git'을 사용하고 있습니다. [Xilinx Zynq machine directory] (http : // git. xilinx.com/?p=linux-xlnx.git;a=tree;f=arch/arm/mach-zynq;hb=HEAD) 인용 된 파일은 v3.8에 없습니다. –

+2

네 말이 맞아. 나는 이것을 언급하지 않은 것에 대해 사과드립니다. 나는 그들이 그렇게 광범위하게 달랐다는 것을 몰랐다. –

답변

1

Zynq은 커널 시계 프레임 워크를 사용합니다.

#include <linux/clk.h> 

이름으로, 당신이 원하는 시계에 대한 핸들을 가져 오기 :

는 선언을 포함
long actual_rate = clk_round_rate(fclk, requested_rate); 

이 그 다음을 설정

struct clk *fclk = clk_get_sys("FPGA0", NULL); 
long requested_rate = 125000000; 

을 가장 가까운 지원되는 주파수를 찾기 클럭 속도 :

int status; 
    if ((status = clk_set_rate(fclk, actual_rate))) { 
     printk(KERN_INFO "[%s:%d] err\n", __FUNCTION__, __LINE__); 
     return status; 
    }