[PATCH 2/2] rpi: set the correct parameter for simple framebuffer node

2023-07-25 Thread Meng Li
When raspberrpi-4b platform  boots up, there are 2 sets of same bootup
log displayed on HDMI monitor screen, it looks like the screen is split
into 2 parts. The root cause is that video format of u-boot is different
from kernel. The fixing "a8r8g8b8" video format is used in u-boot, but
"r5g6b5" video format from framebuffer node is used in kernel image. In
order to avoid weird display status on screen, it needs to set the correct
parameter for simple framebuffer node even if it has existed.

Signed-off-by: Meng Li 
---
 board/raspberrypi/rpi/rpi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
index 1057ebb994..38bcab15cf 100644
--- a/board/raspberrypi/rpi/rpi.c
+++ b/board/raspberrypi/rpi/rpi.c
@@ -561,6 +561,8 @@ int ft_board_setup(void *blob, struct bd_info *bd)
node = fdt_node_offset_by_compatible(blob, -1, "simple-framebuffer");
if (node < 0)
fdt_simplefb_add_node(blob);
+   else
+   fdt_simplefb_enable_and_mem_rsv(blob);
 
 #ifdef CONFIG_EFI_LOADER
/* Reserve the spin table */
-- 
2.34.1



[PATCH 0/2] patches used to enable u-boot video driver on raspberry pi 4B platform

2023-07-25 Thread Meng Li
From: Meng Li 

There are 2 patches as bleow:
0001-bcm2835-Add-simiple-framebuffer-for-use-with-fkms.patch
0002-rpi-set-the-correct-parameter-for-simple-framebuffer.patch
The first one is used to enable u-boot video driver.
The second one is used to fix the wired display status on monitor.

Jason Wessel (1):
  bcm2835: Add simiple-framebuffer for use with fkms

Meng Li (1):
  rpi: set the correct parameter for simple framebuffer node

 board/raspberrypi/rpi/rpi.c | 2 ++
 drivers/video/bcm2835.c | 3 +++
 2 files changed, 5 insertions(+)

-- 
2.34.1



[PATCH 1/2] bcm2835: Add simiple-framebuffer for use with fkms

2023-07-25 Thread Meng Li
From: Jason Wessel 

When the fkms dtb overlay is used only the simple-framebuffer is
presented as a usable video display. So, add "simple-framebuffer"
compatible to enable video driver bcm2835.

Signed-off-by: Jason Wessel 
Signed-off-by: Meng Li 
---
 drivers/video/bcm2835.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c
index c2962932c9..9078755c76 100644
--- a/drivers/video/bcm2835.c
+++ b/drivers/video/bcm2835.c
@@ -54,6 +54,9 @@ static const struct udevice_id bcm2835_video_ids[] = {
{ .compatible = "brcm,bcm2835-hdmi" },
{ .compatible = "brcm,bcm2711-hdmi0" },
{ .compatible = "brcm,bcm2708-fb" },
+#ifndef CONFIG_VIDEO_DT_SIMPLEFB
+   { .compatible = "simple-framebuffer" },
+#endif
{ }
 };
 
-- 
2.34.1



[PATCH v5, 1/2] driver: watchdog: reset watchdog in designware_wdt_stop() function

2021-05-23 Thread Meng . Li
From: MengLi 

In uboot command line environment, watchdog is not able to be
stopped with below commands:
SOCFPGA_STRATIX10 # wdt dev watchdog@ffd00200
SOCFPGA_STRATIX10 # wdt stop
Refer to watchdog driver in linux kernel, it is also need to reset
watchdog after disable it so that the disable action takes effect.

Signed-off-by: Meng Li 
Reviewed-by: Stefan Roese 

