|
|
|
@ -137,11 +137,15 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs, |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Reset spi */ |
|
|
|
|
reg_write(®s->ctrl, 0); |
|
|
|
|
reg_write(®s->ctrl, MXC_CSPICTRL_EN); |
|
|
|
|
|
|
|
|
|
reg_ctrl = reg_read(®s->ctrl); |
|
|
|
|
/*
|
|
|
|
|
* Reset SPI and set all CSs to master mode, if toggling |
|
|
|
|
* between slave and master mode we might see a glitch |
|
|
|
|
* on the clock line |
|
|
|
|
*/ |
|
|
|
|
reg_ctrl = MXC_CSPICTRL_MODE_MASK; |
|
|
|
|
reg_write(®s->ctrl, reg_ctrl); |
|
|
|
|
reg_ctrl |= MXC_CSPICTRL_EN; |
|
|
|
|
reg_write(®s->ctrl, reg_ctrl); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* The following computation is taken directly from Freescale's code. |
|
|
|
@ -174,9 +178,6 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs, |
|
|
|
|
reg_ctrl = (reg_ctrl & ~MXC_CSPICTRL_POSTDIV(0x0F)) | |
|
|
|
|
MXC_CSPICTRL_POSTDIV(post_div); |
|
|
|
|
|
|
|
|
|
/* always set to master mode */ |
|
|
|
|
reg_ctrl |= 1 << (cs + 4); |
|
|
|
|
|
|
|
|
|
/* We need to disable SPI before changing registers */ |
|
|
|
|
reg_ctrl &= ~MXC_CSPICTRL_EN; |
|
|
|
|
|
|
|
|
|