All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4 0/4] drivers: Add reset ctrl to drivers
@ 2018-06-01  8:45 Ley Foon Tan
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT Ley Foon Tan
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Ley Foon Tan @ 2018-06-01  8:45 UTC (permalink / raw)
  To: u-boot

Add reset ctrl to dwmmc socfpga, designware Ethernet and ns16550 serial drivers.

A reset property is an optional feature, so only print out a warning and
do not fail if a reset property is not present.
    
If a reset property is discovered, then use it to deassert, thus bringing the
IP out of reset.

v4 change:
- Add patch to check CONFIG_SPL_RESET_SUPPORT in reset.h

History:
v1: https://patchwork.ozlabs.org/cover/905519/
v2: https://patchwork.ozlabs.org/cover/908667/
v3: https://patchwork.ozlabs.org/cover/910018/

Ley Foon Tan (4):
  include: reset: check CONFIG_SPL_RESET_SUPPORT
  mmc: dwmmc: socfpga: Add reset ctrl to driver
  serial: ns16550: Add reset ctrl to driver
  net: designware: Add reset ctrl to driver

 drivers/mmc/socfpga_dw_mmc.c | 17 +++++++++++++++++
 drivers/net/designware.c     |  8 ++++++++
 drivers/serial/ns16550.c     |  8 ++++++++
 include/reset.h              |  3 ++-
 4 files changed, 35 insertions(+), 1 deletion(-)

-- 
2.2.2

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

* [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT
  2018-06-01  8:45 [U-Boot] [PATCH v4 0/4] drivers: Add reset ctrl to drivers Ley Foon Tan
@ 2018-06-01  8:45 ` Ley Foon Tan
  2018-06-01 14:26   ` Simon Glass
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 2/4] mmc: dwmmc: socfpga: Add reset ctrl to driver Ley Foon Tan
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Ley Foon Tan @ 2018-06-01  8:45 UTC (permalink / raw)
  To: u-boot

Add checking for CONFIG_SPL_RESET_SUPPORT to fix compilation error when
CONFIG_DM_RESET is enabled but CONFIG_SPL_RESET_SUPPORT is disabled in SPL
build.

Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
 include/reset.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/reset.h b/include/reset.h
index 201bafc..0ac0a47 100644
--- a/include/reset.h
+++ b/include/reset.h
@@ -77,7 +77,8 @@ struct reset_ctl_bulk {
 	unsigned int count;
 };
 
