mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output
@ 2017-02-09  9:36 Wadim Egorov
  2017-02-09  9:36 ` [RFC] serial: ns16550: Set read/write functions depending on reg-io-width Wadim Egorov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Wadim Egorov @ 2017-02-09  9:36 UTC (permalink / raw)
  To: barebox

RK3288's UART2 is the default debug uart interface.

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
---
 arch/arm/boards/phytec-som-rk3288/lowlevel.c | 11 +++++------
 arch/arm/dts/rk3288-phycore-som.dts          |  2 +-
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/arch/arm/boards/phytec-som-rk3288/lowlevel.c b/arch/arm/boards/phytec-som-rk3288/lowlevel.c
index 7804a55..7649ef8 100644
--- a/arch/arm/boards/phytec-som-rk3288/lowlevel.c
+++ b/arch/arm/boards/phytec-som-rk3288/lowlevel.c
@@ -30,14 +30,13 @@ ENTRY_FUNCTION(start_rk3288_phycore_som, r0, r1, r2)
 
 	if (IS_ENABLED(CONFIG_DEBUG_LL)) {
 		struct rk3288_grf * const grf = (void *)RK3288_GRF_BASE;
-		rk_clrsetreg(&grf->gpio4c_iomux,
-			GPIO4C1_MASK << GPIO4C1_SHIFT |
-			GPIO4C0_MASK << GPIO4C0_SHIFT,
-			GPIO4C1_UART0BT_SOUT << GPIO4C1_SHIFT |
-			GPIO4C0_UART0BT_SIN << GPIO4C0_SHIFT);
+		rk_clrsetreg(&grf->gpio7ch_iomux,
+			     GPIO7C7_MASK << GPIO7C7_SHIFT |
+			     GPIO7C6_MASK << GPIO7C6_SHIFT,
+			     GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
+			     GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
 		INIT_LL();
 	}
-
 	fdt = __dtb_rk3288_phycore_som_start - get_runtime_offset();
 
 	barebox_arm_entry(0x0, SZ_1G, fdt);
diff --git a/arch/arm/dts/rk3288-phycore-som.dts b/arch/arm/dts/rk3288-phycore-som.dts
index 5410bd1..dd74bcf 100644
--- a/arch/arm/dts/rk3288-phycore-som.dts
+++ b/arch/arm/dts/rk3288-phycore-som.dts
@@ -44,7 +44,7 @@
 	};
 
 	chosen {
-		stdout-path = &uart0;
+		stdout-path = &uart2;
 
 		environment-emmc {
 			compatible = "barebox,environment";
-- 
1.9.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [RFC] serial: ns16550: Set read/write functions depending on reg-io-width
  2017-02-09  9:36 [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Wadim Egorov
@ 2017-02-09  9:36 ` Wadim Egorov
  2017-02-20 13:12   ` Wadim Egorov
  2017-02-09  9:36 ` [PATCH 2/2] config: Set UART port 2 as debug port Wadim Egorov
  2017-02-10  7:19 ` [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Sascha Hauer
  2 siblings, 1 reply; 6+ messages in thread
From: Wadim Egorov @ 2017-02-09  9:36 UTC (permalink / raw)
  To: barebox

Set proper register read/write functions depending on reg-io-width
device tree property.

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
---

of_platform_device_create() creates resources in the device_d struct.
ns16550_init_iomem() and ns16550_init_ioport() are reading the resources
and it's flags (register width).
So both functions are not failing, because there is a valid resource.
The res->flags might be not set at all. And if it is not set, the driver
will use always IORESOURCE_MEM_8BIT.

With this patch the probe_dt() func will override the read/write funcs,
if there is a valid reg-io-width property.
---
 drivers/serial/serial_ns16550.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index c6548e3..752e77b 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -287,12 +287,31 @@ static int ns16550_tstc(struct console_device *cdev)
 static void ns16550_probe_dt(struct device_d *dev, struct ns16550_priv *priv)
 {
 	struct device_node *np = dev->device_node;
+	u32 width;
 
 	if (!IS_ENABLED(CONFIG_OFDEVICE))
 		return;
 
 	of_property_read_u32(np, "clock-frequency", &priv->plat.clock);
 	of_property_read_u32(np, "reg-shift", &priv->plat.shift);
+	if (!of_property_read_u32(np, "reg-io-width", &width))
+		switch (width) {
+		case 1:
+			priv->read_reg = ns16550_read_reg_mmio_8;
+			priv->write_reg = ns16550_write_reg_mmio_8;
+			break;
+		case 2:
+			priv->read_reg = ns16550_read_reg_mmio_16;
+			priv->write_reg = ns16550_write_reg_mmio_16;
+			break;
+		case 4:
+			priv->read_reg = ns16550_read_reg_mmio_32;
+			priv->write_reg = ns16550_write_reg_mmio_32;
+			break;
+		default:
+			dev_err(dev, "unsupported reg-io-width (%d)\n",
+				width);
+		}
 }
 
 static struct ns16550_drvdata ns16450_drvdata = {
-- 
1.9.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 2/2] config: Set UART port 2 as debug port
  2017-02-09  9:36 [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Wadim Egorov
  2017-02-09  9:36 ` [RFC] serial: ns16550: Set read/write functions depending on reg-io-width Wadim Egorov
