void am33xx_spl_board_init(void) { unsigned int oldspeed; unsigned short buf; struct cm_perpll *const cmper = (struct cm_perpll *)CM_PER; struct cm_wkuppll *const cmwkup = (struct cm_wkuppll *)CM_WKUP; /* * enable additional clocks of modules which are accessed later from * VxWorks OS */ u32 *const clk_domains[] = { 0 }; u32 *const clk_modules_xre1specific[] = { &cmwkup->wkup_adctscctrl, &cmper->spi1clkctrl, &cmper->dcan0clkctrl, &cmper->dcan1clkctrl, &cmper->epwmss0clkctrl, &cmper->epwmss1clkctrl, &cmper->epwmss2clkctrl, &cmper->lcdclkctrl, &cmper->lcdcclkstctrl, 0 }; do_enable_clocks(clk_domains, clk_modules_xre1specific, 1); /* power-OFF LCD-Display */ gpio_direction_output(LCD_PWR, 0); /* setup I2C */ enable_i2c_pin_mux(); i2c_set_bus_num(0); i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE); /* power-ON 3V3 via Resetcontroller */ oldspeed = i2c_get_bus_speed(); if (i2c_set_bus_speed(CONFIG_SYS_OMAP24_I2C_SPEED_PSOC) >= 0) { buf = RSTCTRL_FORCE_PWR_NEN | RSTCTRL_CAN_STB; i2c_write(RSTCTRL_ADDR, RSTCTRL_CTRLREG, 1, (uint8_t *)&buf, sizeof(buf)); i2c_set_bus_speed(oldspeed); } else { puts("ERROR: i2c_set_bus_speed failed! (turn on PWR_nEN)\n"); } pmicsetup(0); }
void am33xx_spl_board_init(void) { struct cm_perpll *const cmper = (struct cm_perpll *)CM_PER; /*struct cm_wkuppll *const cmwkup = (struct cm_wkuppll *)CM_WKUP;*/ struct cm_dpll *const cmdpll = (struct cm_dpll *)CM_DPLL; /* * in TRM they write a reset value of 1 (=CLK_M_OSC) for the * CLKSEL_TIMER6_CLK Register, in fact reset value is 0, so we need set * the source of timer6 clk to CLK_M_OSC */ writel(0x01, &cmdpll->clktimer6clk); /* enable additional clocks of modules which are accessed later */ u32 *const clk_domains[] = { &cmper->lcdcclkstctrl, 0 }; u32 *const clk_modules_tsspecific[] = { &cmper->lcdclkctrl, &cmper->timer5clkctrl, &cmper->timer6clkctrl, 0 }; do_enable_clocks(clk_domains, clk_modules_tsspecific, 1); /* setup LCD-Pixel Clock */ writel(0x2, &cmdpll->clklcdcpixelclk); /* clock comes from perPLL M2 */ /* setup I2C */ enable_i2c_pin_mux(); i2c_set_bus_num(0); i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE); pmicsetup(0); gpio_direction_output(64+29, 1); /* switch NAND_RnB to GPMC_WAIT1 */ gpio_direction_output(64+28, 1); /* switch MII2_CRS to GPMC_WAIT0 */ }