-#ifdef CONFIG_DM_RESET
+#if (!defined(CONFIG_SPL_BUILD) && defined(CONFIG_DM_RESET)) ||	\
+    (defined(CONFIG_SPL_RESET_SUPPORT) && defined(CONFIG_DM_RESET))
 /**
  * reset_get_by_index - Get/request a reset signal by integer index.
  *
-- 
2.2.2

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

* [U-Boot] [PATCH v4 2/4] mmc: dwmmc: socfpga: Add reset ctrl to driver
  2018-06-01  8:45 [U-Boot] [PATCH v4 0/4] drivers: Add reset ctrl to drivers Ley Foon Tan
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT Ley Foon Tan
@ 2018-06-01  8:45 ` Ley Foon Tan
  2018-06-01 14:26   ` Simon Glass
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 3/4] serial: ns16550: " Ley Foon Tan
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 4/4] net: designware: " Ley Foon Tan
  3 siblings, 1 reply; 11+ messages in thread
From: Ley Foon Tan @ 2018-06-01  8:45 UTC (permalink / raw)
  To: u-boot

Add code to reset all reset signals as in mmc DT node. A reset property is an optional feature,
so only print out a warning and do not fail if a reset property is not present.

If a reset property is discovered, then use it to deassert, thus bringing the
IP out of reset.

Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
 drivers/mmc/socfpga_dw_mmc.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
index d0a0362..4be4eb5 100644
--- a/drivers/mmc/socfpga_dw_mmc.c
+++ b/drivers/mmc/socfpga_dw_mmc.c
@@ -13,6 +13,7 @@
 #include <linux/libfdt.h>
 #include <linux/err.h>
 #include <malloc.h>
+#include <reset.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -33,6 +34,20 @@ struct dwmci_socfpga_priv_data {
 	unsigned int		smplsel;
 };
 
+static void socfpga_dwmci_reset(struct udevice *dev)
+{
+	struct reset_ctl_bulk reset_bulk;
+	int ret;
+
+	ret = reset_get_bulk(dev, &reset_bulk);
+	if (ret) {
+	       dev_warn(dev, "Can't get reset: %d\n", ret);
+	       return;
+	}
+
+	reset_deassert_bulk(&reset_bulk);
+}
+
 static void socfpga_dwmci_clksel(struct dwmci_host *host)
 {
 	struct dwmci_socfpga_priv_data *priv = host->priv;
@@ -109,6 +124,8 @@ static int socfpga_dwmmc_probe(struct udevice *dev)
 	struct dwmci_socfpga_priv_data *priv = dev_get_priv(dev);
 	struct dwmci_host *host = &priv->host;
 
+	socfpga_dwmci_reset(dev);
+
 #ifdef CONFIG_BLK
 	dwmci_setup_cfg(&plat->cfg, host, host->bus_hz, 400000);
 	host->mmc = &plat->mmc;
-- 
2.2.2

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

* [U-Boot] [PATCH v4 3/4] serial: ns16550: Add reset ctrl to driver
  2018-06-01  8:45 [U-Boot] [PATCH v4 0/4] drivers: Add reset ctrl to drivers Ley Foon Tan
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT Ley Foon Tan
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 2/4] mmc: dwmmc: socfpga: Add reset ctrl to driver Ley Foon Tan
@ 2018-06-01  8:45 ` Ley Foon Tan
  2018-06-01 14:26   ` Simon Glass
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 4/4] net: designware: " Ley Foon Tan
  3 siblings, 1 reply; 11+ messages in thread
From: Ley Foon Tan @ 2018-06-01  8:45 UTC (permalink / raw)
  To: u-boot

Add code to reset all reset signals as in serial DT node. A reset property is an optional feature,
so do not fail if a reset property is not present.

If a reset property is discovered, then use it to deassert, thus bringing the
IP out of reset.

Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
Reviewed-by: Marek Vasut <marex@denx.de>
---
 drivers/serial/ns16550.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 53550bf..9c80090 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <ns16550.h>
+#include <reset.h>
 #include <serial.h>
 #include <watchdog.h>
 #include <linux/types.h>
@@ -177,6 +178,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
 #if defined(CONFIG_ARCH_OMAP2PLUS)
 	serial_out(0x7, &com_port->mdr1);	/* mode select reset TL16C750*/
 #endif
+
 	serial_out(UART_MCRVAL, &com_port->mcr);
 	serial_out(ns16550_getfcr(com_port), &com_port->fcr);
 	if (baud_divisor != -1)
@@ -370,6 +372,12 @@ static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
 int ns16550_serial_probe(struct udevice *dev)
 {
 	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct reset_ctl_bulk reset_bulk;
+	int ret;
+
+	ret = reset_get_bulk(dev, &reset_bulk);
+	if (!ret)
+		reset_deassert_bulk(&reset_bulk);
 
 	com_port->plat = dev_get_platdata(dev);
 	NS16550_init(com_port, -1);
-- 
2.2.2

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

* [U-Boot] [PATCH v4 4/4] net: designware: Add reset ctrl to driver
  2018-06-01  8:45 [U-Boot] [PATCH v4 0/4] drivers: Add reset ctrl to drivers Ley Foon Tan
                   ` (2 preceding siblings ...)
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 3/4] serial: ns16550: " Ley Foon Tan
@ 2018-06-01  8:45 ` Ley Foon Tan
  2018-06-01 14:26   ` Simon Glass
  2018-06-12 20:00   ` Joe Hershberger
  3 siblings, 2 replies; 11+ messages in thread
From: Ley Foon Tan @ 2018-06-01  8:45 UTC (permalink / raw)
  To: u-boot

Add code to reset all reset signals as in Ethernet DT node. A reset property is an optional feature,
so only print out a warning and do not fail if a reset property is not present.

If a reset property is discovered, then use it to deassert, thus bringing the
IP out of reset.

Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
 drivers/net/designware.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index cf12521..6797691 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -15,6 +15,7 @@
 #include <miiphy.h>
 #include <malloc.h>
 #include <pci.h>
+#include <reset.h>
 #include <linux/compiler.h>
 #include <linux/err.h>
 #include <linux/kernel.h>
@@ -664,6 +665,7 @@ int designware_eth_probe(struct udevice *dev)
 	u32 iobase = pdata->iobase;
 	ulong ioaddr;
 	int ret;
+	struct reset_ctl_bulk reset_bulk;
 #ifdef CONFIG_CLK
 	int i, err, clock_nb;
 
@@ -710,6 +712,12 @@ int designware_eth_probe(struct udevice *dev)
 	}
 #endif
 
