[PATCH] spi/imx: set the inactive state of the clock according to the clock polarity

Shawn Guo shawn.guo at linaro.org
Thu Aug 30 22:35:20 EDT 2012


Copy Uwe ...

On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
> From: Knut Wohlrab <knut.wohlrab at de.bosch.com>
> 
> There are SPI devices which need a SPI clock with active low polarity and
> high inactive state.
> 
> Add the setting of the inactive state ECSPIx_CONFIGREG:SCLK CTL
> according to the clock polarity ECSPIx_CONFIGREG:SCLK POL:
> 
> DT without "spi-cpol" = 0 = clock active high polarity = inactive state low
> DT with    "spi-cpol" = 1 = clock active low  polarity = inactive state high
> 
> Signed-off-by: Knut Wohlrab <knut.wohlrab at de.bosch.com>
> ---
> 
> Question: Are there real world examples for a need of an individual setting of
> clock polarity/inactive state?

I'm less concerned about that.  We can always patch the driver when
the real world example occurs?

Regards,
Shawn

> 
>  drivers/spi/spi-imx.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
> index e834ff8..d64655b 100644
> --- a/drivers/spi/spi-imx.c
> +++ b/drivers/spi/spi-imx.c
> @@ -197,6 +197,7 @@ static unsigned int spi_imx_clkdiv_2(unsigned int fin,
>  #define MX51_ECSPI_CONFIG_SCLKPOL(cs)	(1 << ((cs) +  4))
>  #define MX51_ECSPI_CONFIG_SBBCTRL(cs)	(1 << ((cs) +  8))
>  #define MX51_ECSPI_CONFIG_SSBPOL(cs)	(1 << ((cs) + 12))
> +#define MX51_ECSPI_CONFIG_SCLKCTL(cs)	(1 << ((cs) + 20))
>  
>  #define MX51_ECSPI_INT		0x10
>  #define MX51_ECSPI_INT_TEEN		(1 <<  0)
> @@ -287,9 +288,10 @@ static int __maybe_unused mx51_ecspi_config(struct spi_imx_data *spi_imx,
>  	if (config->mode & SPI_CPHA)
>  		cfg |= MX51_ECSPI_CONFIG_SCLKPHA(config->cs);
>  
> -	if (config->mode & SPI_CPOL)
> +	if (config->mode & SPI_CPOL) {
>  		cfg |= MX51_ECSPI_CONFIG_SCLKPOL(config->cs);
> -
> +		cfg |= MX51_ECSPI_CONFIG_SCLKCTL(config->cs);
> +	}
>  	if (config->mode & SPI_CS_HIGH)
>  		cfg |= MX51_ECSPI_CONFIG_SSBPOL(config->cs);
>  
> -- 
> 1.7.0.4
> 




More information about the linux-arm-kernel mailing list