大家好!
我想把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,看一下结果是否有改善?
TI中文支持网

