* [PATCH] ARM: imx6q: let users input debug uart port number
@ 2012-10-08 6:06 Shawn Guo
2012-10-19 8:01 ` Dirk Behme
0 siblings, 1 reply; 2+ messages in thread
From: Shawn Guo @ 2012-10-08 6:06 UTC (permalink / raw)
To: linux-arm-kernel
imx6q gets 5 uart ports in total. Different board design may choose
different port as debug uart. For example, imx6q-sabresd uses UART1,
imx6q-sabrelite uses UART2 and imx6q-arm2 uses UART4. Rather than
bloating DEBUG_LL choice list with all these uart ports, the patch
introduces DEBUG_IMX6Q_UART_PORT for users to input uart port number
when DEBUG_IMX6Q_UART is selected inside DEBUG_LL choice.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
arch/arm/Kconfig.debug | 26 +++++++++++++-------------
arch/arm/include/debug/imx.S | 20 ++++++++++++++++----
arch/arm/mach-imx/lluart.c | 28 ++++++++++++++++++----------
arch/arm/mach-imx/mx6q.h | 4 ----
4 files changed, 47 insertions(+), 31 deletions(-)
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 5566520..5dc7109 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -209,20 +209,12 @@ choice
Say Y here if you want kernel low-level debugging support
on i.MX50 or i.MX53.
- config DEBUG_IMX6Q_UART2
- bool "i.MX6Q Debug UART2"
+ config DEBUG_IMX6Q_UART
+ bool "i.MX6Q Debug UART"
depends on SOC_IMX6Q
help
Say Y here if you want kernel low-level debugging support
- on i.MX6Q UART2. This is correct for e.g. the SabreLite
- board.
-
- config DEBUG_IMX6Q_UART4
- bool "i.MX6Q Debug UART4"
- depends on SOC_IMX6Q
- help
- Say Y here if you want kernel low-level debugging support
- on i.MX6Q UART4.
+ on i.MX6Q.
config DEBUG_MMP_UART2
bool "Kernel low-level debugging message via MMP UART2"
@@ -409,6 +401,15 @@ choice
endchoice
+config DEBUG_IMX6Q_UART_PORT
+ int "i.MX6Q Debug UART Port (1-5)" if DEBUG_IMX6Q_UART
+ range 1 5
+ default 1
+ depends on SOC_IMX6Q
+ help
+ Choose UART port on which kernel low-level debug messages
+ should be output.
+
config DEBUG_LL_INCLUDE
string
default "debug/icedcc.S" if DEBUG_ICEDCC
@@ -418,8 +419,7 @@ config DEBUG_LL_INCLUDE
DEBUG_IMX31_IMX35_UART || \
DEBUG_IMX51_UART || \
DEBUG_IMX50_IMX53_UART ||\
- DEBUG_IMX6Q_UART2 || \
- DEBUG_IMX6Q_UART4
+ DEBUG_IMX6Q_UART
default "debug/highbank.S" if DEBUG_HIGHBANK_UART
default "debug/mvebu.S" if DEBUG_MVEBU_UART
default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART
diff --git a/arch/arm/include/debug/imx.S b/arch/arm/include/debug/imx.S
index 0b65d79..0c4e17d 100644
--- a/arch/arm/include/debug/imx.S
+++ b/arch/arm/include/debug/imx.S
@@ -10,6 +10,20 @@
* published by the Free Software Foundation.
*
*/
+#define IMX6Q_UART1_BASE_ADDR 0x02020000
+#define IMX6Q_UART2_BASE_ADDR 0x021e8000
+#define IMX6Q_UART3_BASE_ADDR 0x021ec000
+#define IMX6Q_UART4_BASE_ADDR 0x021f0000
+#define IMX6Q_UART5_BASE_ADDR 0x021f4000
+
+/*
+ * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion
+ * of IMX6Q_UART##n##_BASE_ADDR.
+ */
+#define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR
+#define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n)
+#define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT)
+
#ifdef CONFIG_DEBUG_IMX1_UART
#define UART_PADDR 0x00206000
#elif defined (CONFIG_DEBUG_IMX25_UART)
@@ -22,10 +36,8 @@
#define UART_PADDR 0x73fbc000
#elif defined (CONFIG_DEBUG_IMX50_IMX53_UART)
#define UART_PADDR 0x53fbc000
-#elif defined (CONFIG_DEBUG_IMX6Q_UART2)
-#define UART_PADDR 0x021e8000
-#elif defined (CONFIG_DEBUG_IMX6Q_UART4)
-#define UART_PADDR 0x021f0000
+#elif defined (CONFIG_DEBUG_IMX6Q_UART)
+#define UART_PADDR IMX6Q_DEBUG_UART_BASE
#endif
/*
diff --git a/arch/arm/mach-imx/lluart.c b/arch/arm/mach-imx/lluart.c
index 5f15103..2fdc9bf 100644
--- a/arch/arm/mach-imx/lluart.c
+++ b/arch/arm/mach-imx/lluart.c
@@ -17,17 +17,25 @@
#include "hardware.h"
+#define IMX6Q_UART1_BASE_ADDR 0x02020000
+#define IMX6Q_UART2_BASE_ADDR 0x021e8000
+#define IMX6Q_UART3_BASE_ADDR 0x021ec000
+#define IMX6Q_UART4_BASE_ADDR 0x021f0000
+#define IMX6Q_UART5_BASE_ADDR 0x021f4000
+
+/*
+ * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion
+ * of IMX6Q_UART##n##_BASE_ADDR.
+ */
+#define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR
+#define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n)
+#define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT)
+
static struct map_desc imx_lluart_desc = {
-#ifdef CONFIG_DEBUG_IMX6Q_UART2
- .virtual = MX6Q_IO_P2V(MX6Q_UART2_BASE_ADDR),
- .pfn = __phys_to_pfn(MX6Q_UART2_BASE_ADDR),
- .length = MX6Q_UART2_SIZE,
- .type = MT_DEVICE,
-#endif
-#ifdef CONFIG_DEBUG_IMX6Q_UART4
- .virtual = MX6Q_IO_P2V(MX6Q_UART4_BASE_ADDR),
- .pfn = __phys_to_pfn(MX6Q_UART4_BASE_ADDR),
- .length = MX6Q_UART4_SIZE,
+#ifdef CONFIG_DEBUG_IMX6Q_UART
+ .virtual = IMX_IO_P2V(IMX6Q_DEBUG_UART_BASE),
+ .pfn = __phys_to_pfn(IMX6Q_DEBUG_UART_BASE),
+ .length = 0x4000,
.type = MT_DEVICE,
#endif
};
diff --git a/arch/arm/mach-imx/mx6q.h b/arch/arm/mach-imx/mx6q.h
index f7e7dba..19d3f54 100644
--- a/arch/arm/mach-imx/mx6q.h
+++ b/arch/arm/mach-imx/mx6q.h
@@ -27,9 +27,5 @@
#define MX6Q_CCM_SIZE 0x4000
#define MX6Q_ANATOP_BASE_ADDR 0x020c8000
#define MX6Q_ANATOP_SIZE 0x1000
-#define MX6Q_UART2_BASE_ADDR 0x021e8000
-#define MX6Q_UART2_SIZE 0x4000
-#define MX6Q_UART4_BASE_ADDR 0x021f0000
-#define MX6Q_UART4_SIZE 0x4000
#endif /* __MACH_MX6Q_H__ */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH] ARM: imx6q: let users input debug uart port number
2012-10-08 6:06 [PATCH] ARM: imx6q: let users input debug uart port number Shawn Guo
@ 2012-10-19 8:01 ` Dirk Behme
0 siblings, 0 replies; 2+ messages in thread
From: Dirk Behme @ 2012-10-19 8:01 UTC (permalink / raw)
To: linux-arm-kernel
On 08.10.2012 08:06, Shawn Guo wrote:
> imx6q gets 5 uart ports in total. Different board design may choose
> different port as debug uart. For example, imx6q-sabresd uses UART1,
> imx6q-sabrelite uses UART2 and imx6q-arm2 uses UART4. Rather than
> bloating DEBUG_LL choice list with all these uart ports, the patch
> introduces DEBUG_IMX6Q_UART_PORT for users to input uart port number
> when DEBUG_IMX6Q_UART is selected inside DEBUG_LL choice.
>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Sounds like a good idea :)
Thanks
Dirk
> ---
> arch/arm/Kconfig.debug | 26 +++++++++++++-------------
> arch/arm/include/debug/imx.S | 20 ++++++++++++++++----
> arch/arm/mach-imx/lluart.c | 28 ++++++++++++++++++----------
> arch/arm/mach-imx/mx6q.h | 4 ----
> 4 files changed, 47 insertions(+), 31 deletions(-)
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index 5566520..5dc7109 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -209,20 +209,12 @@ choice
> Say Y here if you want kernel low-level debugging support
> on i.MX50 or i.MX53.
>
> - config DEBUG_IMX6Q_UART2
> - bool "i.MX6Q Debug UART2"
> + config DEBUG_IMX6Q_UART
> + bool "i.MX6Q Debug UART"
> depends on SOC_IMX6Q
> help
> Say Y here if you want kernel low-level debugging support
> - on i.MX6Q UART2. This is correct for e.g. the SabreLite
> - board.
> -
> - config DEBUG_IMX6Q_UART4
> - bool "i.MX6Q Debug UART4"
> - depends on SOC_IMX6Q
> - help
> - Say Y here if you want kernel low-level debugging support
> - on i.MX6Q UART4.
> + on i.MX6Q.
>
> config DEBUG_MMP_UART2
> bool "Kernel low-level debugging message via MMP UART2"
> @@ -409,6 +401,15 @@ choice
>
> endchoice
>
> +config DEBUG_IMX6Q_UART_PORT
> + int "i.MX6Q Debug UART Port (1-5)" if DEBUG_IMX6Q_UART
> + range 1 5
> + default 1
> + depends on SOC_IMX6Q
> + help
> + Choose UART port on which kernel low-level debug messages
> + should be output.
> +
> config DEBUG_LL_INCLUDE
> string
> default "debug/icedcc.S" if DEBUG_ICEDCC
> @@ -418,8 +419,7 @@ config DEBUG_LL_INCLUDE
> DEBUG_IMX31_IMX35_UART || \
> DEBUG_IMX51_UART || \
> DEBUG_IMX50_IMX53_UART ||\
> - DEBUG_IMX6Q_UART2 || \
> - DEBUG_IMX6Q_UART4
> + DEBUG_IMX6Q_UART
> default "debug/highbank.S" if DEBUG_HIGHBANK_UART
> default "debug/mvebu.S" if DEBUG_MVEBU_UART
> default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART
> diff --git a/arch/arm/include/debug/imx.S b/arch/arm/include/debug/imx.S
> index 0b65d79..0c4e17d 100644
> --- a/arch/arm/include/debug/imx.S
> +++ b/arch/arm/include/debug/imx.S
> @@ -10,6 +10,20 @@
> * published by the Free Software Foundation.
> *
> */
> +#define IMX6Q_UART1_BASE_ADDR 0x02020000
> +#define IMX6Q_UART2_BASE_ADDR 0x021e8000
> +#define IMX6Q_UART3_BASE_ADDR 0x021ec000
> +#define IMX6Q_UART4_BASE_ADDR 0x021f0000
> +#define IMX6Q_UART5_BASE_ADDR 0x021f4000
> +
> +/*
> + * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion
> + * of IMX6Q_UART##n##_BASE_ADDR.
> + */
> +#define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR
> +#define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n)
> +#define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT)
> +
> #ifdef CONFIG_DEBUG_IMX1_UART
> #define UART_PADDR 0x00206000
> #elif defined (CONFIG_DEBUG_IMX25_UART)
> @@ -22,10 +36,8 @@
> #define UART_PADDR 0x73fbc000
> #elif defined (CONFIG_DEBUG_IMX50_IMX53_UART)
> #define UART_PADDR 0x53fbc000
> -#elif defined (CONFIG_DEBUG_IMX6Q_UART2)
> -#define UART_PADDR 0x021e8000
> -#elif defined (CONFIG_DEBUG_IMX6Q_UART4)
> -#define UART_PADDR 0x021f0000
> +#elif defined (CONFIG_DEBUG_IMX6Q_UART)
> +#define UART_PADDR IMX6Q_DEBUG_UART_BASE
> #endif
>
> /*
> diff --git a/arch/arm/mach-imx/lluart.c b/arch/arm/mach-imx/lluart.c
> index 5f15103..2fdc9bf 100644
> --- a/arch/arm/mach-imx/lluart.c
> +++ b/arch/arm/mach-imx/lluart.c
> @@ -17,17 +17,25 @@
>
> #include "hardware.h"
>
> +#define IMX6Q_UART1_BASE_ADDR 0x02020000
> +#define IMX6Q_UART2_BASE_ADDR 0x021e8000
> +#define IMX6Q_UART3_BASE_ADDR 0x021ec000
> +#define IMX6Q_UART4_BASE_ADDR 0x021f0000
> +#define IMX6Q_UART5_BASE_ADDR 0x021f4000
> +
> +/*
> + * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion
> + * of IMX6Q_UART##n##_BASE_ADDR.
> + */
> +#define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR
> +#define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n)
> +#define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT)
> +
> static struct map_desc imx_lluart_desc = {
> -#ifdef CONFIG_DEBUG_IMX6Q_UART2
> - .virtual = MX6Q_IO_P2V(MX6Q_UART2_BASE_ADDR),
> - .pfn = __phys_to_pfn(MX6Q_UART2_BASE_ADDR),
> - .length = MX6Q_UART2_SIZE,
> - .type = MT_DEVICE,
> -#endif
> -#ifdef CONFIG_DEBUG_IMX6Q_UART4
> - .virtual = MX6Q_IO_P2V(MX6Q_UART4_BASE_ADDR),
> - .pfn = __phys_to_pfn(MX6Q_UART4_BASE_ADDR),
> - .length = MX6Q_UART4_SIZE,
> +#ifdef CONFIG_DEBUG_IMX6Q_UART
> + .virtual = IMX_IO_P2V(IMX6Q_DEBUG_UART_BASE),
> + .pfn = __phys_to_pfn(IMX6Q_DEBUG_UART_BASE),
> + .length = 0x4000,
> .type = MT_DEVICE,
> #endif
> };
> diff --git a/arch/arm/mach-imx/mx6q.h b/arch/arm/mach-imx/mx6q.h
> index f7e7dba..19d3f54 100644
> --- a/arch/arm/mach-imx/mx6q.h
> +++ b/arch/arm/mach-imx/mx6q.h
> @@ -27,9 +27,5 @@
> #define MX6Q_CCM_SIZE 0x4000
> #define MX6Q_ANATOP_BASE_ADDR 0x020c8000
> #define MX6Q_ANATOP_SIZE 0x1000
> -#define MX6Q_UART2_BASE_ADDR 0x021e8000
> -#define MX6Q_UART2_SIZE 0x4000
> -#define MX6Q_UART4_BASE_ADDR 0x021f0000
> -#define MX6Q_UART4_SIZE 0x4000
>
> #endif /* __MACH_MX6Q_H__ */
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-10-19 8:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-08 6:06 [PATCH] ARM: imx6q: let users input debug uart port number Shawn Guo
2012-10-19 8:01 ` Dirk Behme
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).