[U-Boot] [PATCH 1/2] rockchip: add CONFIG_SPL_ROCKCHIP_SERIAL

we can use this config to disable rockchip serial driver in SPL stage, since some rockchip soc sram size is small(rk3036 etc), so we don't want rockchip serial driver build in SPL, but we still want use common debug driver in SPL.
Signed-off-by: Lin Huang hl@rock-chips.com --- arch/arm/mach-rockchip/Kconfig | 3 +++ drivers/serial/Makefile | 2 +- include/configs/rk3288_common.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index ccff81a..595263c 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -59,6 +59,9 @@ config DM_GPIO config ROCKCHIP_SERIAL default y
+config SPL_ROCKCHIP_SERIAL + default n + source "arch/arm/mach-rockchip/rk3288/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig" endif diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 1818c7c..73e30c6 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -41,7 +41,7 @@ obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o obj-$(CONFIG_MXS_AUART) += mxs_auart.o -obj-$(CONFIG_ROCKCHIP_SERIAL) += serial_rockchip.o +obj-$(CONFIG_$(SPL_)ROCKCHIP_SERIAL) += serial_rockchip.o obj-$(CONFIG_ARC_SERIAL) += serial_arc.o obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h index 74c7ee1..7f3d1ee 100644 --- a/include/configs/rk3288_common.h +++ b/include/configs/rk3288_common.h @@ -30,6 +30,7 @@ #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT #define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_ROCKCHIP_SERIAL #define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_MEM32 #define CONFIG_SPL_BOARD_INIT

enable this config so we use common uart function in SPL stage
Signed-off-by: Lin Huang hl@rock-chips.com --- arch/arm/mach-rockchip/rk3036-board-spl.c | 6 ++---- configs/evb-rk3036_defconfig | 5 +++++ include/configs/rk3036_common.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-rockchip/rk3036-board-spl.c b/arch/arm/mach-rockchip/rk3036-board-spl.c index 3a1491c..449d1df 100644 --- a/arch/arm/mach-rockchip/rk3036-board-spl.c +++ b/arch/arm/mach-rockchip/rk3036-board-spl.c @@ -5,20 +5,18 @@ */
#include <common.h> +#include <debug_uart.h> #include <asm/io.h> #include <asm/arch/grf_rk3036.h> #include <asm/arch/hardware.h> #include <asm/arch/sdram_rk3036.h> #include <asm/arch/timer.h> -#include <asm/arch/uart.h>
DECLARE_GLOBAL_DATA_PTR;
#define GRF_BASE 0x20008000 static struct rk3036_grf * const grf = (void *)GRF_BASE;
-#define DEBUG_UART_BASE 0x20068000 - extern void back_to_bootrom(void);
void board_init_f(ulong dummy) @@ -34,7 +32,7 @@ void board_init_f(ulong dummy) GPIO1C2_MASK << GPIO1C2_SHIFT, GPIO1C3_UART2_SOUT << GPIO1C3_SHIFT | GPIO1C2_UART2_SIN << GPIO1C2_SHIFT); - rk_uart_init((void *)DEBUG_UART_BASE); + debug_uart_init(); #endif rockchip_timer_init(); sdram_init(); diff --git a/configs/evb-rk3036_defconfig b/configs/evb-rk3036_defconfig index 2e915ff..b383905 100644 --- a/configs/evb-rk3036_defconfig +++ b/configs/evb-rk3036_defconfig @@ -24,3 +24,8 @@ CONFIG_DM_MMC=y CONFIG_USE_PRIVATE_LIBGCC=y CONFIG_CMD_DHRYSTONE=y CONFIG_ERRNO_STR=y +CONFIG_DEBUG_UART=y +CONFIG_DEBUG_UART_NS16550=y +CONFIG_DEBUG_UART_BASE=0x20068000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_DEBUG_UART_SHIFT=2 diff --git a/include/configs/rk3036_common.h b/include/configs/rk3036_common.h index f753e68..a6e0fed 100644 --- a/include/configs/rk3036_common.h +++ b/include/configs/rk3036_common.h @@ -24,6 +24,7 @@ #define CONFIG_SYS_TIMER_BASE 0x200440a0 /* TIMER5 */ #define CONFIG_SYS_TIMER_COUNTER (CONFIG_SYS_TIMER_BASE + 8)
+#define CONFIG_SPL_SERIAL_SUPPORT #define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_MEM32

On 19 November 2015 at 22:58, Lin Huang hl@rock-chips.com wrote:
enable this config so we use common uart function in SPL stage
Signed-off-by: Lin Huang hl@rock-chips.com
arch/arm/mach-rockchip/rk3036-board-spl.c | 6 ++---- configs/evb-rk3036_defconfig | 5 +++++ include/configs/rk3036_common.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-)
Acked-by: Simon Glass sjg@chromium.org

