Chinaunix首页 | 论坛 | 博客
  • 博客访问: 682714
  • 博文数量: 516
  • 博客积分: 4119
  • 博客等级: 上校
  • 技术积分: 4288
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-30 17:29
文章分类

全部博文(516)

文章存档

2014年(4)

2013年(160)

2012年(352)

分类:

2013-01-04 16:52:05

原文地址:OMAP3 Linux 中的MUX设置 作者:chenxibing008

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)

...... 省略
}


这里有一项设置是有关寄存器偏移地址的,注意,这里的偏移地址是以字节为单位的,而手册给的是以字为单位的,以上述的I2C1_SCL为例,手册查到的是:
CONTROL_PADCONF_HSUSB0_DATA7[31:16]  0x4800 21B8  PU/PD 0b11 - i2c1_scl
由于实际控制I2C_SCL这个引脚的有效寄存器单元是 0x4800 21b8 这个地址的寄存器 CONTROL_PADCONF_HSUSB0_DATA7 的 bit[31:16],所以地址应该是 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,

...... 省略
}


然后来看一个使用范例,关于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},
};

static void __init omap_i2c_mux_pins(int bus)
{
        int scl, sda;

        scl = omap34xx_pins[bus][0];
        sda = omap34xx_pins[bus][1];

        omap_cfg_reg(sda);
        omap_cfg_reg(scl);
}


在mux.c和mux.h中进行设置后,在使用到这个引脚的地方需要使用omap_cfg_reg进行设置才能生效。

另外,注意 arch/arm/plat-omap/mux.c文件,其中使用了条件编译对omap_cfg_reg进行处理,编译开关:CONFIG_OMAP_MUX 
如果没有配置CONFIG_OMAP_MUX,omap_cfg_reg是空函数,无法实现MUX功能。在beagle中默认配置是没有的,需要打开才可以。


阅读(758) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~