This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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 ?    

                    非常感谢!