hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * GTBUS initialisation for sun9i
 *
 * (C) Copyright 2016 Theobroma Systems Design und Consulting GmbH
 *                    Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#include <common.h>
#include <asm/io.h>
#include <asm/arch/gtbus_sun9i.h>
#include <asm/arch/sys_proto.h>
 
#ifdef CONFIG_SPL_BUILD
 
void gtbus_init(void)
{
   struct sunxi_gtbus_reg * const gtbus =
       (struct sunxi_gtbus_reg *)SUNXI_GTBUS_BASE;
 
   /*
    * We use the same setting that Allwinner used in Boot0 for now.
    * It may be advantageous to adjust these for various workloads
    * (e.g. headless use cases that focus on IO throughput).
    */
   writel((GT_PRIO_HIGH << GT_PORT_FE0) |
          (GT_PRIO_HIGH << GT_PORT_BE1) |
          (GT_PRIO_HIGH << GT_PORT_BE2) |
          (GT_PRIO_HIGH << GT_PORT_IEP0) |
          (GT_PRIO_HIGH << GT_PORT_FE1) |
          (GT_PRIO_HIGH << GT_PORT_BE0) |
          (GT_PRIO_HIGH << GT_PORT_FE2) |
          (GT_PRIO_HIGH << GT_PORT_IEP1),
          &gtbus->mst_read_prio_cfg[0]);
 
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_FE0]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_FE0]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_BE1]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_BE2]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_IEP0]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_FE1]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_BE0]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_FE2]);
   writel(GP_MST_CFG_DEFAULT, &gtbus->mst_cfg[GT_PORT_IEP1]);
}
 
#endif