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