+	ret = reset_get_bulk(dev, &reset_bulk);
+	if (ret)
+		dev_warn(dev, "Can't get reset: %d\n", ret);
+	else
+		reset_deassert_bulk(&reset_bulk);
+
 #ifdef CONFIG_DM_PCI
 	/*
 	 * If we are on PCI bus, either directly attached to a PCI root port,
-- 
2.2.2

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

* [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT Ley Foon Tan
@ 2018-06-01 14:26   ` Simon Glass
  2018-06-04  5:42     ` Ley Foon Tan
  0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2018-06-01 14:26 UTC (permalink / raw)
  To: u-boot

Hi,

On 1 June 2018 at 02:45, Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> Add checking for CONFIG_SPL_RESET_SUPPORT to fix compilation error when
> CONFIG_DM_RESET is enabled but CONFIG_SPL_RESET_SUPPORT is disabled in SPL
> build.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> ---
>  include/reset.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/include/reset.h b/include/reset.h
> index 201bafc..0ac0a47 100644
> --- a/include/reset.h
> +++ b/include/reset.h
> @@ -77,7 +77,8 @@ struct reset_ctl_bulk {
>         unsigned int count;
>  };
>
> -#ifdef CONFIG_DM_RESET
> +#if (!defined(CONFIG_SPL_BUILD) && defined(CONFIG_DM_RESET)) ||        \
> +    (defined(CONFIG_SPL_RESET_SUPPORT) && defined(CONFIG_DM_RESET))

CONFIG_SPL_RESET_SUPPORT should move to Kconfig

Also it should be renamed to CONFIG_SPL_DM_RESET

so that you can use:

#if CONFIG_IS_ENABLED(DM_RESET)

>  /**
>   * reset_get_by_index - Get/request a reset signal by integer index.
>   *
> --
> 2.2.2
>

Regards,
Simon

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

* [U-Boot] [PATCH v4 2/4] mmc: dwmmc: socfpga: Add reset ctrl to driver
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 2/4] mmc: dwmmc: socfpga: Add reset ctrl to driver Ley Foon Tan
@ 2018-06-01 14:26   ` Simon Glass
  0 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2018-06-01 14:26 UTC (permalink / raw)
  To: u-boot

On 1 June 2018 at 02:45, Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> Add code to reset all reset signals as in mmc DT node. A reset property is an optional feature,
> so only print out a warning and do not fail if a reset property is not present.
>
> If a reset property is discovered, then use it to deassert, thus bringing the
> IP out of reset.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> ---
>  drivers/mmc/socfpga_dw_mmc.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* [U-Boot] [PATCH v4 3/4] serial: ns16550: Add reset ctrl to driver
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 3/4] serial: ns16550: " Ley Foon Tan
@ 2018-06-01 14:26   ` Simon Glass
  0 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2018-06-01 14:26 UTC (permalink / raw)
  To: u-boot

On 1 June 2018 at 02:45, Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> Add code to reset all reset signals as in serial DT node. A reset property is an optional feature,
> so do not fail if a reset property is not present.
>
> If a reset property is discovered, then use it to deassert, thus bringing the
> IP out of reset.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> Reviewed-by: Marek Vasut <marex@denx.de>
> ---
>  drivers/serial/ns16550.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
> index 53550bf..9c80090 100644
> --- a/drivers/serial/ns16550.c
> +++ b/drivers/serial/ns16550.c
> @@ -9,6 +9,7 @@
>  #include <dm.h>
>  #include <errno.h>
>  #include <ns16550.h>
> +#include <reset.h>
>  #include <serial.h>
>  #include <watchdog.h>
>  #include <linux/types.h>
> @@ -177,6 +178,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
>  #if defined(CONFIG_ARCH_OMAP2PLUS)
>         serial_out(0x7, &com_port->mdr1);       /* mode select reset TL16C750*/
>  #endif
> +

Unrelated change?

>         serial_out(UART_MCRVAL, &com_port->mcr);
>         serial_out(ns16550_getfcr(com_port), &com_port->fcr);
>         if (baud_divisor != -1)
> @@ -370,6 +372,12 @@ static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
>  int ns16550_serial_probe(struct udevice *dev)
>  {
>         struct NS16550 *const com_port = dev_get_priv(dev);
> +       struct reset_ctl_bulk reset_bulk;
> +       int ret;
> +
> +       ret = reset_get_bulk(dev, &reset_bulk);
> +       if (!ret)
> +               reset_deassert_bulk(&reset_bulk);
>
>         com_port->plat = dev_get_platdata(dev);
>         NS16550_init(com_port, -1);
> --
> 2.2.2
>

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

* [U-Boot] [PATCH v4 4/4] net: designware: Add reset ctrl to driver
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 4/4] net: designware: " Ley Foon Tan
@ 2018-06-01 14:26   ` Simon Glass
  2018-06-12 20:00   ` Joe Hershberger
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2018-06-01 14:26 UTC (permalink / raw)
  To: u-boot