Hi Lin,
On 19 November 2015 at 22:58, Lin Huang hl@rock-chips.com wrote:
we can use this config to disable rockchip serial driver in SPL stage, since some rockchip soc sram size is small(rk3036 etc), so we don't want rockchip serial driver build in SPL, but we still want use common debug driver in SPL.
Signed-off-by: Lin Huang hl@rock-chips.com
arch/arm/mach-rockchip/Kconfig | 3 +++ drivers/serial/Makefile | 2 +- include/configs/rk3288_common.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index ccff81a..595263c 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -59,6 +59,9 @@ config DM_GPIO config ROCKCHIP_SERIAL default y
+config SPL_ROCKCHIP_SERIAL
default n
It will already default to 'n', so this can be omitted.
Also you should add this new CONFIG to drivers/serial/Kconfig, below the existing (non-SPL) one.
source "arch/arm/mach-rockchip/rk3288/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig" endif diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 1818c7c..73e30c6 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -41,7 +41,7 @@ obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o obj-$(CONFIG_MXS_AUART) += mxs_auart.o -obj-$(CONFIG_ROCKCHIP_SERIAL) += serial_rockchip.o +obj-$(CONFIG_$(SPL_)ROCKCHIP_SERIAL) += serial_rockchip.o obj-$(CONFIG_ARC_SERIAL) += serial_arc.o obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h index 74c7ee1..7f3d1ee 100644 --- a/include/configs/rk3288_common.h +++ b/include/configs/rk3288_common.h @@ -30,6 +30,7 @@ #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT #define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_ROCKCHIP_SERIAL
You should add this to the rk3288 defconfig files, instead of here. Kconfig items should not be added to config header files - in fact we plan to eventually remove the config header files.
#define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_MEM32
#define CONFIG_SPL_BOARD_INIT
1.9.1
Regards, Simon

Hi Lin,
On 26 November 2015 at 19:35, Simon Glass sjg@chromium.org wrote:
Hi Lin,
On 19 November 2015 at 22:58, Lin Huang hl@rock-chips.com wrote:
we can use this config to disable rockchip serial driver in SPL stage, since some rockchip soc sram size is small(rk3036 etc), so we don't want rockchip serial driver build in SPL, but we still want use common debug driver in SPL.
Signed-off-by: Lin Huang hl@rock-chips.com
arch/arm/mach-rockchip/Kconfig | 3 +++ drivers/serial/Makefile | 2 +- include/configs/rk3288_common.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index ccff81a..595263c 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -59,6 +59,9 @@ config DM_GPIO config ROCKCHIP_SERIAL default y
+config SPL_ROCKCHIP_SERIAL
default n
It will already default to 'n', so this can be omitted.
Also you should add this new CONFIG to drivers/serial/Kconfig, below the existing (non-SPL) one.
source "arch/arm/mach-rockchip/rk3288/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig" endif diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 1818c7c..73e30c6 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -41,7 +41,7 @@ obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o obj-$(CONFIG_MXS_AUART) += mxs_auart.o -obj-$(CONFIG_ROCKCHIP_SERIAL) += serial_rockchip.o +obj-$(CONFIG_$(SPL_)ROCKCHIP_SERIAL) += serial_rockchip.o obj-$(CONFIG_ARC_SERIAL) += serial_arc.o obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h index 74c7ee1..7f3d1ee 100644 --- a/include/configs/rk3288_common.h +++ b/include/configs/rk3288_common.h @@ -30,6 +30,7 @@ #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT #define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_ROCKCHIP_SERIAL
You should add this to the rk3288 defconfig files, instead of here. Kconfig items should not be added to config header files - in fact we plan to eventually remove the config header files.
#define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_MEM32
#define CONFIG_SPL_BOARD_INIT
1.9.1
Actually, serial_rockchip.c has been removed in mainline. So you may not need this patch, or maybe it can be reduced in size. Please check the current u-boot-rockchip/master.
Regards, Simon

