--- drivers/spi/mpc52xx_psc_spi.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) Index: work-powerpc.git/drivers/spi/mpc52xx_psc_spi.c =================================================================== --- work-powerpc.git.orig/drivers/spi/mpc52xx_psc_spi.c +++ work-powerpc.git/drivers/spi/mpc52xx_psc_spi.c @@ -32,7 +32,8 @@ #include #include -#define MCLK 20000000 /* PSC port MClk in hz */ +#define MCLK 22000000 /* PSC port MClk in hz */ +/* 22 is nice, because we get exact MCLK divider, and nice psc dividers for clocks > 100 kHz */ struct mpc52xx_psc_spi { /* fsl_spi_platform data */ @@ -341,9 +342,9 @@ static int mpc52xx_psc_spi_port_config(i goto unmap_regs; } - /* default sysclk is 512MHz */ + /* default sysclk is 528MHz */ mclken_div = 0x8000 | - (((mps->sysclk ? mps->sysclk : 512000000) / MCLK) & 0x1FF); + (((mps->sysclk ? mps->sysclk : 528000000) / MCLK - 1) & 0x1FF); switch (psc_id) { case 1: @@ -368,7 +369,7 @@ static int mpc52xx_psc_spi_port_config(i break; case 3: ul = in_be32(&gpio->port_config); - ul &= 0xFFFFF0FF; + ul &= 0xFFFFF8FF; ul |= 0x00000600; out_be32(&gpio->port_config, ul); out_be16(&cdm->mclken_div_psc3, mclken_div);