TI中文支持网
TI专业的中文技术问题搜集分享网站

DM8127 mux pin kernel 中设置为GPIO 的问题

大家好!

  我想把DM8127 的gpmc_cs2, gpmc_cs3 设置为gpio57,gpio58 ,做为gpio 输出,但怎么设置都没用,请指点:

1. 问题介绍

按datasheet 147 页 文档说明,管脚,mux 定义如下:

MUXMODE[7:0] SETTINGS(1)

0x4814 09EC   PINCNTL124     M25    GPMC_CS[2] GPMC_A[24](M1)                       GP1[25]
0x4814 09F0   PINCNTL125      P26    GPMC_CS[3] SPI[2]_SCS[0]                           GP1[26](M0)

MUXMODE[7:0] = 0x80, bit7 = 1 是GPIO。

   按文档中的说明,在uboot中设置0x4814 09EC  0x4814 09F0   为0x80, GP1_25, GP1_26 , 在uboot中测试GPIO 这两个GPIO 能正常工作。

但到kernel , 中设置没用,能给gpio 写0,1,但测量管脚电平没变化。

2. 在kernel 做过的测试。

   arch/arm/mach-omap2/device.c    函数omap2_init_devices(void) 尾加入

 gp25 = omap_mux_init_signal("gpmc_cs2.gpio1_25",       TI814X_PULL_DIS ); gp26 = omap_mux_init_signal("gpmc_cs3.gpio1_26_mux0",   TI814X_PULL_DIS );

跟踪打印寄存器设置为:

eg_offset = 0x9ec
omap_mux_init_signal: Setting signal gpmc_cs2.gpio1_25 0x0007 -> 0x20080
reg_offset = 0x9f0
omap_mux_init_signal: Setting signal gpmc_cs3.gpio1_26_mux0 0x0007 -> 0x20080 

分别设置GPIO57,58 为0, 1 , 测量两个管脚电平, 发现输出都是3.3V ,没变化。

再在board-ti8148ipnc.c 中加入如下两行,效果与上面一样。

static struct omap_board_mux board_mux[] __initdata = {
    {TI814X_CONTROL_PADCONF_GPMC_CS2_OFFSET, OMAP_MUX_MODE7},
    {TI814X_CONTROL_PADCONF_GPMC_CS3_OFFSET, OMAP_MUX_MODE7},
 { .reg_offset = OMAP_MUX_TERMINATOR },
};

问题 :

        应该是把mux pin 设置为GPIO 不成功。

       在kernle 中如何设置mux pin 为GPIO ?    

                    非常感谢!

 

Chris Meng:

GP1的GPIO口使用需要特殊的配置,请参考英文论坛讨论e2e.ti.com/…/153934.aspx。

Alex2:

谢谢 Chris的解答!

Chris Meng:

回复 Alex2:

如果我的回答解决了你的问题,请点击绿色“是”按钮,谢谢!

wang chao:

回复 Chris Meng:

你好,能否发一份DM8127的datasheet看看,谢谢,我的邮箱wangmin_chao@163.com

Chris Meng:

回复 wang chao:

你好,DM8127的资料还处于保密阶段,需要贵公司和TI签署保密协议后才能获得。请联系TI相关代理商/销售。

Alex2:

回复 Chris Meng:

看了这个链接

e2e.ti.com/…/153934.aspx。

还是不知道怎么设置, 那位知道在kernel 如果设置mux pin 吗?

帮我描述下,非常感谢!

Alex2:

回复 Alex2:

查看kernel代码在kernel 里面,其他pin 也是按我贴子中说明去设置的,关于寄存器的设置,我在uboot,与在kernel都设置成一样的都是0x80, 表明是GPIO ,uboot 下能工作的,为什么到kernel 里面就不行了呢,

在kernel 里面把

0x4814 09EC   PINCNTL124     M25    GPMC_CS[2] GPMC_A[24](M1)                       GP1[25]

0x4814 09F0   PINCNTL125      P26    GPMC_CS[3] SPI[2]_SCS[0]                           GP1[26](M0)

设置为0x80 后, GP56,58 管脚从3.3v 拉低成0V,

但通过程序在GPIO 口输出1, 管脚不能变成3.3V。

uboot中是没问题的。

  比较困惑,不只到为什么?

Chris Meng:

回复 Alex2:

请在Linux下读回配置的pinmux寄存器以及GEL设置GP1的相关寄存器,看是否是真正写入正确/?

你上面帖子的链接无法打开。

在psp user guide里面有对Linux下pinmux修改的建议,下面摘抄了部分内容,请访问下面网址获得更多信息:

processors.wiki.ti.com/…/TI81XX_PSP_User_Guide

TI814X/TI813X

On TI814X/TI813X devices, the pins are tri-stated and set to Mode 0 or any other mode as required for specific module (e.g., MMC) in U-Boot. If you desire to use a particular pin to any other function than Mode 0 or override any other pin mode which was already set in U-Boot, the kernel needs to be modified and rebuilt.

You can change default mux mode by adding specific mux entry in the beginning of board_mux array in arch/arm/mach-omap2/board-ti8148evm.c or calling omap_mux_init_signal() during initialization (e.g., in device specific initialization function called from omap2_init_devices() in arch/arm/mach-omap2/devices.c).

Alex2:

不行用debugfs ,这几把mux pin设置为0x80 都操作不了,有人测试过吗,能测试下这两个GPIO 吗?设置不了?

Chris Meng:

回复 Alex2:

你好,

你的问题是pinux已经配为gpio,但配置输出后输出不正常,对么?pinmux的寄存器配置读回来也是对的,对么?

如果是,请尝试配置寄存器0x48140E18和0x48140E1C的值为0x3F,看一下结果是否有改善?

赞(0)
未经允许不得转载:TI中文支持网 » DM8127 mux pin kernel 中设置为GPIO 的问题
分享到: 更多 (0)