大家好!
我想把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 ?
非常感谢!