On 1 June 2018 at 02:45, Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> Add code to reset all reset signals as in Ethernet DT node. A reset property is an optional feature,
> so only print out a warning and do not fail if a reset property is not present.
>
> If a reset property is discovered, then use it to deassert, thus bringing the
> IP out of reset.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> ---
>  drivers/net/designware.c | 8 ++++++++
>  1 file changed, 8 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT
  2018-06-01 14:26   ` Simon Glass
@ 2018-06-04  5:42     ` Ley Foon Tan
  0 siblings, 0 replies; 11+ messages in thread
From: Ley Foon Tan @ 2018-06-04  5:42 UTC (permalink / raw)
  To: u-boot

On Fri, Jun 1, 2018 at 10:26 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi,
>
> On 1 June 2018 at 02:45, Ley Foon Tan <ley.foon.tan@intel.com> wrote:
>> Add checking for CONFIG_SPL_RESET_SUPPORT to fix compilation error when
>> CONFIG_DM_RESET is enabled but CONFIG_SPL_RESET_SUPPORT is disabled in SPL
>> build.
>>
>> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
>> ---
>>  include/reset.h | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/include/reset.h b/include/reset.h
>> index 201bafc..0ac0a47 100644
>> --- a/include/reset.h
>> +++ b/include/reset.h
>> @@ -77,7 +77,8 @@ struct reset_ctl_bulk {
>>         unsigned int count;
>>  };
>>
>> -#ifdef CONFIG_DM_RESET
>> +#if (!defined(CONFIG_SPL_BUILD) && defined(CONFIG_DM_RESET)) ||        \
>> +    (defined(CONFIG_SPL_RESET_SUPPORT) && defined(CONFIG_DM_RESET))
>
> CONFIG_SPL_RESET_SUPPORT should move to Kconfig
This config is in Kconfig already.
>
> Also it should be renamed to CONFIG_SPL_DM_RESET
Okay.
>
> so that you can use:
>
> #if CONFIG_IS_ENABLED(DM_RESET)
Okay, will send new patch for this.

Regards
Ley Foon

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

* [U-Boot] [PATCH v4 4/4] net: designware: Add reset ctrl to driver
  2018-06-01  8:45 ` [U-Boot] [PATCH v4 4/4] net: designware: " Ley Foon Tan
  2018-06-01 14:26   ` Simon Glass
@ 2018-06-12 20:00   ` Joe Hershberger
  1 sibling, 0 replies; 11+ messages in thread
From: Joe Hershberger @ 2018-06-12 20:00 UTC (permalink / raw)
  To: u-boot

On Fri, Jun 1, 2018 at 3:45 AM, Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> Add code to reset all reset signals as in Ethernet DT node. A reset property is an optional feature,
> so only print out a warning and do not fail if a reset property is not present.
>
> If a reset property is discovered, then use it to deassert, thus bringing the
> IP out of reset.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>

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

end of thread, other threads:[~2018-06-12 20:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-01  8:45 [U-Boot] [PATCH v4 0/4] drivers: Add reset ctrl to drivers Ley Foon Tan
2018-06-01  8:45 ` [U-Boot] [PATCH v4 1/4] include: reset: check CONFIG_SPL_RESET_SUPPORT Ley Foon Tan
2018-06-01 14:26   ` Simon Glass
2018-06-04  5:42     ` Ley Foon Tan
2018-06-01  8:45 ` [U-Boot] [PATCH v4 2/4] mmc: dwmmc: socfpga: Add reset ctrl to driver Ley Foon Tan
2018-06-01 14:26   ` Simon Glass
2018-06-01  8:45 ` [U-Boot] [PATCH v4 3/4] serial: ns16550: " Ley Foon Tan
2018-06-01 14:26   ` Simon Glass
2018-06-01  8:45 ` [U-Boot] [PATCH v4 4/4] net: designware: " Ley Foon Tan
2018-06-01 14:26   ` Simon Glass
2018-06-12 20:00   ` Joe Hershberger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.