2011-01-31 1 views
1

코드리눅스 드라이버, 포트 2.6.19.2 - 2.6.38-RC2 ARM11 iMX31는 AMBA MBX 장치 LogicPD Litekit GLES 드라이버는

#define MBX_REG_SYS_PHYS_BASE   0xC0000000 
#define MBX_REG_RANGE     0x00004000 

static struct resource mxc_reg_resources[] = { 
{ 
     .start = MBX_REG_SYS_PHYS_BASE, 
     .end = MBX_REG_SYS_PHYS_BASE + MBX_REG_RANGE - 1, 
     .flags = IORESOURCE_MEM } 
}; 

     mbx_reg = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
     if (!mbx_reg) 
       return -EINVAL; 

     reg_base = ioremap(mbx_reg->start, resource_size(mbx_reg)); 
     if (!reg_base) { 
       ret = -ENOMEM; 
       goto eremap; 
     } 

     printk(KERN_CRIT "Address: from 0x%08X to 0x%08X\n", 
         mbx_reg->start, reg_base); 

     regread = mx3reg_read_reg(mx3reg, MBX1_GLOBREG_REVISION); 
     printk(KERN_CRIT "MBX1_GLOBREG_REVISION: 0x%.8X\n", regread); 

이 코드는 밖으로 2.6.19.2를 사용하여 LogicPD에서 iMX31에서 작동 질문 다음 freescale에서 나무 패치 중.

2.6.38-rc2로 이식 할 때 더 이상 작동하지 않습니다.

작업 결과 :

주소 : 0xC7860000 MBX1_GLOBREG_REVISION : 는 여기에 몇 가지 데이터 결과입니다 0x01010200

실패 결과 :

주소 : 0xC48A0000 MBX1_GLOBREG_REVISION : 0x00000000의

주소 : 0xC48A8000 MBX1_GLOBREG_REVISION : 0x00000000의

주소 : 0xC48B8000 MBX1_GLOBREG_REVISION : 0x00000000의

주소 : 0xC48C0000 MBX1_GLOBREG_REVISION : 0x00000000의

어쩌면 흥미로운 항상 같은 주소를 가져 2.6.19.2에 아직 2.6.38-rc2에 매핑되어 있지 않습니다.

답변

0

는 주변 포트 다시 매핑 여기

/* Setup Peripheral Port Remap register for AVIC */ 
     asm("ldr r0, =0xC0000015        \n\ 
     mcr p15, 0, r0, c15, c2, 4"); 

는 보드 픽스 루틴에서 실행 원래 2.6.19.2 커널의 코드, 레지스터는 설정할 필요가 통신 할 준비가이 장치를 가지고있다. 물론 시계도 활성화해야하며,이 드라이버 예제는 그 중 하나를 표시하지 않습니다.

0

정의가 여전히 좋은가요? 이 행의 출력은 다음과 같이 변경하면 안됩니다.

printk(KERN_CRIT "Address: from 0x%08X to 0x%08X\n", 
         mbx_reg->start, reg_base); 

실제 주소이기 때문에이 행의 출력은 변경되지 않아야합니다. 그러나 출력물에는 인쇄되지 않습니다. 액세스하고있는 사용자가 클록 된 것을 확인하십시오. 위해

+0

실제 주소는 실제로 정적이므로 커널 버전에서 정의를 변경할 수 없습니다. 인쇄 된 주소는 동적 ioremap 주소이므로, 내가 실행중인 커널 버전에 따라 변경됩니다. 확실하지 않은 이유는 클럭에 관해서는 각 커널에서 관련 클럭을 켜고 끄려고 시도했기 때문이며 작동 여부에 상관없이 작동중인 버전에 차이가 없다고해도 여전히 작동합니다. 깨진 버전에서는 깨진 채로 남아 있습니다. 이 버전은 시계를 배제하지 않습니다. 어느 버전이 잘못 되었든 무언가를 할 수 있습니다.이 MBX 칩에 관한 정보는 어디에도 없습니다. 생각해 주셔서 감사합니다! – Chris

+0

내가 틀렸어. 누군가 내 테스트 전에 시계를 다시 사용 했어. 커널을 작동하려면 장치가 작동하는 데 필요한 시계가 필요합니다. – Chris