@ 2017-02-09  9:36 ` Wadim Egorov
  2017-02-10  7:19 ` [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Sascha Hauer
  2 siblings, 0 replies; 6+ messages in thread
From: Wadim Egorov @ 2017-02-09  9:36 UTC (permalink / raw)
  To: barebox

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
---
 arch/arm/configs/rk3288_defconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/configs/rk3288_defconfig b/arch/arm/configs/rk3288_defconfig
index f54f4cc..15e6c15 100644
--- a/arch/arm/configs/rk3288_defconfig
+++ b/arch/arm/configs/rk3288_defconfig
@@ -26,7 +26,7 @@ CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
 CONFIG_RESET_SOURCE=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_ROCKCHIP_UART_PORT=0
+CONFIG_DEBUG_ROCKCHIP_UART_PORT=2
 CONFIG_CMD_DMESG=y
 CONFIG_LONGHELP=y
 CONFIG_CMD_IOMEM=y
-- 
1.9.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output
  2017-02-09  9:36 [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Wadim Egorov
  2017-02-09  9:36 ` [RFC] serial: ns16550: Set read/write functions depending on reg-io-width Wadim Egorov
  2017-02-09  9:36 ` [PATCH 2/2] config: Set UART port 2 as debug port Wadim Egorov
@ 2017-02-10  7:19 ` Sascha Hauer
  2 siblings, 0 replies; 6+ messages in thread
From: Sascha Hauer @ 2017-02-10  7:19 UTC (permalink / raw)
  To: Wadim Egorov; +Cc: barebox

On Thu, Feb 09, 2017 at 10:36:41AM +0100, Wadim Egorov wrote:
> RK3288's UART2 is the default debug uart interface.
> 
> Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
> ---

Applied, thanks

Sascha

>  arch/arm/boards/phytec-som-rk3288/lowlevel.c | 11 +++++------
>  arch/arm/dts/rk3288-phycore-som.dts          |  2 +-
>  2 files changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/boards/phytec-som-rk3288/lowlevel.c b/arch/arm/boards/phytec-som-rk3288/lowlevel.c
> index 7804a55..7649ef8 100644
> --- a/arch/arm/boards/phytec-som-rk3288/lowlevel.c
> +++ b/arch/arm/boards/phytec-som-rk3288/lowlevel.c
> @@ -30,14 +30,13 @@ ENTRY_FUNCTION(start_rk3288_phycore_som, r0, r1, r2)
>  
>  	if (IS_ENABLED(CONFIG_DEBUG_LL)) {
>  		struct rk3288_grf * const grf = (void *)RK3288_GRF_BASE;
> -		rk_clrsetreg(&grf->gpio4c_iomux,
> -			GPIO4C1_MASK << GPIO4C1_SHIFT |
> -			GPIO4C0_MASK << GPIO4C0_SHIFT,
> -			GPIO4C1_UART0BT_SOUT << GPIO4C1_SHIFT |
> -			GPIO4C0_UART0BT_SIN << GPIO4C0_SHIFT);
> +		rk_clrsetreg(&grf->gpio7ch_iomux,
> +			     GPIO7C7_MASK << GPIO7C7_SHIFT |
> +			     GPIO7C6_MASK << GPIO7C6_SHIFT,
> +			     GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
> +			     GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
>  		INIT_LL();
>  	}
> -
>  	fdt = __dtb_rk3288_phycore_som_start - get_runtime_offset();
>  
>  	barebox_arm_entry(0x0, SZ_1G, fdt);
> diff --git a/arch/arm/dts/rk3288-phycore-som.dts b/arch/arm/dts/rk3288-phycore-som.dts
> index 5410bd1..dd74bcf 100644
> --- a/arch/arm/dts/rk3288-phycore-som.dts
> +++ b/arch/arm/dts/rk3288-phycore-som.dts
> @@ -44,7 +44,7 @@
>  	};
>  
>  	chosen {
> -		stdout-path = &uart0;
> +		stdout-path = &uart2;
>  
>  		environment-emmc {
>  			compatible = "barebox,environment";
> -- 
> 1.9.1
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [RFC] serial: ns16550: Set read/write functions depending on reg-io-width
  2017-02-09  9:36 ` [RFC] serial: ns16550: Set read/write functions depending on reg-io-width Wadim Egorov
@ 2017-02-20 13:12   ` Wadim Egorov
  2017-02-28  7:53     ` Sascha Hauer
  0 siblings, 1 reply; 6+ messages in thread
From: Wadim Egorov @ 2017-02-20 13:12 UTC (permalink / raw)
  To: barebox

Is this patch okay?


Am 09.02.2017 um 10:36 schrieb Wadim Egorov:
> Set proper register read/write functions depending on reg-io-width
> device tree property.
>
> Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
> ---
>
> of_platform_device_create() creates resources in the device_d struct.
> ns16550_init_iomem() and ns16550_init_ioport() are reading the resources
> and it's flags (register width).
> So both functions are not failing, because there is a valid resource.
> The res->flags might be not set at all. And if it is not set, the driver
> will use always IORESOURCE_MEM_8BIT.
>
> With this patch the probe_dt() func will override the read/write funcs,
> if there is a valid reg-io-width property.
> ---
>  drivers/serial/serial_ns16550.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
>
> diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
> index c6548e3..752e77b 100644
> --- a/drivers/serial/serial_ns16550.c
> +++ b/drivers/serial/serial_ns16550.c
> @@ -287,12 +287,31 @@ static int ns16550_tstc(struct console_device *cdev)
>  static void ns16550_probe_dt(struct device_d *dev, struct ns16550_priv *priv)
>  {
>  	struct device_node *np = dev->device_node;
> +	u32 width;
>  
>  	if (!IS_ENABLED(CONFIG_OFDEVICE))
>  		return;
>  
>  	of_property_read_u32(np, "clock-frequency", &priv->plat.clock);
>  	of_property_read_u32(np, "reg-shift", &priv->plat.shift);
> +	if (!of_property_read_u32(np, "reg-io-width", &width))
> +		switch (width) {
> +		case 1:
> +			priv->read_reg = ns16550_read_reg_mmio_8;
> +			priv->write_reg = ns16550_write_reg_mmio_8;
> +			break;
> +		case 2:
> +			priv->read_reg = ns16550_read_reg_mmio_16;
> +			priv->write_reg = ns16550_write_reg_mmio_16;
> +			break;
> +		case 4:
> +			priv->read_reg = ns16550_read_reg_mmio_32;
> +			priv->write_reg = ns16550_write_reg_mmio_32;
> +			break;
> +		default:
> +			dev_err(dev, "unsupported reg-io-width (%d)\n",
> +				width);
> +		}
>  }
>  
>  static struct ns16550_drvdata ns16450_drvdata = {


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [RFC] serial: ns16550: Set read/write functions depending on reg-io-width
  2017-02-20 13:12   ` Wadim Egorov
@ 2017-02-28  7:53     ` Sascha Hauer
  0 siblings, 0 replies; 6+ messages in thread
From: Sascha Hauer @ 2017-02-28  7:53 UTC (permalink / raw)
  To: Wadim Egorov; +Cc: barebox

On Mon, Feb 20, 2017 at 02:12:21PM +0100, Wadim Egorov wrote:
> Is this patch okay?

I hope so, it's already applied ;)

Sascha

> 
> 
> Am 09.02.2017 um 10:36 schrieb Wadim Egorov:
> > Set proper register read/write functions depending on reg-io-width
> > device tree property.
> >
> > Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
> > ---
> >
> > of_platform_device_create() creates resources in the device_d struct.
> > ns16550_init_iomem() and ns16550_init_ioport() are reading the resources
> > and it's flags (register width).
> > So both functions are not failing, because there is a valid resource.
> > The res->flags might be not set at all. And if it is not set, the driver
> > will use always IORESOURCE_MEM_8BIT.
> >
> > With this patch the probe_dt() func will override the read/write funcs,
> > if there is a valid reg-io-width property.
> > ---
> >  drivers/serial/serial_ns16550.c | 19 +++++++++++++++++++
> >  1 file changed, 19 insertions(+)
> >
> > diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
> > index c6548e3..752e77b 100644
> > --- a/drivers/serial/serial_ns16550.c
> > +++ b/drivers/serial/serial_ns16550.c
> > @@ -287,12 +287,31 @@ static int ns16550_tstc(struct console_device *cdev)
> >  static void ns16550_probe_dt(struct device_d *dev, struct ns16550_priv *priv)
> >  {
> >  	struct device_node *np = dev->device_node;
> > +	u32 width;
> >  
> >  	if (!IS_ENABLED(CONFIG_OFDEVICE))
> >  		return;
> >  
> >  	of_property_read_u32(np, "clock-frequency", &priv->plat.clock);
> >  	of_property_read_u32(np, "reg-shift", &priv->plat.shift);
> > +	if (!of_property_read_u32(np, "reg-io-width", &width))
> > +		switch (width) {
> > +		case 1:
> > +			priv->read_reg = ns16550_read_reg_mmio_8;
> > +			priv->write_reg = ns16550_write_reg_mmio_8;
> > +			break;
> > +		case 2:
> > +			priv->read_reg = ns16550_read_reg_mmio_16;
> > +			priv->write_reg = ns16550_write_reg_mmio_16;
> > +			break;
> > +		case 4:
> > +			priv->read_reg = ns16550_read_reg_mmio_32;
> > +			priv->write_reg = ns16550_write_reg_mmio_32;
> > +			break;
> > +		default:
> > +			dev_err(dev, "unsupported reg-io-width (%d)\n",
> > +				width);
> > +		}
> >  }
> >  
> >  static struct ns16550_drvdata ns16450_drvdata = {
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

end of thread, other threads:[~2017-02-28  7:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-09  9:36 [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Wadim Egorov
2017-02-09  9:36 ` [RFC] serial: ns16550: Set read/write functions depending on reg-io-width Wadim Egorov
2017-02-20 13:12   ` Wadim Egorov
2017-02-28  7:53     ` Sascha Hauer
2017-02-09  9:36 ` [PATCH 2/2] config: Set UART port 2 as debug port Wadim Egorov
2017-02-10  7:19 ` [PATCH 1/2] ARM: phycore-rk3288: Use UART2 as debug output Sascha Hauer

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