---
v5:
fix build issue, and verify this patch with latest upstream u-boot.
v4:
Remove the unauthorized signature.
v3:
Add the resets to designware_wdt_priv and initialize it in probe().
v2:
Change "#if CONFIG_IS_ENABLED(DM_RESET)" into
"if (CONFIG_IS_ENABLED(DM_RESET)) {", and define the variable
into if condition sentence.
---
 drivers/watchdog/designware_wdt.c | 19 +++
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/watchdog/designware_wdt.c 
b/drivers/watchdog/designware_wdt.c
index 9e5487168c..afed81e6c6 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -22,6 +22,7 @@
 struct designware_wdt_priv {
void __iomem*base;
unsigned intclk_khz;
+   struct reset_ctl_bulk *resets;
 };
 
 /*
@@ -95,6 +96,18 @@ static int designware_wdt_stop(struct udevice *dev)
designware_wdt_reset(dev);
writel(0, priv->base + DW_WDT_CR);
 
+if (CONFIG_IS_ENABLED(DM_RESET)) {
+   int ret;
+
+   ret = reset_assert_bulk(priv->resets);
+   if (ret)
+   return ret;
+
+   ret = reset_deassert_bulk(priv->resets);
+   if (ret)
+   return ret;
+   }
+
return 0;
 }
 
@@ -143,13 +156,11 @@ static int designware_wdt_probe(struct udevice *dev)
 #endif
 
if (CONFIG_IS_ENABLED(DM_RESET)) {
-   struct reset_ctl_bulk resets;
-
-   ret = reset_get_bulk(dev, );
+   ret = reset_get_bulk(dev, priv->resets);
if (ret)
goto err;
 
-   ret = reset_deassert_bulk();
+   ret = reset_deassert_bulk(priv->resets);
if (ret)
goto err;
}
-- 
2.17.1



[PATCH v5, 2/2] arm: socfpga: socfpga_stratix10: enable wdt command by default

2021-05-23 Thread Meng . Li
From: MengLi 

In latest u-boot code, watchdog feature is implemented, so enable
wdt command by default.

Signed-off-by: Meng Li 

---
v2:
Change the title of this patch
---
 configs/socfpga_stratix10_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/socfpga_stratix10_defconfig 
b/configs/socfpga_stratix10_defconfig
index da8bf986cd..7c6ee3c001 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -39,6 +39,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_WDT=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_NET_RANDOM_ETHADDR=y
-- 
2.17.1



[PATCH v4,2/2] driver: watchdog: enable wdt command by default

2021-05-11 Thread Meng . Li
From: MengLi 

In latest u-boot code, watchdog feature is implemented, so enable
wdt command by default.

Signed-off-by: Meng Li 
---
 configs/socfpga_stratix10_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/socfpga_stratix10_defconfig 
b/configs/socfpga_stratix10_defconfig
index 02d4ac0dae..0256afe511 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -40,6 +40,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_WDT=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_NET_RANDOM_ETHADDR=y
-- 
2.17.1



[PATCH v4, 1/2] driver: watchdog: reset watchdog in designware_wdt_stop() function

2021-05-11 Thread Meng . Li
From: MengLi 

In uboot command line environment, watchdog is not able to be
stopped with below commands:
SOCFPGA_STRATIX10 # wdt dev watchdog@ffd00200
SOCFPGA_STRATIX10 # wdt stop
Refer to watchdog driver in linux kernel, it is also need to reset
watchdog after disable it so that the disable action takes effect.

Signed-off-by: Meng Li 
Reviewed-by: Stefan Roese 

---
v4:
Remove the unauthorized signature.
v3:
Add the resets to designware_wdt_priv and initialize it in probe().
v2:
Change "#if CONFIG_IS_ENABLED(DM_RESET)" into
"if (CONFIG_IS_ENABLED(DM_RESET)) {", and define the variable
into if condition sentence.
---
 drivers/watchdog/designware_wdt.c | 31 +--
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/drivers/watchdog/designware_wdt.c 
b/drivers/watchdog/designware_wdt.c
index 12f09a7a39..cdf6b5709b 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -23,6 +23,7 @@
 struct designware_wdt_priv {
void __iomem*base;
unsigned intclk_khz;
+   struct reset_ctl_bulk *resets;
 };
 
 /*
@@ -96,6 +97,18 @@ static int designware_wdt_stop(struct udevice *dev)
designware_wdt_reset(dev);
writel(0, priv->base + DW_WDT_CR);
 
+if (CONFIG_IS_ENABLED(DM_RESET)) {
+   int ret;
+
+   ret = reset_assert_bulk(priv->resets);
+   if (ret)
+   return ret;
+
+   ret = reset_deassert_bulk(priv->resets);
+   if (ret)
+   return ret;
+   }
+
return 0;
 }
 
@@ -143,13 +143,11 @@ static int designware_wdt_probe(struct udevice *dev)
 #endif
 
if (CONFIG_IS_ENABLED(DM_RESET)) {
-   struct reset_ctl_bulk resets;
-
-   ret = reset_get_bulk(dev, );
+   ret = reset_get_bulk(dev, priv->resets);
if (ret)
goto err;
 
-   ret = reset_deassert_bulk();
+   ret = reset_deassert_bulk((priv->resets);
if (ret)
goto err;
}
-- 
2.17.1



[PATCH v3, 1/2] driver: watchdog: reset watchdog in designware_wdt_stop() function

2021-04-30 Thread Meng . Li
From: MengLi 

In uboot command line environment, watchdog is not able to be
stopped with below commands:
SOCFPGA_STRATIX10 # wdt dev watchdog@ffd00200
SOCFPGA_STRATIX10 # wdt stop
Refer to watchdog driver in linux kernel, it is also need to reset
watchdog after disable it so that the disable action takes effect.

Signed-off-by: Meng Li 
Reviewed-by: Stefan Roese 
Reviewed-by: Sean Anderson 

---
v3:
Add the resets to designware_wdt_priv and initialize it in probe().
v2:
Change "#if CONFIG_IS_ENABLED(DM_RESET)" into
"if (CONFIG_IS_ENABLED(DM_RESET)) {", and define the variable
into if condition sentence.
---
 drivers/watchdog/designware_wdt.c | 31 +--
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/drivers/watchdog/designware_wdt.c 
b/drivers/watchdog/designware_wdt.c
index 12f09a7a39..cdf6b5709b 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -23,6 +23,7 @@
 struct designware_wdt_priv {
void __iomem*base;
unsigned intclk_khz;
+   struct reset_ctl_bulk *resets;
 };
 
 /*
@@ -96,6 +97,18 @@ static int designware_wdt_stop(struct udevice *dev)
designware_wdt_reset(dev);
writel(0, priv->base + DW_WDT_CR);
 
+if (CONFIG_IS_ENABLED(DM_RESET)) {
+   int ret;
+
+   ret = reset_assert_bulk(priv->resets);
+   if (ret)
+   return ret;
+
+   ret = reset_deassert_bulk(priv->resets);
+   if (ret)
+   return ret;
+   }
+
return 0;
 }
 
@@ -137,17 +150,15 @@ static int designware_wdt_probe(struct udevice *dev)
priv->clk_khz = CONFIG_DW_WDT_CLOCK_KHZ;
 #endif
 
-#if CONFIG_IS_ENABLED(DM_RESET)
-   struct reset_ctl_bulk resets;
+   if (CONFIG_IS_ENABLED(DM_RESET)) {
+   ret = reset_get_bulk(dev, priv->resets);
+   if (ret)
+   return ret;
 
-   ret = reset_get_bulk(dev, );
-   if (ret)
-   return ret;
-
-   ret = reset_deassert_bulk();
-   if (ret)
-   return ret;
-#endif
+   ret = reset_deassert_bulk(priv->resets);
+   if (ret)
+   return ret;
+   }
 
/* reset to disable the watchdog */
return designware_wdt_stop(dev);
-- 
2.17.1



