Hi Frederik
For KL25 on FRDM-KL25Z with 8MHz crystal
MCG_C2 = (MCG_C2_FREQ_RANGE | MCG_C2_GAIN_MODE | MCG_C2_EREFS | MCG_C2_LOCRE0);
MCG_C1 = (MCG_C1_CLKS_EXTERN_CLK | MCG_C1_FRDIV_VALUE);
while ((MCG_S & MCG_S_OSCINIT) == 0) {}
while ((MCG_S & MCG_S_IREFST) != 0) {}
while ((MCG_S & MCG_S_CLKST_MASK) != MCG_S_CLKST_EXTERN_CLK) {}
MCG_C5 = ((CLOCK_DIV - 1) | MCG_C5_PLLSTEN0);
MCG_C6 = ((CLOCK_MUL - MCG_C6_VDIV0_LOWEST) | MCG_C6_PLLS);
while ((MCG_S & MCG_S_PLLST) == 0) {}
while ((MCG_S & MCG_S_LOCK) == 0) {}
SIM_CLKDIV1 = (((SYSTEM_CLOCK_DIVIDE - 1) << 28) | ((BUS_CLOCK_DIVIDE - 1) << 16));
MCG_C1 = (MCG_C1_CLKS_PLL_FLL | MCG_C1_FRDIV_1024);
while ((MCG_S & MCG_S_CLKST_MASK) != MCG_S_CLKST_PLL) {}
Note that for the HW on the FRDM-KL25Z
#define MCG_C2_GAIN_MODE 0 // don't select high gain mode since the oscillator will not start
and not
#define MCG_C2_GAIN_MODE MCG_C2_HGO // select high gain mode
and
#define MCG_C2_FREQ_RANGE MCG_C2_RANGE_1M_8M
for 8MHz crystal
#define CLOCK_DIV 4 // input must be divided to 2MHz..4MHz range (/1 to /25 possible)
#define CLOCK_MUL 48 // the PLL multiplication factor to achieve MCGPLLCLK operating frequency of 98MHz (x24 to x55 possible) (MCGPLLCLK/2 is 48MHz - required by USB)
For the KL25
#define MCG_C6_VDIV0_LOWEST 24
All other defines should be clear from their name and reference in the user's manual.
Get the complete code from the uTasker open source project on GitHub (with KL25 simulation - see below) in case of difficulties (or to simply accelerate your complete project work).

Regards
Mark
Complete Kinetis KL25 solutions, training and support: http://www.utasker.com/kinetis.html
Kinetis KL25:
- http://www.utasker.com/kinetis/FRDM-KL25Z.html
- http://www.utasker.com/kinetis/TWR-KL25Z48M.html