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