|
@@ -115,7 +115,8 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
|
|
|
{
|
|
|
u32 clk_src = mxc_get_clock(MXC_CSPI_CLK);
|
|
|
s32 reg_ctrl, reg_config;
|
|
|
- u32 ss_pol = 0, sclkpol = 0, sclkpha = 0, pre_div = 0, post_div = 0;
|
|
|
+ u32 ss_pol = 0, sclkpol = 0, sclkpha = 0, sclkctl = 0;
|
|
|
+ u32 pre_div = 0, post_div = 0;
|
|
|
struct cspi_regs *regs = (struct cspi_regs *)mxcs->base;
|
|
|
|
|
|
if (max_hz == 0) {
|
|
@@ -164,8 +165,10 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
|
|
|
if (mode & SPI_CS_HIGH)
|
|
|
ss_pol = 1;
|
|
|
|
|
|
- if (mode & SPI_CPOL)
|
|
|
+ if (mode & SPI_CPOL) {
|
|
|
sclkpol = 1;
|
|
|
+ sclkctl = 1;
|
|
|
+ }
|
|
|
|
|
|
if (mode & SPI_CPHA)
|
|
|
sclkpha = 1;
|
|
@@ -180,6 +183,8 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
|
|
|
(ss_pol << (cs + MXC_CSPICON_SSPOL));
|
|
|
reg_config = (reg_config & ~(1 << (cs + MXC_CSPICON_POL))) |
|
|
|
(sclkpol << (cs + MXC_CSPICON_POL));
|
|
|
+ reg_config = (reg_config & ~(1 << (cs + MXC_CSPICON_CTL))) |
|
|
|
+ (sclkctl << (cs + MXC_CSPICON_CTL));
|
|
|
reg_config = (reg_config & ~(1 << (cs + MXC_CSPICON_PHA))) |
|
|
|
(sclkpha << (cs + MXC_CSPICON_PHA));
|
|
|
|