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.

关于OMAP3715 的gpio_126 gpio_129的拉高拉低问题?

Other Parts Discussed in Thread: AM3715

平台使用AM3715 (Device Package:CUS)请教 这两个比较特殊的gpio_126  gpio_129问题:

根据e2e提示,做了以下处理:

u16 control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
u16 control_wkup_ctrl = 0x0a5c;
u32 reg, wakeup_reg;

wakeup_reg = omap_ctrl_readl(control_wkup_ctrl);
wakeup_reg &= ~(1 << 6);
omap_ctrl_writel(wakeup_reg ,control_wkup_ctrl);

reg = omap_ctrl_readl(control_pbias_offset);
reg &= ~OMAP343X_PBIASLITEPWRDNZ1;
omap_ctrl_writel(reg, control_pbias_offset);

reg = omap_ctrl_readl(control_pbias_offset);
reg &= ~OMAP343X_PBIASLITEVMODE1;
omap_ctrl_writel(reg , control_pbias_offset);

msleep(100);

wakeup_reg |= (1 << 6);
omap_ctrl_writel(wakeup_reg ,control_wkup_ctrl);
wakeup_reg = omap_ctrl_readl(control_wkup_ctrl);

reg |= OMAP343X_PBIASLITEPWRDNZ1;
omap_ctrl_writel(reg , control_pbias_offset);

问题:目前当mmc1里面有TF卡使用的时候,gpio_126和gpio_129是可以通过  gpio_direction_output(126, 1)来控制输出高低的

            或者mmc1里面的wifi up起后,也是可以控制的。

            但若mmc1不存在TF卡工作,或者wifi down后,这两个脚一直保持低电平,请教如何使这两个脚像普通gpio那样独立控制?

  • 这里自己的方法供大家参考:

     1.由于需要mmc1输出电压,所以我先使能mmc1一直供电,无论有没有TF(或者wifi):

            打开具体板子的资源代码(我这里是 /arm/arch/mach-omap2/board-omap3beagle.c), 找到vmmc1的描述

                         static struct regulator_init_data beagle_vmmc1 = {

                                      .constraints = {

                                                     .always_on = 1,                     //添加这项是为了使mmc1一直有电

                                       }

                          }

     2.设置两个寄存器 CONTROL_PBIAS_LITE (0X48002520) 和 CONTROL_WKUP_CTRL (0X48002A5C)

             这两个寄存器一个用于电压控制,一个用于功能开启

                 wkup_ctrl = ioremap_nocache(CONTROL_WKUP_CTRL, 4);

                 pbias_lite = ioremap_nocache(CONTROL_PBIAS_LITE, 4);

                *pbias_lite =*pbias_lite | (0x1<<9) | (0x1<<8);    //这里需要注意:mmc1工作在3.3V,第8位必须置1,否则一样控制不了;mmc1工作在1.8V,第8为置0

                *wkup_ctrl = *wkup_ctrl | (0x1<<6);                       //这里是开启gpio_126和129的功能

    到这里哪怕mmc1不存在设备,这两个特殊的gpio也可以随意控制,只是这样做,是否使得功耗加大?

    若有更好方法请告知!!

  • 请参考我在https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/537/p/103699/366028 的回复,

    里面回答了为什么有TF卡使用的时候,即Vdds_mmc1有LDO供电,GPIO126~GPIO129可以工作正常,TF卡不工作时,GPIO引脚始终被拉到地上,是什么原因。