mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity
@ 2022-07-08  5:52 Ahmad Fatoum
  2022-07-08  5:52 ` [PATCH 2/3] pinctrl: stm32: keep GPIO bank clocks enabled throughout Ahmad Fatoum
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Ahmad Fatoum @ 2022-07-08  5:52 UTC (permalink / raw)
  To: barebox; +Cc: Yannick FERTRE, Ahmad Fatoum

From: Yannick FERTRE <yannick.fertre@foss.st.com>

Wrong DISPLAY_FLAGS used to set the data enable polarity.

Signed-off-by: Yannick FERTRE <yannick.fertre@foss.st.com>
Origin: https://st-md-mailman.stormreply.com/pipermail/uboot-stm32/2022-April/005122.html
[afa: cherry-picked from U-Boot driver]
Signed-off-by: Ahmad Fatoum <ahmad@a3f.at>
---
 drivers/video/stm32_ltdc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/stm32_ltdc.c b/drivers/video/stm32_ltdc.c
index 645c20b5545f..9dc35ade6124 100644
--- a/drivers/video/stm32_ltdc.c
+++ b/drivers/video/stm32_ltdc.c
@@ -98,7 +98,7 @@ static void ltdc_set_mode(struct ltdc_fb *priv,
 		val |= GCR_HSPOL;
 	if (mode->sync & FB_SYNC_VERT_HIGH_ACT)
 		val |= GCR_VSPOL;
-	if (mode->display_flags & DISPLAY_FLAGS_DE_HIGH)
+	if (mode->display_flags & DISPLAY_FLAGS_DE_LOW)
 		val |= GCR_DEPOL;
 	if (mode->display_flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
 		val |= GCR_PCPOL;
-- 
2.34.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/3] pinctrl: stm32: keep GPIO bank clocks enabled throughout
  2022-07-08  5:52 [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Ahmad Fatoum
@ 2022-07-08  5:52 ` Ahmad Fatoum
  2022-07-08  5:52 ` [PATCH 3/3] spi: stm32: fix reads for sizes bigger than SZ_64K-1 Ahmad Fatoum
  2022-07-11 10:43 ` [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Sascha Hauer
  2 siblings, 0 replies; 4+ messages in thread
From: Ahmad Fatoum @ 2022-07-08  5:52 UTC (permalink / raw)
  To: barebox; +Cc: Ahmad Fatoum

Mirror the Linux change of always keeping the clocks running. For
barebox. This simplifies the code and improves bitbanging throughput.

Origin: https://lore.kernel.org/all/20220422143608.226580-1-fabien.dessenne@foss.st.com/
Signed-off-by: Ahmad Fatoum <ahmad@a3f.at>
---
 drivers/pinctrl/pinctrl-stm32.c | 42 +++++++--------------------------
 1 file changed, 9 insertions(+), 33 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-stm32.c b/drivers/pinctrl/pinctrl-stm32.c
index cee10636cef9..fc0cc78f430d 100644
--- a/drivers/pinctrl/pinctrl-stm32.c
+++ b/drivers/pinctrl/pinctrl-stm32.c
@@ -24,7 +24,6 @@
 struct stm32_gpio_bank {
 	void __iomem *base;
 	struct gpio_chip chip;
-	struct clk *clk;
 	const char *name;
 };
 
@@ -154,8 +153,6 @@ static int __stm32_pinctrl_set_state(struct device_d *dev, struct device_node *p
 			"fn %u, mode %u, alt %u\n",
 			bank->name, offset, func, mode, alt);
 
-		clk_enable(bank->clk);
-
 		__stm32_pmx_set_mode(bank->base, offset, mode, alt);
 
 		if (adjust_slew_rate)
@@ -173,8 +170,6 @@ static int __stm32_pinctrl_set_state(struct device_d *dev, struct device_node *p
 			__stm32_pmx_gpio_output(bank->base, offset, 0);
 		else if (dir == PIN_OUTPUT_HIGH)
 			__stm32_pmx_gpio_output(bank->base, offset, 1);
-
-		clk_disable(bank->clk);
 	}
 
 	return 0;
@@ -219,8 +214,6 @@ static int stm32_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
 	int ret;
 	u32 mode, alt;
 
-	clk_enable(bank->clk);
-
 	__stm32_pmx_get_mode(bank->base, stm32_gpio_pin(gpio, NULL), &mode, &alt);
 	if ((alt == 0) && (mode == 0))
 		ret = 1;
@@ -229,8 +222,6 @@ static int stm32_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
 	else
 		ret = -EINVAL;
 
-	clk_disable(bank->clk);
-
 	return ret;
 }
 
