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.

AM335x GPIO clock config not succeeding on my new board

Trying to set up the GPIOs, the GPIO clock setup is not succeeding;

it gets stuck on the last “while” wait in GPIO0ModuleClkConfig;

see the following complete source code, copied from Starterware,

that compiles and runs:

 ----------------------------------------

#define HWREG(x) (*((volatile unsigned int*)(x)))

 

#define PRCM_REGS         (0x44E00000)

#define SOC_CM_WKUP_REGS  (PRCM_REGS + 0x400)

 

#define CM_WKUP_CLKSTCTRL       (0x0)

#define CM_WKUP_GPIO0_CLKCTRL   (0x8)     /* For GPIO0 */

 

/* CLKSTCTRL */

#define CM_WKUP_CLKSTCTRL_CLKACTIVITY_GPIO0_GDBCLK   (0x00000100u) /* For GPIO0 */

 

/* GPIO0_CLKCTRL */

#define CM_WKUP_GPIO0_CLKCTRL_IDLEST         (0x00030000u) /* For GPIO0 */

#define CM_WKUP_GPIO0_CLKCTRL_IDLEST_SHIFT   (0x00000010u) /* For GPIO0 */

#define CM_WKUP_GPIO0_CLKCTRL_IDLEST_FUNC    (0x0u)   /* For GPIO0 */

 

#define CM_WKUP_GPIO0_CLKCTRL_MODULEMODE     (0x00000003u)

#define CM_WKUP_GPIO0_CLKCTRL_MODULEMODE_ENABLE   (0x2u) /* For GPIO0 */

 

#define CM_WKUP_GPIO0_CLKCTRL_OPTFCLKEN_GPIO0_GDBCLK   (0x00040000u)  /* For GPIO0 */

 

int main() /* Establish only GPIO0ModuleClkConfig */

{

 

      /* Writing to MODULEMODE field of CM_WKUP_GPIO0_CLKCTRL register. */

    HWREG(SOC_CM_WKUP_REGS + CM_WKUP_GPIO0_CLKCTRL) |=

        CM_WKUP_GPIO0_CLKCTRL_MODULEMODE_ENABLE;

 

    /* Waiting for MODULEMODE field to reflect the written value. */

    while(CM_WKUP_GPIO0_CLKCTRL_MODULEMODE_ENABLE !=

          (HWREG(SOC_CM_WKUP_REGS + CM_WKUP_GPIO0_CLKCTRL) &

           CM_WKUP_GPIO0_CLKCTRL_MODULEMODE));

 

    /*

    ** Writing to OPTFCLKEN_GPIO0_GDBCLK field of CM_WKUP_GPIO0_CLKCTRL

    ** register.

    */

    HWREG(SOC_CM_WKUP_REGS + CM_WKUP_GPIO0_CLKCTRL) |=

        CM_WKUP_GPIO0_CLKCTRL_OPTFCLKEN_GPIO0_GDBCLK;

 

    /* Waiting for OPTFCLKEN_GPIO0_GDBCLK field to reflect the written value. */

    while(CM_WKUP_GPIO0_CLKCTRL_OPTFCLKEN_GPIO0_GDBCLK !=

          (HWREG(SOC_CM_WKUP_REGS + CM_WKUP_GPIO0_CLKCTRL) &

           CM_WKUP_GPIO0_CLKCTRL_OPTFCLKEN_GPIO0_GDBCLK));

 

    /* Writing to IDLEST field in CM_WKUP_GPIO0_CLKCTRL register. */

    while((CM_WKUP_GPIO0_CLKCTRL_IDLEST_FUNC <<

           CM_WKUP_GPIO0_CLKCTRL_IDLEST_SHIFT) !=

          (HWREG(SOC_CM_WKUP_REGS + CM_WKUP_GPIO0_CLKCTRL) &

           CM_WKUP_GPIO0_CLKCTRL_IDLEST));

 

    /*

    ** Waiting for CLKACTIVITY_GPIO0_GDBCLK field in CM_WKUP_GPIO0_CLKCTRL

    ** register to attain desired value.

    */

    while(CM_WKUP_CLKSTCTRL_CLKACTIVITY_GPIO0_GDBCLK !=

          (HWREG(SOC_CM_WKUP_REGS + CM_WKUP_CLKSTCTRL) &

           CM_WKUP_CLKSTCTRL_CLKACTIVITY_GPIO0_GDBCLK));

 

 

  return 0;

}

----------------------------------------

The voltages are, on my new board:

VDDSHV1/GPMC = VDIG1= 1.8V

VDDSHV2/MMCSD-B = VMMC = 3.3V

VDDSHV3/GEMAC-B = VMMC =  3.3V

VDDSHV4/MMCSD-A = VMMC = 3.3V

VDDSHV5/GEMAC-A = VMMC = 3.3V

VDDSHV6/GENERAL = VAUX2 = 3.3V

 

Does VDDSHV1 need to be set to 3.3V for GPIO0ModuleClkConfig?

Setting that will require I2C setup on my new board…

Best regards