免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2068 | 回复: 0
打印 上一主题 下一主题

OMAP3 Linux 中的MUX设置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-19 14:31 |只看该作者 |倒序浏览

                                                                OMAP3 Linux 中的MUX设置
OMAP3 处理器的引脚都有很多功能,具体有哪些功能,需要在什么寄存器进行设置,需要看《系统控制模块》部分的描述。如果知道引脚的功能或者名称,直接搜索应该可以找到对应的寄存器。如果知道某个引脚的IO数目,在文中搜索gpio_xxx应该就可以找到对应的寄存器等信息。
               
               
               
               
先看两个文件:./arch/arm/mach-omap2/mux.c./arch/arm/plat-omap/include/mach/mux.h
其中mux.c中的一些设置:static struct pin_config __initdata_or_module omap34xx_pins[] = {
/*
*              Name, reg-offset,
*              mux-mode | [active-mode | off-mode]
*/
/* 34xx I2C */
MUX_CFG_34XX("K21_34XX_I2C1_SCL", 0x1ba,
                OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
MUX_CFG_34XX("J21_34XX_I2C1_SDA", 0x1bc,
                OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_INPUT_PULLUP)
[color="#0000CC"]        ...... 省略

}
这里有一项设置是有关寄存器偏移地址的,注意,这里的偏移地址是以字节为单位的,而手册给的是以字为单位的,以上述的I2C1_SCL为例,手册查到的是:CONTROL_PADCONF_HSUSB0_DATA7[color="#FF0102"][31:16]  [color="#FF0102"]0x4800 21B8  PU/PD 0b11 - i2c1_scl由于实际控制I2C_SCL这个引脚的有效寄存器单元是 0x4800 21b8 这个地址的寄存器 CONTROL_PADCONF_HSUSB0_DATA7 的 bit[31:16],所以地址应该是 [color="#0001FF"]0x4800 21bA。而基地址是 0x4800 2000 。这就是偏移地址0x1ba的由来。
mux.h中:
enum omap34xx_index {
        /* 34xx I2C */
        K21_34XX_I2C1_SCL,
        J21_34XX_I2C1_SDA,
        AF15_34XX_I2C2_SCL,
        AE15_34XX_I2C2_SDA,
[color="#0000CC"]        ...... 省略

}
然后来看一个使用范例,关于I2C的:见:./arch/arm/plat-omap/i2c.c文件:static const int omap34xx_pins[][2] = {
        { K21_34XX_I2C1_SCL, J21_34XX_I2C1_SDA},
        { AF15_34XX_I2C2_SCL, AE15_34XX_I2C2_SDA},
        { AF14_34XX_I2C3_SCL, AG14_34XX_I2C3_SDA},
};
[color="#0000CC"]
static void __init omap_i2c_mux_pins(int bus)
{
        int scl, sda;
        scl = omap34xx_pins[bus][0];
        sda = omap34xx_pins[bus][1];
        [color="#FF0102"]omap_cfg_reg(sda);
        [color="#FF0102"]omap_cfg_reg(scl);
}
在mux.c和mux.h中进行设置后,在使用到这个引脚的地方需要使用omap_cfg_reg进行设置才能生效。
另外,注意 arch/arm/plat-omap/mux.c文件,其中使用了条件编译对omap_cfg_reg进行处理,编译开关:[color="#0001FF"]CONFIG_OMAP_MUX 如果没有配置CONFIG_OMAP_MUX,omap_cfg_reg是空函数,无法实现MUX功能。在beagle中默认配置是没有的,需要打开才可以。
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/51797/showart_2098388.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP