Skip to contentSkip to conversation

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

PATCH New Dirk Behme 6 participants 11 messages Aug 31, 2012 – Sep 25, 2012

Subsystems (2)
lore
Share & tools
lore

Dirk Behme

author
#0 lore raw

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

From: Knut Wohlrab <[email protected]>

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

---

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(-)
drivers/spi/spi-imx.c +4 -2
index e834ff8..d64655b 100644
@@ -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);
 
Signature · 1 line
1.7.0.4
#1 lore raw

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

Copy Uwe ...

Quoted 8 lines · Dirk Behme

From: Knut Wohlrab <[email protected]>

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:

Quoted 8 lines

DT without "spi-cpol" = 0 = clock active high polarity = inactive state low
DT with "spi-cpol" = 1 = clock active low polarity = inactive state high

---

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

Quoted 32 lines
 drivers/spi/spi-imx.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
drivers/spi/spi-imx.c +4 -2
index e834ff8..d64655b 100644
@@ -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);
 
Signature · 1 line
1.7.0.4
author
#2 lore raw

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

Quoted 1 line · Shawn Guo

Copy Uwe ...

Ping ;)

Any opinions on this?

Thanks

Dirk

Quoted 54 lines · Dirk Behme
Quoted 8 lines

From: Knut Wohlrab <[email protected]>

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:

Quoted 8 lines

DT without "spi-cpol" = 0 = clock active high polarity = inactive state low
DT with "spi-cpol" = 1 = clock active low polarity = inactive state high

---

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

Quoted 30 lines
 drivers/spi/spi-imx.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
drivers/spi/spi-imx.c +4 -2
index e834ff8..d64655b 100644
@@ -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);
 
Signature · 1 line
1.7.0.4
#3 lore raw

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

Quoted 2 lines · Dirk Behme
Quoted 1 line · Shawn Guo

Copy Uwe ...

Copy our kernel mailing list ...

Quoted 3 lines

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

Quoted 6 lines
Quoted 6 lines · Dirk Behme
Quoted 5 lines

From: Knut Wohlrab <[email protected]>

There are SPI devices which need a SPI clock with active low polarity and high inactive state.

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

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

If you forward a patch you must add your S-o-b.

Quoted 7 lines
Quoted 7 lines
Quoted 4 lines

---

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

Quoted 33 lines
Quoted 19 lines
Quoted 19 lines

drivers/spi/spi-imx.c | 6 ++++--

1 files changed, 4 insertions(+), 2 deletions(-)
drivers/spi/spi-imx.c +2 -1
index e834ff8..d64655b 100644
@@ -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) {
Quoted 8 lines
Quoted 8 lines
drivers/spi/spi-imx.c +2 -1
 		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);
Signature · 1 line
1.7.0.4

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Signature · 2 lines
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
#4 lore raw

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

Quoted 11 lines · Uwe Kleine-K?nig
Quoted 2 lines · Dirk Behme
Quoted 1 line · Shawn Guo

Copy Uwe ...

Copy our kernel mailing list ...

Quoted 3 lines

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

Quoted 61 lines
Quoted 6 lines
Quoted 6 lines · Dirk Behme
Quoted 5 lines

From: Knut Wohlrab<[email protected]>

There are SPI devices which need a SPI clock with active low polarity and high inactive state.

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

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

If you forward a patch you must add your S-o-b.

Quoted 7 lines
Quoted 7 lines
Quoted 4 lines

---

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

Quoted 33 lines
Quoted 19 lines
Quoted 19 lines

drivers/spi/spi-imx.c | 6 ++++--

1 files changed, 4 insertions(+), 2 deletions(-)
drivers/spi/spi-imx.c +2 -1
index e834ff8..d64655b 100644
@@ -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) {
Quoted 8 lines
Quoted 8 lines
drivers/spi/spi-imx.c +2 -2
 		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 at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

reviewer
#5 lore raw

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

Hi Dirk,

Quoted 2 lines · Dirk Behme

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

#6 lore raw

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

In reply to Dirk Behme
Quoted 5 lines · Dirk Behme

From: Knut Wohlrab <[email protected]>

There are SPI devices which need a SPI clock with active low polarity and high inactive state.

Quoted 7 lines

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

author
#7 lore raw

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

Hi Mark,

Quoted 6 lines · Shawn Guo
Quoted 5 lines · Dirk Behme

From: Knut Wohlrab <[email protected]>

There are SPI devices which need a SPI clock with active low polarity and high inactive state.

Quoted 7 lines
Quoted 7 lines

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

Quoted 1 line

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

#8 lore raw

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

Quoted 4 lines · Dirk Behme

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

author
#9 lore raw

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

Quoted 8 lines · Mark Brown
Quoted 4 lines · Dirk Behme

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 at lists.sourceforge.net and linux-arm-kernel at 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

#10 lore raw

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

Quoted 2 lines · Dirk Behme

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.