Hi Simon,
On 27/11/15 11:37, Simon Glass wrote:
Hi Lin,
On 26 November 2015 at 19:35, Simon Glass sjg@chromium.org wrote:
Hi Lin,
On 19 November 2015 at 22:58, Lin Huang hl@rock-chips.com wrote:
we can use this config to disable rockchip serial driver in SPL stage, since some rockchip soc sram size is small(rk3036 etc), so we don't want rockchip serial driver build in SPL, but we still want use common debug driver in SPL.
Signed-off-by: Lin Huang hl@rock-chips.com
arch/arm/mach-rockchip/Kconfig | 3 +++ drivers/serial/Makefile | 2 +- include/configs/rk3288_common.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index ccff81a..595263c 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -59,6 +59,9 @@ config DM_GPIO config ROCKCHIP_SERIAL default y
+config SPL_ROCKCHIP_SERIAL
default n
It will already default to 'n', so this can be omitted.
Also you should add this new CONFIG to drivers/serial/Kconfig, below the existing (non-SPL) one.
source "arch/arm/mach-rockchip/rk3288/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig" endif diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 1818c7c..73e30c6 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -41,7 +41,7 @@ obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o obj-$(CONFIG_MXS_AUART) += mxs_auart.o -obj-$(CONFIG_ROCKCHIP_SERIAL) += serial_rockchip.o +obj-$(CONFIG_$(SPL_)ROCKCHIP_SERIAL) += serial_rockchip.o obj-$(CONFIG_ARC_SERIAL) += serial_arc.o obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h index 74c7ee1..7f3d1ee 100644 --- a/include/configs/rk3288_common.h +++ b/include/configs/rk3288_common.h @@ -30,6 +30,7 @@ #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT #define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_ROCKCHIP_SERIAL
You should add this to the rk3288 defconfig files, instead of here. Kconfig items should not be added to config header files - in fact we plan to eventually remove the config header files.
#define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_MEM32
#define CONFIG_SPL_BOARD_INIT
1.9.1
Actually, serial_rockchip.c has been removed in mainline. So you may not need this patch, or maybe it can be reduced in size. Please check the current u-boot-rockchip/master.
i cherry-pick the
[PATCH 2/2] rockchip: rk3036: enable CONFIG_DEBUG_UART, and use ns16550 uart driver
in u-boot-rockchip/master branch, build it, but fail, it is will call hang() in arch/arm/lib/div0, so i need to define CONFIG_SPL_LIBGENERIC_SUPPORT, but if i do it, the spl size too big.
Regards, Simon

Hi Lin,
On 30 November 2015 at 23:51, hl hl@rock-chips.com wrote:
Hi Simon,
On 27/11/15 11:37, Simon Glass wrote:
Hi Lin,
On 26 November 2015 at 19:35, Simon Glass sjg@chromium.org wrote:
Hi Lin,
On 19 November 2015 at 22:58, Lin Huang hl@rock-chips.com wrote:
we can use this config to disable rockchip serial driver in SPL stage, since some rockchip soc sram size is small(rk3036 etc), so we don't want rockchip serial driver build in SPL, but we still want use common debug driver in SPL.
Signed-off-by: Lin Huang hl@rock-chips.com
arch/arm/mach-rockchip/Kconfig | 3 +++ drivers/serial/Makefile | 2 +- include/configs/rk3288_common.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index ccff81a..595263c 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -59,6 +59,9 @@ config DM_GPIO config ROCKCHIP_SERIAL default y
+config SPL_ROCKCHIP_SERIAL
default n
It will already default to 'n', so this can be omitted.
Also you should add this new CONFIG to drivers/serial/Kconfig, below the existing (non-SPL) one.
source "arch/arm/mach-rockchip/rk3288/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig" endif diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 1818c7c..73e30c6 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile @@ -41,7 +41,7 @@ obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o obj-$(CONFIG_MXS_AUART) += mxs_auart.o -obj-$(CONFIG_ROCKCHIP_SERIAL) += serial_rockchip.o +obj-$(CONFIG_$(SPL_)ROCKCHIP_SERIAL) += serial_rockchip.o obj-$(CONFIG_ARC_SERIAL) += serial_arc.o obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h index 74c7ee1..7f3d1ee 100644 --- a/include/configs/rk3288_common.h +++ b/include/configs/rk3288_common.h @@ -30,6 +30,7 @@ #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT #define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_ROCKCHIP_SERIAL
You should add this to the rk3288 defconfig files, instead of here. Kconfig items should not be added to config header files - in fact we plan to eventually remove the config header files.
#define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_MEM32
#define CONFIG_SPL_BOARD_INIT
1.9.1
Actually, serial_rockchip.c has been removed in mainline. So you may not need this patch, or maybe it can be reduced in size. Please check the current u-boot-rockchip/master.
i cherry-pick the [PATCH 2/2] rockchip: rk3036: enable CONFIG_DEBUG_UART, and use ns16550
uart driver
in u-boot-rockchip/master branch, build it, but fail, it is will call
hang() in arch/arm/lib/div0,
That sounds like a symptom of a divide by 0 error?
so i need to define CONFIG_SPL_LIBGENERIC_SUPPORT, but if i do it, the
spl size too big.
I am hoping that we can enable the debug UART without bringing in full serial support. Do you think it is possible? We just want printch() etc., not printf().
Regards, Simon
participants (3)
-
hl
-
Lin Huang
-
Simon Glass