Changeset bf2a269 in mainline


Ignore:
Timestamp:
2012-11-20T14:32:33Z (11 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fde2dab9
Parents:
bf6f6ca
Message:

rootamdm37x: Setup DPLL5 during initialization.

Location:
uspace/drv/infrastructure/rootamdm37x
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/infrastructure/rootamdm37x/cm/clock_control.h

    rbf6f6ca rbf2a269  
    6767
    6868        ioport32_t clken2_pll;
    69 #define CLOCK_CONTROL_CM_CLKEN_PLL_EN_PERIPH2_DPLL_LPMODE_FLAG   (1 << 10)
    70 #define CLOCK_CONTROL_CM_CLKEN_PLL_EN_PERIPH2_DPLL_DRIFTGUARD_FLAG   (1 << 3)
    71 #define CLOCK_CONTROL_CM_CLKEN_PLL_EN_PERIPH2_DPLL_MASK   (0x7)
    72 #define CLOCK_CONTROL_CM_CLKEN_PLL_EN_PERIPH2_DPLL_LP_STOP   (0x1)
    73 #define CLOCK_CONTROL_CM_CLKEN_PLL_EN_PERIPH2_DPLL_LOCK   (0x7)
     69#define CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_LPMODE_FLAG   (1 << 10)
     70#define CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_DRIFTGUARD_FLAG   (1 << 3)
     71#define CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_MASK   (0x7)
     72#define CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_LP_STOP   (0x1)
     73#define CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_LOCK   (0x7)
    7474
    7575        PADD32[6];
     
    143143        ioport32_t clksel4_pll;
    144144#define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_MULT_MASK   (0x7ff << 8)
    145 #define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_MULT(x)   (((x) & 0x7ff) << 8)
     145#define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_MULT_CREATE(x)   (((x) & 0x7ff) << 8)
     146#define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_MULT_GET(x)   (((x) >> 8) & 0x7ff)
    146147#define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_DIV_MASK   (0x7f)
    147 #define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_DIV(x)   ((x) & 0x7f)
     148#define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_DIV_CREATE(x)   ((x) & 0x7f)
     149#define CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_DIV_GET(x)   ((x) & 0x7f)
    148150
    149151        ioport32_t clksel5_pll;
    150152#define CLOCK_CONTROL_CM_CLKSEL5_PLL_DIV120M_MASK   (0x1f)
    151 #define CLOCK_CONTROL_CM_CLKSEL5_PLL_DIV120M(x)   ((x) & 0x1f)
     153#define CLOCK_CONTROL_CM_CLKSEL5_PLL_DIV120M_CREATE(x)   ((x) & 0x1f)
     154#define CLOCK_CONTROL_CM_CLKSEL5_PLL_DIV120M_GET(x)   ((x) & 0x1f)
    152155} clock_control_cm_regs_t;
    153156
  • uspace/drv/infrastructure/rootamdm37x/rootamdm37x.c

    rbf6f6ca rbf2a269  
    285285         */
    286286        // TODO setup DPLL5
     287        if ((pio_read_32(&device->cm.clocks->clken2_pll)
     288                & CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_MASK)
     289            != CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_LOCK) {
     290                /* Compute divisors and multiplier */
     291                assert((base_freq % 100) == 0);
     292                const unsigned mult = 1200;
     293                const unsigned div = base_freq / 100;
     294                const unsigned div2 = 1;
     295
     296                /* Set multiplier */
     297                pio_change_32(&device->cm.clocks->clksel4_pll,
     298                    CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_MULT_CREATE(mult),
     299                    CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_MULT_MASK, 10);
     300
     301                /* Set DPLL divisor */
     302                pio_change_32(&device->cm.clocks->clksel4_pll,
     303                    CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_DIV_CREATE(div),
     304                    CLOCK_CONTROL_CM_CLKSEL4_PLL_PERIPH2_DPLL_DIV_MASK, 10);
     305
     306                /* Set output clock divisor */
     307                pio_change_32(&device->cm.clocks->clksel5_pll,
     308                    CLOCK_CONTROL_CM_CLKSEL5_PLL_DIV120M_CREATE(div2),
     309                    CLOCK_CONTROL_CM_CLKSEL5_PLL_DIV120M_MASK, 10);
     310
     311                /* Start DPLL5 */
     312                pio_change_32(&device->cm.clocks->clken2_pll,
     313                    CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_LOCK,
     314                    CLOCK_CONTROL_CM_CLKEN2_PLL_EN_PERIPH2_DPLL_MASK, 10);
     315
     316        }
    287317        /* Set DPLL5 to automatic to save power */
    288318        pio_change_32(&device->cm.clocks->autoidle2_pll,
Note: See TracChangeset for help on using the changeset viewer.