2011-01-31 3 views
1

コードは、このコードが出て2.6.19.2を使用してLogicPDからiMX31上で動作し、質問Linuxドライバ、ポート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.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

関連する問題