@@ -238,37 +229,22 @@ static void stm32_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
 {
 	struct stm32_gpio_bank *bank = to_stm32_gpio_bank(chip);
 
-	clk_enable(bank->clk);
-
 	__stm32_pmx_gpio_set(bank->base, stm32_gpio_pin(gpio, NULL), value);
-
-	clk_disable(bank->clk);
 }
 
 static int stm32_gpio_get(struct gpio_chip *chip, unsigned gpio)
 {
 	struct stm32_gpio_bank *bank = to_stm32_gpio_bank(chip);
-	int ret;
-
-	clk_enable(bank->clk);
-
-	ret = __stm32_pmx_gpio_get(bank->base, stm32_gpio_pin(gpio, NULL));
 
-	clk_disable(bank->clk);
-
-	return ret;
+	return __stm32_pmx_gpio_get(bank->base, stm32_gpio_pin(gpio, NULL));
 }
 
 static int stm32_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
 {
 	struct stm32_gpio_bank *bank = to_stm32_gpio_bank(chip);
 
-	clk_enable(bank->clk);
-
 	__stm32_pmx_gpio_input(bank->base, stm32_gpio_pin(gpio, NULL));
 
-	clk_disable(bank->clk);
-
 	return 0;
 }
 
@@ -277,12 +253,8 @@ static int stm32_gpio_direction_output(struct gpio_chip *chip,
 {
 	struct stm32_gpio_bank *bank = to_stm32_gpio_bank(chip);
 
-	clk_enable(bank->clk);
-
 	__stm32_pmx_gpio_output(bank->base, stm32_gpio_pin(gpio, NULL), value);
 
-	clk_disable(bank->clk);
-
 	return 0;
 }
 
@@ -302,6 +274,7 @@ static int stm32_gpiochip_add(struct stm32_gpio_bank *bank,
 	struct resource *iores;
 	enum { PINCTRL_PHANDLE, GPIOCTRL_OFFSET, PINCTRL_OFFSET, PINCOUNT, GPIO_RANGE_NCELLS };
 	const __be32 *gpio_ranges;
+	struct clk *clk;
 	u32 ngpios;
 	int ret, size;
 
@@ -350,12 +323,15 @@ static int stm32_gpiochip_add(struct stm32_gpio_bank *bank,
 	bank->chip.base = be32_to_cpu(gpio_ranges[PINCTRL_OFFSET]);
 	bank->chip.ops  = &stm32_gpio_ops;
 	bank->chip.dev  = dev;
-	bank->clk = clk_get(dev, NULL);
-	if (IS_ERR(bank->clk)) {
-		dev_err(dev, "failed to get clk (%ld)\n", PTR_ERR(bank->clk));
-		return PTR_ERR(bank->clk);
+
+	clk = clk_get(dev, NULL);
+	if (IS_ERR(clk)) {
+		dev_err(dev, "failed to get clk (%ld)\n", PTR_ERR(clk));
+		return PTR_ERR(clk);
 	}
 
+	clk_enable(clk);
+
 	return gpiochip_add(&bank->chip);
 }
 
-- 
2.34.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 3/3] spi: stm32: fix reads for sizes bigger than SZ_64K-1
  2022-07-08  5:52 [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Ahmad Fatoum
  2022-07-08  5:52 ` [PATCH 2/3] pinctrl: stm32: keep GPIO bank clocks enabled throughout Ahmad Fatoum
@ 2022-07-08  5:52 ` Ahmad Fatoum
  2022-07-11 10:43 ` [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Sascha Hauer
  2 siblings, 0 replies; 4+ messages in thread
From: Ahmad Fatoum @ 2022-07-08  5:52 UTC (permalink / raw)
  To: barebox; +Cc: Ahmad Fatoum

stm32_spi_transfer_one() can transfer no more than SPI_CR2_TSIZE (64K - 1),
while e.g. imd tends to read more than  (64K - 1) from SPI flash:

  barebox:/ imd /dev/m25p0
  imd: error 90

Define spi_controller_mem_ops::exec_op for the SPI controller to fix
this.

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Signed-off-by: Ahmad Fatoum <ahmad@a3f.at>
---
 drivers/spi/stm32_spi.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/spi/stm32_spi.c b/drivers/spi/stm32_spi.c
index 0cb04a968c8a..d38207edac5f 100644
--- a/drivers/spi/stm32_spi.c
+++ b/drivers/spi/stm32_spi.c
@@ -11,6 +11,7 @@
 #include <init.h>
 #include <errno.h>
 #include <linux/reset.h>
+#include <linux/spi/spi-mem.h>
 #include <spi/spi.h>
 #include <linux/bitops.h>
 #include <clock.h>
@@ -474,6 +475,24 @@ out:
 	return ret;
 }
 
+static int stm32_spi_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op)
+{
+	if (op->data.nbytes > SPI_CR2_TSIZE)
+		op->data.nbytes = SPI_CR2_TSIZE;
+
+	return 0;
+}
+
+static int stm32_spi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
+{
+	return -ENOTSUPP;
+}
+
+static const struct spi_controller_mem_ops stm32_spi_mem_ops = {
+	.adjust_op_size = stm32_spi_adjust_op_size,
+	.exec_op = stm32_spi_exec_op,
+};
+
 static int stm32_spi_get_fifo_size(struct stm32_spi_priv *priv)
 {
 	u32 count = 0;
@@ -522,6 +541,7 @@ static int stm32_spi_probe(struct device_d *dev)
 
 	master->setup = stm32_spi_setup;
 	master->transfer = stm32_spi_transfer;
+	master->mem_ops = stm32_spi_mem_ops;
 
 	master->bus_num = -1;
 	stm32_spi_dt_probe(priv);
-- 
2.34.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity
  2022-07-08  5:52 [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Ahmad Fatoum
  2022-07-08  5:52 ` [PATCH 2/3] pinctrl: stm32: keep GPIO bank clocks enabled throughout Ahmad Fatoum
  2022-07-08  5:52 ` [PATCH 3/3] spi: stm32: fix reads for sizes bigger than SZ_64K-1 Ahmad Fatoum
@ 2022-07-11 10:43 ` Sascha Hauer
  2 siblings, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2022-07-11 10:43 UTC (permalink / raw)
  To: Ahmad Fatoum; +Cc: barebox, Yannick FERTRE

On Fri, Jul 08, 2022 at 07:52:48AM +0200, Ahmad Fatoum wrote:
> From: Yannick FERTRE <yannick.fertre@foss.st.com>
> 
> Wrong DISPLAY_FLAGS used to set the data enable polarity.
> 
> Signed-off-by: Yannick FERTRE <yannick.fertre@foss.st.com>
> Origin: https://st-md-mailman.stormreply.com/pipermail/uboot-stm32/2022-April/005122.html
> [afa: cherry-picked from U-Boot driver]
> Signed-off-by: Ahmad Fatoum <ahmad@a3f.at>
> ---
>  drivers/video/stm32_ltdc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks

Sascha

> 
> diff --git a/drivers/video/stm32_ltdc.c b/drivers/video/stm32_ltdc.c
> index 645c20b5545f..9dc35ade6124 100644
> --- a/drivers/video/stm32_ltdc.c
> +++ b/drivers/video/stm32_ltdc.c
> @@ -98,7 +98,7 @@ static void ltdc_set_mode(struct ltdc_fb *priv,
>  		val |= GCR_HSPOL;
>  	if (mode->sync & FB_SYNC_VERT_HIGH_ACT)
>  		val |= GCR_VSPOL;
> -	if (mode->display_flags & DISPLAY_FLAGS_DE_HIGH)
> +	if (mode->display_flags & DISPLAY_FLAGS_DE_LOW)
>  		val |= GCR_DEPOL;
>  	if (mode->display_flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
>  		val |= GCR_PCPOL;
> -- 
> 2.34.1
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-11 10:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-08  5:52 [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Ahmad Fatoum
2022-07-08  5:52 ` [PATCH 2/3] pinctrl: stm32: keep GPIO bank clocks enabled throughout Ahmad Fatoum
2022-07-08  5:52 ` [PATCH 3/3] spi: stm32: fix reads for sizes bigger than SZ_64K-1 Ahmad Fatoum
2022-07-11 10:43 ` [PATCH 1/3] video: stm32: stm32_ltdc: fix data enable polarity Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox