diff mbox

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

Message ID 1346403311-25080-1-git-send-email-dirk.behme@de.bosch.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Dirk Behme Aug. 31, 2012, 8:55 a.m. UTC
From: Knut Wohlrab <knut.wohlrab@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@de.bosch.com>
---

Question: Are there real world examples for a need of an individual setting of
clock polarity/inactive state?

 drivers/spi/spi-imx.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

Comments

Shawn Guo Aug. 31, 2012, 2:35 a.m. UTC | #1
Copy Uwe ...

On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
> From: Knut Wohlrab <knut.wohlrab@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@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
> 


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Dirk Behme Sept. 21, 2012, 7:36 a.m. UTC | #2
On 31.08.2012 04:35, Shawn Guo wrote:
> Copy Uwe ...

Ping ;)

Any opinions on this?

Thanks

Dirk

> On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
>> From: Knut Wohlrab <knut.wohlrab@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@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

------------------------------------------------------------------------------
Got visibility?
Most devs has no idea what their production app looks like.
Find out how fast your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219671;13503038;y?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
Uwe Kleine-König Sept. 21, 2012, 7:54 a.m. UTC | #3
On Fri, Sep 21, 2012 at 09:36:51AM +0200, Dirk Behme wrote:
> On 31.08.2012 04:35, Shawn Guo wrote:
> >Copy Uwe ...
Copy our kernel mailing list ...

> Ping ;)
> 
> Any opinions on this?
Assuming it fixes access to a device I'm ok with your patch, but I don't
really feel responsible for the driver (i.e. me not acking shouldn't
have a negative influence on getting the patch in).

> >On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
> >>From: Knut Wohlrab <knut.wohlrab@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@de.bosch.com>
If you forward a patch you must add your S-o-b.

> >>---
> >>
> >>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?
yes.

Thanks
Uwe

> >> 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
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
Dirk Behme Sept. 22, 2012, 6:10 a.m. UTC | #4
On 21.09.2012 09:54, Uwe Kleine-König wrote:
> On Fri, Sep 21, 2012 at 09:36:51AM +0200, Dirk Behme wrote:
>> On 31.08.2012 04:35, Shawn Guo wrote:
>>> Copy Uwe ...
> Copy our kernel mailing list ...
>
>> Ping ;)
>>
>> Any opinions on this?
> Assuming it fixes access to a device I'm ok with your patch, but I don't
> really feel responsible for the driver (i.e. me not acking shouldn't
> have a negative influence on getting the patch in).

Ok, thanks.

I'm not so familiar with the SPI world: Who would be the best person 
to ack this, and in case it's ok finally apply it, then?

Thanks

Dirk

>>> On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
>>>> From: Knut Wohlrab<knut.wohlrab@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@de.bosch.com>
> If you forward a patch you must add your S-o-b.
>
>>>> ---
>>>>
>>>> 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?
> yes.
>
> Thanks
> Uwe
>
>>>> 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
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>
>


------------------------------------------------------------------------------
How fast is your code?
3 out of 4 devs don\\\'t know how their code performs in production.
Find out how slow your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219672;13503038;z?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
Fabio Estevam Sept. 22, 2012, 1:44 p.m. UTC | #5
Hi Dirk,

On Sat, Sep 22, 2012 at 3:10 AM, Dirk Behme <dirk.behme@gmail.com> wrote:

> I'm not so familiar with the SPI world: Who would be the best person to ack
> this, and in case it's ok finally apply it, then?

Mark Brown has been taking care of spi patches recently.

Regards,

Fabio Estevam

------------------------------------------------------------------------------
How fast is your code?
3 out of 4 devs don\\\'t know how their code performs in production.
Find out how slow your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219672;13503038;z?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
Shawn Guo Sept. 24, 2012, 5:06 a.m. UTC | #6
On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
> From: Knut Wohlrab <knut.wohlrab@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@de.bosch.com>

Acked-by: Shawn Guo <shawn.guo@linaro.org>

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Dirk Behme Sept. 24, 2012, 6:34 a.m. UTC | #7
Hi Mark,

On 24.09.2012 07:06, Shawn Guo wrote:
> On Fri, Aug 31, 2012 at 10:55:11AM +0200, Dirk Behme wrote:
>> From: Knut Wohlrab <knut.wohlrab@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@de.bosch.com>

Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>

> Acked-by: Shawn Guo <shawn.guo@linaro.org>

Being not so familiar with the flow of SPI patches, I was told that you 
are taking care of spi patches recently?

Do you like to have a look to this patch?

Many thanks and best regards

Dirk

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Mark Brown Sept. 24, 2012, 10:02 a.m. UTC | #8
On Mon, Sep 24, 2012 at 08:34:27AM +0200, Dirk Behme wrote:

> Being not so familiar with the flow of SPI patches, I was told that you  
> are taking care of spi patches recently?

> Do you like to have a look to this patch?

Well, nobody appears to have sent me a copy of it...

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Dirk Behme Sept. 24, 2012, 11:31 a.m. UTC | #9
On 24.09.2012 12:02, Mark Brown wrote:
> On Mon, Sep 24, 2012 at 08:34:27AM +0200, Dirk Behme wrote:
> 
>> Being not so familiar with the flow of SPI patches, I was told that you  
>> are taking care of spi patches recently?
> 
>> Do you like to have a look to this patch?
> 
> Well, nobody appears to have sent me a copy of it...

We are talking about

http://lists.infradead.org/pipermail/linux-arm-kernel/2012-August/116783.html

which should be at spi-devel-general@lists.sourceforge.net and 
linux-arm-kernel@lists.infradead.org .

I just learned that you might take care of spi patches recently, so 
sorry for not adding you to the CC, initially.

Let me know if you can find above thread on one of the both mailing 
lists. If not, I would be happy to resend it again.

Many thanks for your help!

Dirk



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Mark Brown Sept. 25, 2012, 11:08 a.m. UTC | #10
On Mon, Sep 24, 2012 at 01:31:22PM +0200, Dirk Behme wrote:

> Let me know if you can find above thread on one of the both mailing
> lists. If not, I would be happy to resend it again.

Yes, of course - it's hard to apply patches from web archives.

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
diff mbox

Patch

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);