1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
22d1951feSAndy Yan /*
32d1951feSAndy Yan * (C)Copyright 2016 Rockchip Electronics Co., Ltd
42d1951feSAndy Yan * Authors: Andy Yan <andy.yan@rock-chips.com>
52d1951feSAndy Yan */
62d1951feSAndy Yan
72d1951feSAndy Yan #include <common.h>
82d1951feSAndy Yan #include <asm/io.h>
92d1951feSAndy Yan #include <fdtdec.h>
102d1951feSAndy Yan #include <asm/arch/grf_rv1108.h>
112d1951feSAndy Yan #include <asm/arch/hardware.h>
122d1951feSAndy Yan
132d1951feSAndy Yan DECLARE_GLOBAL_DATA_PTR;
142d1951feSAndy Yan
mach_cpu_init(void)152d1951feSAndy Yan int mach_cpu_init(void)
162d1951feSAndy Yan {
172d1951feSAndy Yan int node;
182d1951feSAndy Yan struct rv1108_grf *grf;
1977c42611SDavid Wu enum {
2077c42611SDavid Wu GPIO3C3_SHIFT = 6,
2177c42611SDavid Wu GPIO3C3_MASK = 3 << GPIO3C3_SHIFT,
2277c42611SDavid Wu
2377c42611SDavid Wu GPIO3C2_SHIFT = 4,
2477c42611SDavid Wu GPIO3C2_MASK = 3 << GPIO3C2_SHIFT,
2577c42611SDavid Wu
2677c42611SDavid Wu GPIO2D2_SHIFT = 4,
2777c42611SDavid Wu GPIO2D2_MASK = 3 << GPIO2D2_SHIFT,
2877c42611SDavid Wu GPIO2D2_GPIO = 0,
2977c42611SDavid Wu GPIO2D2_UART2_SOUT_M0,
3077c42611SDavid Wu
3177c42611SDavid Wu GPIO2D1_SHIFT = 2,
3277c42611SDavid Wu GPIO2D1_MASK = 3 << GPIO2D1_SHIFT,
3377c42611SDavid Wu GPIO2D1_GPIO = 0,
3477c42611SDavid Wu GPIO2D1_UART2_SIN_M0,
3577c42611SDavid Wu };
362d1951feSAndy Yan
372d1951feSAndy Yan node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "rockchip,rv1108-grf");
382d1951feSAndy Yan grf = (struct rv1108_grf *)fdtdec_get_addr(gd->fdt_blob, node, "reg");
392d1951feSAndy Yan
402d1951feSAndy Yan /*evb board use UART2 m0 for debug*/
412d1951feSAndy Yan rk_clrsetreg(&grf->gpio2d_iomux,
422d1951feSAndy Yan GPIO2D2_MASK | GPIO2D1_MASK,
432d1951feSAndy Yan GPIO2D2_UART2_SOUT_M0 << GPIO2D2_SHIFT |
442d1951feSAndy Yan GPIO2D1_UART2_SIN_M0 << GPIO2D1_SHIFT);
452d1951feSAndy Yan rk_clrreg(&grf->gpio3c_iomux, GPIO3C3_MASK | GPIO3C2_MASK);
462d1951feSAndy Yan
472d1951feSAndy Yan return 0;
482d1951feSAndy Yan }
492d1951feSAndy Yan
502d1951feSAndy Yan
board_init(void)512d1951feSAndy Yan int board_init(void)
522d1951feSAndy Yan {
532d1951feSAndy Yan return 0;
542d1951feSAndy Yan }
552d1951feSAndy Yan
dram_init(void)562d1951feSAndy Yan int dram_init(void)
572d1951feSAndy Yan {
582d1951feSAndy Yan gd->ram_size = 0x8000000;
592d1951feSAndy Yan
602d1951feSAndy Yan return 0;
612d1951feSAndy Yan }
622d1951feSAndy Yan
dram_init_banksize(void)632d1951feSAndy Yan int dram_init_banksize(void)
642d1951feSAndy Yan {
652d1951feSAndy Yan gd->bd->bi_dram[0].start = 0x60000000;
662d1951feSAndy Yan gd->bd->bi_dram[0].size = 0x8000000;
672d1951feSAndy Yan
682d1951feSAndy Yan return 0;
692d1951feSAndy Yan }
70