GPIO for intel 810 945

 intel 的810芯片组有一些GPIO,一般将这些GPIO用作I2C总线来连接显示设备,以便用来获取DDC数据等,也可用来向显示设备传递数据。
    根据Intel i810的programer manual。 810有两组GPIO, GPIOA和GPIOB,每一组GPIO对应两个pin,目前没有945的programer manual,但是从xf86-video-intel的开源驱动来看,945应该至少有8组GPIO, GPIOA-GPIOH。
对于GPIO的访问,首先要获得display controller这个PCI设备映射到系统空间中的memory的基地址,这个可通过读取pci配置空间得到。例如,对于945芯片组中集成的显示控制器, 一般是设备2功能0, 和设备2功能1。至于为什么会有两个,现在还不是很清楚。 在linux下可以很容易从/proc文件系统读到pci设备配置空间的内容,其中MMADR(0x10-0x13)为该pci设备映射到系统的基地址,其中bit19-bit31为基地址, bit0-bit18是其他一些信息(i810 programer manual)。
    得到基地址后,从偏移0x5010开始,为GPIO的寄存器:
        0x5010-0x5013  -> GPIOA
        0x5014-0x5017 -> GPIOB
        0x5018-0x501b -> GPIOC
       ......

 每组GPIO(对应两个pin)由一个32为宽的寄存器控制,具体格式可参考i810 programer manual。对这些GPIO编程就可以模拟I2C总线时序,从而能读取DDC数据,代码可以参考xf86-video-intel。
另外,虽然没有945 programer manual,但是945的GPIO的控制方法应该和810是一样的,只不过945会多几组GPIO。还有上面提到会有两个pci设备。我从一个实际的系统来看,发现他们分别映射到0xfde8000 和 0xfdf0000, 读取发现两个地方的内容是一样的,但还没有测试这两个地方是不是重叠的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值