[PATCH v3,2/2] driver: watchdog: enable wdt command by default

2021-04-30 Thread Meng . Li
From: MengLi 

In latest u-boot code, watchdog feature is implemented, so enable
wdt command by default.

Signed-off-by: Meng Li 
---
 configs/socfpga_stratix10_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/socfpga_stratix10_defconfig 
b/configs/socfpga_stratix10_defconfig
index 02d4ac0dae..0256afe511 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -40,6 +40,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_WDT=y
 CONFIG_MTDIDS_DEFAULT="nor0=ff705000.spi.0"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
-- 
2.17.1



[PATCH v2,2/2] driver: watchdog: enable wdt command by default

2021-04-27 Thread Meng . Li
From: MengLi 

In latest u-boot code, watchdog feature is implemented, so enable
wdt command by default.

Signed-off-by: Meng Li 
---
 configs/socfpga_stratix10_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/socfpga_stratix10_defconfig 
b/configs/socfpga_stratix10_defconfig
index 02d4ac0dae..0256afe511 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -40,6 +40,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_WDT=y
 CONFIG_MTDIDS_DEFAULT="nor0=ff705000.spi.0"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
-- 
2.17.1



[PATCH v2, 1/2] driver: watchdog: reset watchdog in designware_wdt_stop() function

