コードは、このコードが出て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にまだマップされていません。
物理アドレスは実際には静的なので、定義はカーネルバージョンでは変更できません。表示されるアドレスは動的ioremapアドレスであるため、実行しているカーネルのバージョンに基づいて変更されています。クロックについては、各カーネルで関連するクロックのオン/オフを試していますが、オンになっていても動作していても、動作しているバージョンに違いはありません。壊れたバージョンでは、それは壊れたままです。これはクロックを排除するものではありません、いずれかのバージョンが間違っているか何かをしている可能性があります、このMBXチップに関する情報はまったくありませんあなたの考えをありがとう! – Chris
私はここで間違っていた、私のテストの前に他の誰かがクロックを再び有効にした。動作中のカーネルはデバイスが動作するためのクロックが必要でした。 – Chris