2021-04-27 Thread Meng . Li
From: MengLi 

In uboot command line environment, watchdog is not able to be
stopped with below commands:
SOCFPGA_STRATIX10 # wdt dev watchdog@ffd00200
SOCFPGA_STRATIX10 # wdt stop
Refer to watchdog driver in linux kernel, it is also need to reset
watchdog after disable it so that the disable action takes effect.

v2:
Change "#if CONFIG_IS_ENABLED(DM_RESET)" into
"if (CONFIG_IS_ENABLED(DM_RESET)) {", and define the variable
into if condition sentence.

Signed-off-by: Meng Li 
---
 drivers/watchdog/designware_wdt.c | 17 +
 1 file changed, 17 insertions(+)

diff --git a/drivers/watchdog/designware_wdt.c 
b/drivers/watchdog/designware_wdt.c
index 12f09a7a39..57cad1effc 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -96,6 +96,23 @@ static int designware_wdt_stop(struct udevice *dev)
designware_wdt_reset(dev);
writel(0, priv->base + DW_WDT_CR);
 
+if (CONFIG_IS_ENABLED(DM_RESET)) {
+   struct reset_ctl_bulk resets;
+   int ret;
+
+   ret = reset_get_bulk(dev, );
+   if (ret)
+   return ret;
+
+   ret = reset_assert_bulk();
+   if (ret)
+   return ret;
+
+   ret = reset_deassert_bulk();
+   if (ret)
+   return ret;
+   }
+
return 0;
 }
 
-- 
2.17.1



[PATCH 2/2] driver: watchdog: enable wdt command by default

2021-04-12 Thread Meng . Li
From: MengLi 

In latest u-boot code, watchdog feature is implemented, so enable
wdt command by default.

Signed-off-by: Meng Li 
---
 configs/socfpga_stratix10_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/socfpga_stratix10_defconfig 
b/configs/socfpga_stratix10_defconfig
index 02d4ac0dae..0256afe511 100644
--- a/configs/socfpga_stratix10_defconfig
+++ b/configs/socfpga_stratix10_defconfig
@@ -40,6 +40,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_WDT=y
 CONFIG_MTDIDS_DEFAULT="nor0=ff705000.spi.0"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
-- 
2.17.1



[PATCH 1/2] driver: watchdog: reset watchdog in designware_wdt_stop() function

2021-04-12 Thread Meng . Li
From: MengLi 

In uboot command line environment, watchdog is not able to be
stopped with below commands:
SOCFPGA_STRATIX10 # wdt dev watchdog@ffd00200
SOCFPGA_STRATIX10 # wdt stop
Refer to watchdog driver in linux kernel, it is also need to reset
watchdog after disable it so that the disable action takes effect.

Signed-off-by: Meng Li 
---
 drivers/watchdog/designware_wdt.c | 17 +
 1 file changed, 17 insertions(+)

diff --git a/drivers/watchdog/designware_wdt.c 
b/drivers/watchdog/designware_wdt.c
index 12f09a7a39..63e89d38c4 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -92,10 +92,27 @@ static int designware_wdt_reset(struct udevice *dev)
 static int designware_wdt_stop(struct udevice *dev)
 {
struct designware_wdt_priv *priv = dev_get_priv(dev);
+   __maybe_unused int ret;
 
designware_wdt_reset(dev);
writel(0, priv->base + DW_WDT_CR);
 
+#if CONFIG_IS_ENABLED(DM_RESET)
+   struct reset_ctl_bulk resets;
+
+   ret = reset_get_bulk(dev, );
+   if (ret)
+   return ret;
+
+   ret = reset_assert_bulk();
+   if (ret)
+   return ret;
+
+   ret = reset_deassert_bulk();
+   if (ret)
+   return ret;
+#endif
+
return 0;
 }
 
-- 
2.17.1