Commit de3ad4f0 authored by John Tsichritzis's avatar John Tsichritzis Committed by TrustedFirmware Code Review
Browse files

Merge changes If61ab215,I3e8b0251,I1757eee9,I81b48475,I46b445a7, ... into integration

* changes:
  rcar_gen3: drivers: qos: Move QoS drivers out of staging
  rcar_gen3: drivers: qos: V3M: Configure DBSC QoS from a table
  rcar_gen3: drivers: qos: E3: Configure DBSC QoS from a table
  rcar_gen3: drivers: qos: D3: Configure DBSC QoS from a table
  rcar_gen3: drivers: qos: M3N: Configure DBSC QoS from a table
  rcar_gen3: drivers: qos: M3W: Configure DBSC QoS from a table
  rcar_gen3: drivers: qos: H3: Configure DBSC QoS from a table
  rcar_gen3: drivers: qos: Add function to configure DBSC QoS settings from a table
  rcar_gen3: drivers: qos: Fix checkpatch issues
  rcar_gen3: drivers: qos: V3M: Drop useless comments
  rcar_gen3: drivers: qos: V3M: Convert mstat table to uint64_t
  rcar_gen3: drivers: qos: V3M: Factor out mstat fix into separate file
  rcar_gen3: drivers: qos: V3M: Use common register definition
  rcar_gen3: drivers: qos: E3: Drop extra level of nesting
  rcar_gen3: drivers: qos: E3: Use common register definition
  rcar_gen3: drivers: qos: D3: Replace ad-hoc register addresses with macros
  rcar_gen3: drivers: qos: D3: Drop MD pin check
  rcar_gen3: drivers: qos: D3: Make DBSC settings local to dbsc_setting()
  rcar_gen3: drivers: qos: D3: Drop useless comments
  rcar_gen3: drivers: qos: D3: Convert mstat table to uint64_t
  rcar_gen3: drivers: qos: D3: Factor out mstat fix into separate file
  rcar_gen3: drivers: qos: D3: Use common register definition
  rcar_gen3: drivers: qos: M3N: Fix checkpatch issues
  rcar_gen3: drivers: qos: M3N: Drop MD pin check
  rcar_gen3: drivers: qos: M3N: Drop useless comments
  rcar_gen3: drivers: qos: M3N: Drop extra level of nesting
  rcar_gen3: drivers: qos: M3N: Use common register definition
  rcar_gen3: drivers: qos: M3W: Fix checkpatch issues
  rcar_gen3: drivers: qos: M3W: Drop MD pin check
  rcar_gen3: drivers: qos: M3W: Drop useless comments
  rcar_gen3: drivers: qos: M3W: Drop extra level of nesting
  rcar_gen3: drivers: qos: M3W: Convert mstat table to uint64_t
  rcar_gen3: drivers: qos: M3W: Factor out mstat fix into separate file
  rcar_gen3: drivers: qos: M3W: Use common register definition
  rcar_gen3: drivers: qos: H3: Fix checkpatch issues
  rcar_gen3: drivers: qos: H3: Drop MD pin check
  rcar_gen3: drivers: qos: H3: Drop useless comments
  rcar_gen3: drivers: qos: H3: Drop extra level of nesting
  rcar_gen3: drivers: qos: H3: Convert mstat table to uint64_t
  rcar_gen3: drivers: qos: H3: Factor out mstat fix into separate file
  rcar_gen3: drivers: qos: H3: Use common register definition
  rcar_gen3: console: Convert to multi-console API
parents 97c9a42d c67703eb
/*
* Copyright (c) 2018, Renesas Electronics Corporation. All rights reserved.
* Copyright (c) 2018-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arch.h>
#include <asm_macros.S>
#include <console_macros.S>
#include <drivers/renesas/rcar/console/console.h>
.globl console_init
.globl console_putc
.globl console_uninit
.globl console_core_init
.globl console_core_putc
.globl console_core_getc
.globl console_flush
.globl console_rcar_register
.globl console_rcar_init
.globl console_rcar_putc
.globl console_rcar_flush
.extern rcar_log_init
.extern rcar_set_log_data
/* -----------------------------------------------
* int console_core_init(unsigned long base_addr,
* unsigned int uart_clk, unsigned int baud_rate)
* Function to initialize the log area. This
* function will be accessed by console_init and
* crash reporting.
* Return 1 on SUCCESS, 0 on error
* In: x0 - Not used
* w1 - Not used
* w2 - Not used
* int console_rcar_register(
* uintptr_t base, uint32_t clk, uint32_t baud,
* console_rcar_t *console)
* Function to initialize and register a new rcar
* console. Storage passed in for the console struct
* *must* be persistent (i.e. not from the stack).
* In: x0 - UART register base address
* w1 - UART clock in Hz
* w2 - Baud rate
* x3 - pointer to empty console_rcar_t struct
* Out: return 1 on success, 0 on error
* Clobber list : x0, x1, x2, x6, x7, x14
* -----------------------------------------------
*/
func console_core_init
b rcar_log_init
endfunc console_core_init
func console_init
b console_core_init
endfunc console_init
func console_rcar_register
mov x7, x30
mov x6, x3
cbz x6, register_fail
str x0, [x6, #CONSOLE_T_RCAR_BASE]
/* --------------------------------------------------------
* int console_core_putc(int c, unsigned long base_addr)
* Function to output a character over the log area.
* Return 1 on SUCCESS, 0 on error
* In : w0 - Not used
* x1 - Not used
* --------------------------------------------------------
*/
func console_core_putc
b rcar_set_log_data
endfunc console_core_putc
func console_putc
b console_core_putc
endfunc console_putc
bl rcar_log_init
cbz x0, register_fail
mov x0, x6
mov x30, x7
finish_console_register rcar, putc=1, getc=0, flush=1
register_fail:
ret x7
endfunc console_rcar_register
/* ---------------------------------------------
* int console_core_getc(unsigned long base_addr)
* Function to get a character from the console.
* It returns the character grabbed on success
* or -1 on error.
* In : x0 - console base address
* Clobber list : x0, x1
* int console_rcar_init(unsigned long base_addr,
* unsigned int uart_clk, unsigned int baud_rate)
* Function to initialize the console without a
* C Runtime to print debug information. This
* function will be accessed by crash reporting.
* In: x0 - console base address
* w1 - Uart clock in Hz
* w2 - Baud rate
* Out: return 1 on success
* Clobber list : x1, x2
* ---------------------------------------------
*/
func console_core_getc
func console_rcar_init
mov w0, #0
ret
endfunc console_core_getc
endfunc console_rcar_init
/* -----------------------------------------------
* void console_uninit(void)
* Function to finish the use of console driver.
* -----------------------------------------------
/* --------------------------------------------------------
* int console_rcar_putc(int c, console_rcar_t *console)
* Function to output a character over the console. It
* returns the character printed on success or -1 on error.
* In : w0 - character to be printed
* x1 - pointer to console_rcar_t structure
* Out : return -1 on error else return character.
* Clobber list : x2
* --------------------------------------------------------
*/
func console_uninit
ret
endfunc console_uninit
func console_rcar_putc
b rcar_set_log_data
endfunc console_rcar_putc
/* ---------------------------------------------
* int console_flush(void)
* int console_rcar_flush(void)
* Function to force a write of all buffered
* data that hasn't been output. It returns 0
* upon successful completion, otherwise it
......@@ -83,7 +90,7 @@ endfunc console_uninit
* Clobber list : x0, x1
* ---------------------------------------------
*/
func console_flush
func console_rcar_flush
mov w0, #0
ret
endfunc console_flush
endfunc console_rcar_flush
/*
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stdint.h>
#include <common/debug.h>
#include "../qos_common.h"
#include "../qos_reg.h"
#include "qos_init_d3.h"
#define RCAR_QOS_VERSION "rev.0.05"
#include "qos_init_d3_mstat.h"
struct rcar_gen3_dbsc_qos_settings d3_qos[] = {
/* BUFCAM settings */
{ DBSC_DBCAM0CNF1, 0x00043218 },
{ DBSC_DBCAM0CNF2, 0x000000F4 },
{ DBSC_DBSCHCNT0, 0x000F0037 },
{ DBSC_DBSCHSZ0, 0x00000001 },
{ DBSC_DBSCHRW0, 0x22421111 },
/* DDR3 */
{ DBSC_SCFCTST2, 0x012F1123 },
/* QoS Settings */
{ DBSC_DBSCHQOS00, 0x00000F00 },
{ DBSC_DBSCHQOS01, 0x00000B00 },
{ DBSC_DBSCHQOS02, 0x00000000 },
{ DBSC_DBSCHQOS03, 0x00000000 },
{ DBSC_DBSCHQOS40, 0x00000300 },
{ DBSC_DBSCHQOS41, 0x000002F0 },
{ DBSC_DBSCHQOS42, 0x00000200 },
{ DBSC_DBSCHQOS43, 0x00000100 },
{ DBSC_DBSCHQOS90, 0x00000300 },
{ DBSC_DBSCHQOS91, 0x000002F0 },
{ DBSC_DBSCHQOS92, 0x00000200 },
{ DBSC_DBSCHQOS93, 0x00000100 },
{ DBSC_DBSCHQOS130, 0x00000100 },
{ DBSC_DBSCHQOS131, 0x000000F0 },
{ DBSC_DBSCHQOS132, 0x000000A0 },
{ DBSC_DBSCHQOS133, 0x00000040 },
{ DBSC_DBSCHQOS140, 0x000000C0 },
{ DBSC_DBSCHQOS141, 0x000000B0 },
{ DBSC_DBSCHQOS142, 0x00000080 },
{ DBSC_DBSCHQOS143, 0x00000040 },
{ DBSC_DBSCHQOS150, 0x00000040 },
{ DBSC_DBSCHQOS151, 0x00000030 },
{ DBSC_DBSCHQOS152, 0x00000020 },
{ DBSC_DBSCHQOS153, 0x00000010 },
};
void qos_init_d3(void)
{
rcar_qos_dbsc_setting(d3_qos, ARRAY_SIZE(d3_qos), true);
/* DRAM Split Address mapping */
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH
ERROR("DRAM Split 4ch not supported.(D3)");
panic();
#elif RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_2CH
ERROR("DRAM Split 2ch not supported.(D3)");
panic();
#elif RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_AUTO
ERROR("DRAM Split Auto not supported.(D3)");
panic();
#elif RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_LINEAR
/* NOTICE("BL2: DRAM Split is OFF\n"); */
/* Split setting(DDR 1ch) */
io_write_32(AXI_ADSPLCR0, 0x00000000U);
io_write_32(AXI_ADSPLCR3, 0x00000000U);
#else
ERROR("DRAM split is an invalid value.(D3)");
panic();
#endif
#if !(RCAR_QOS_TYPE == RCAR_QOS_NONE)
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
NOTICE("BL2: QoS is default setting(%s)\n", RCAR_QOS_VERSION);
#endif
/* Resource Alloc setting */
io_write_32(QOSCTRL_RAS, 0x00000020U);
io_write_32(QOSCTRL_FIXTH, 0x000F0005U);
io_write_32(QOSCTRL_RAEN, 0x00000001U);
io_write_32(QOSCTRL_REGGD, 0x00000000U);
io_write_64(QOSCTRL_DANN, 0x0404020002020201U);
io_write_32(QOSCTRL_DANT, 0x00100804U);
io_write_32(QOSCTRL_EC, 0x00000000U);
io_write_64(QOSCTRL_EMS, 0x0000000000000000U);
io_write_32(QOSCTRL_FSS, 0x0000000AU);
io_write_32(QOSCTRL_INSFC, 0xC7840001U);
io_write_32(QOSCTRL_BERR, 0x00000000U);
io_write_32(QOSCTRL_EARLYR, 0x00000000U);
io_write_32(QOSCTRL_RACNT0, 0x00010003U);
io_write_32(QOSCTRL_STATGEN0, 0x00000000U);
/* GPU setting */
io_write_32(0xFD812030U, 0x00000000U);
/* QOSBW setting */
io_write_32(QOSCTRL_SL_INIT, 0x030500ACU);
io_write_32(QOSCTRL_REF_ARS, 0x00780000U);
/* QOSBW SRAM setting */
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
/* 3DG bus Leaf setting */
io_write_32(GPU_ACT_GRD, 0x00001234U);
io_write_32(GPU_ACT0, 0x00000000U);
io_write_32(GPU_ACT1, 0x00000000U);
io_write_32(GPU_ACT2, 0x00000000U);
io_write_32(GPU_ACT3, 0x00000000U);
/* RT bus Leaf setting */
io_write_32(CPU_ACT0, 0x00000003U);
io_write_32(CPU_ACT1, 0x00000003U);
io_write_32(RT_ACT0, 0x00000000U);
io_write_32(RT_ACT1, 0x00000000U);
/* Resource Alloc start */
io_write_32(QOSCTRL_RAEN, 0x00000001U);
/* QOSBW start */
io_write_32(QOSCTRL_STATQC, 0x00000001U);
#else
NOTICE("BL2: QoS is None\n");
/* Resource Alloc setting */
io_write_32(QOSCTRL_EC, 0x00000000U);
/* Resource Alloc start */
io_write_32(QOSCTRL_RAEN, 0x00000001U);
#endif /* !(RCAR_QOS_TYPE == RCAR_QOS_NONE) */
}
/*
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
static const uint64_t mstat_fix[] = {
/* 0x0000, */ 0x0000000000000000UL,
/* 0x0008, */ 0x0000000000000000UL,
/* 0x0010, */ 0x0000000000000000UL,
/* 0x0018, */ 0x0000000000000000UL,
/* 0x0020, */ 0x0000000000000000UL,
/* 0x0028, */ 0x0000000000000000UL,
/* 0x0030, */ 0x001004340000FFFFUL,
/* 0x0038, */ 0x001004140000FFFFUL,
/* 0x0040, */ 0x0000000000000000UL,
/* 0x0048, */ 0x0000000000000000UL,
/* 0x0050, */ 0x0000000000000000UL,
/* 0x0058, */ 0x00140B030000FFFFUL,
/* 0x0060, */ 0x001408610000FFFFUL,
/* 0x0068, */ 0x0000000000000000UL,
/* 0x0070, */ 0x0000000000000000UL,
/* 0x0078, */ 0x0000000000000000UL,
/* 0x0080, */ 0x0000000000000000UL,
/* 0x0088, */ 0x001410620000FFFFUL,
/* 0x0090, */ 0x0000000000000000UL,
/* 0x0098, */ 0x0000000000000000UL,
/* 0x00A0, */ 0x000C041C0000FFFFUL,
/* 0x00A8, */ 0x000C04090000FFFFUL,
/* 0x00B0, */ 0x000C04110000FFFFUL,
/* 0x00B8, */ 0x0000000000000000UL,
/* 0x00C0, */ 0x000C041C0000FFFFUL,
/* 0x00C8, */ 0x000C04090000FFFFUL,
/* 0x00D0, */ 0x000C04110000FFFFUL,
/* 0x00D8, */ 0x0000000000000000UL,
/* 0x00E0, */ 0x0000000000000000UL,
/* 0x00E8, */ 0x0000000000000000UL,
/* 0x00F0, */ 0x001018570000FFFFUL,
/* 0x00F8, */ 0x0000000000000000UL,
/* 0x0100, */ 0x0000000000000000UL,
/* 0x0108, */ 0x0000000000000000UL,
/* 0x0110, */ 0x001008570000FFFFUL,
/* 0x0118, */ 0x0000000000000000UL,
/* 0x0120, */ 0x0000000000000000UL,
/* 0x0128, */ 0x0000000000000000UL,
/* 0x0130, */ 0x0000000000000000UL,
/* 0x0138, */ 0x0000000000000000UL,
/* 0x0140, */ 0x0000000000000000UL,
/* 0x0148, */ 0x0000000000000000UL,
/* 0x0150, */ 0x001008520000FFFFUL,
/* 0x0158, */ 0x0000000000000000UL,
/* 0x0160, */ 0x0000000000000000UL,
/* 0x0168, */ 0x0000000000000000UL,
/* 0x0170, */ 0x0000000000000000UL,
/* 0x0178, */ 0x0000000000000000UL,
/* 0x0180, */ 0x0000000000000000UL,
/* 0x0188, */ 0x0000000000000000UL,
/* 0x0190, */ 0x00100CA30000FFFFUL,
/* 0x0198, */ 0x0000000000000000UL,
/* 0x01A0, */ 0x0000000000000000UL,
/* 0x01A8, */ 0x0000000000000000UL,
/* 0x01B0, */ 0x0000000000000000UL,
/* 0x01B8, */ 0x0000000000000000UL,
/* 0x01C0, */ 0x0000000000000000UL,
/* 0x01C8, */ 0x0000000000000000UL,
/* 0x01D0, */ 0x0000000000000000UL,
/* 0x01D8, */ 0x0000000000000000UL,
/* 0x01E0, */ 0x0000000000000000UL,
/* 0x01E8, */ 0x000C04020000FFFFUL,
/* 0x01F0, */ 0x0000000000000000UL,
/* 0x01F8, */ 0x0000000000000000UL,
/* 0x0200, */ 0x0000000000000000UL,
/* 0x0208, */ 0x000C04090000FFFFUL,
/* 0x0210, */ 0x0000000000000000UL,
/* 0x0218, */ 0x0000000000000000UL,
/* 0x0220, */ 0x0000000000000000UL,
/* 0x0228, */ 0x0000000000000000UL,
/* 0x0230, */ 0x0000000000000000UL,
/* 0x0238, */ 0x0000000000000000UL,
/* 0x0240, */ 0x0000000000000000UL,
/* 0x0248, */ 0x0000000000000000UL,
/* 0x0250, */ 0x0000000000000000UL,
/* 0x0258, */ 0x0000000000000000UL,
/* 0x0260, */ 0x0000000000000000UL,
/* 0x0268, */ 0x001410040000FFFFUL,
/* 0x0270, */ 0x001404020000FFFFUL,
/* 0x0278, */ 0x0000000000000000UL,
/* 0x0280, */ 0x0000000000000000UL,
/* 0x0288, */ 0x0000000000000000UL,
/* 0x0290, */ 0x001410040000FFFFUL,
/* 0x0298, */ 0x001404020000FFFFUL,
/* 0x02A0, */ 0x000C04050000FFFFUL,
/* 0x02A8, */ 0x000C04050000FFFFUL,
/* 0x02B0, */ 0x0000000000000000UL,
/* 0x02B8, */ 0x0000000000000000UL,
/* 0x02C0, */ 0x0000000000000000UL,
/* 0x02C8, */ 0x0000000000000000UL,
/* 0x02D0, */ 0x000C04050000FFFFUL,
/* 0x02D8, */ 0x000C04050000FFFFUL,
/* 0x02E0, */ 0x0000000000000000UL,
/* 0x02E8, */ 0x0000000000000000UL,
/* 0x02F0, */ 0x0000000000000000UL,
/* 0x02F8, */ 0x0000000000000000UL,
/* 0x0300, */ 0x0000000000000000UL,
/* 0x0308, */ 0x0000000000000000UL,
/* 0x0310, */ 0x0000000000000000UL,
/* 0x0318, */ 0x0000000000000000UL,
/* 0x0320, */ 0x0000000000000000UL,
/* 0x0328, */ 0x0000000000000000UL,
/* 0x0330, */ 0x0000000000000000UL,
/* 0x0338, */ 0x0000000000000000UL,
/* 0x0340, */ 0x0000000000000000UL,
/* 0x0348, */ 0x0000000000000000UL,
/* 0x0350, */ 0x0000000000000000UL,
/* 0x0358, */ 0x0000000000000000UL,
/* 0x0360, */ 0x0000000000000000UL,
/* 0x0368, */ 0x0000000000000000UL,
/* 0x0370, */ 0x000C04020000FFFFUL,
/* 0x0378, */ 0x000C04020000FFFFUL,
/* 0x0380, */ 0x000C04090000FFFFUL,
/* 0x0388, */ 0x000C04090000FFFFUL,
/* 0x0390, */ 0x0000000000000000UL,
};
static const uint64_t mstat_be[] = {
/* 0x0000, */ 0x0000000000000000UL,
/* 0x0008, */ 0x0000000000000000UL,
/* 0x0010, */ 0x0000000000000000UL,
/* 0x0018, */ 0x0000000000000000UL,
/* 0x0020, */ 0x0000000000000000UL,
/* 0x0028, */ 0x0000000000000000UL,
/* 0x0030, */ 0x0000000000000000UL,
/* 0x0038, */ 0x0000000000000000UL,
/* 0x0040, */ 0x0000000000000000UL,
/* 0x0048, */ 0x0000000000000000UL,
/* 0x0050, */ 0x0000000000000000UL,
/* 0x0058, */ 0x0000000000000000UL,
/* 0x0060, */ 0x0000000000000000UL,
/* 0x0068, */ 0x0000000000000000UL,
/* 0x0070, */ 0x0000000000000000UL,
/* 0x0078, */ 0x0000000000000000UL,
/* 0x0080, */ 0x0000000000000000UL,
/* 0x0088, */ 0x0000000000000000UL,
/* 0x0090, */ 0x0000000000000000UL,
/* 0x0098, */ 0x0000000000000000UL,
/* 0x00A0, */ 0x0000000000000000UL,
/* 0x00A8, */ 0x0000000000000000UL,
/* 0x00B0, */ 0x0000000000000000UL,
/* 0x00B8, */ 0x0000000000000000UL,
/* 0x00C0, */ 0x0000000000000000UL,
/* 0x00C8, */ 0x0000000000000000UL,
/* 0x00D0, */ 0x0000000000000000UL,
/* 0x00D8, */ 0x0000000000000000UL,
/* 0x00E0, */ 0x0000000000000000UL,
/* 0x00E8, */ 0x0000000000000000UL,
/* 0x00F0, */ 0x0000000000000000UL,
/* 0x00F8, */ 0x0000000000000000UL,
/* 0x0100, */ 0x0000000000000000UL,
/* 0x0108, */ 0x0000000000000000UL,
/* 0x0110, */ 0x0000000000000000UL,
/* 0x0118, */ 0x0000000000000000UL,
/* 0x0120, */ 0x0000000000000000UL,
/* 0x0128, */ 0x0000000000000000UL,
/* 0x0130, */ 0x0000000000000000UL,
/* 0x0138, */ 0x0000000000000000UL,
/* 0x0140, */ 0x0000000000000000UL,
/* 0x0148, */ 0x0000000000000000UL,
/* 0x0150, */ 0x0000000000000000UL,
/* 0x0158, */ 0x0000000000000000UL,
/* 0x0160, */ 0x0000000000000000UL,
/* 0x0168, */ 0x0000000000000000UL,
/* 0x0170, */ 0x0000000000000000UL,
/* 0x0178, */ 0x0000000000000000UL,
/* 0x0180, */ 0x0000000000000000UL,
/* 0x0188, */ 0x0000000000000000UL,
/* 0x0190, */ 0x0000000000000000UL,
/* 0x0198, */ 0x0000000000000000UL,
/* 0x01A0, */ 0x0000000000000000UL,
/* 0x01A8, */ 0x0000000000000000UL,
/* 0x01B0, */ 0x0000000000000000UL,
/* 0x01B8, */ 0x0000000000000000UL,
/* 0x01C0, */ 0x00110090060FA001UL,
/* 0x01C8, */ 0x00110090060FA001UL,
/* 0x01D0, */ 0x0000000000000000UL,
/* 0x01D8, */ 0x0000000000000000UL,
/* 0x01E0, */ 0x0000000000000000UL,
/* 0x01E8, */ 0x0000000000000000UL,
/* 0x01F0, */ 0x0011001006004401UL,
/* 0x01F8, */ 0x0000000000000000UL,
/* 0x0200, */ 0x0000000000000000UL,
/* 0x0208, */ 0x0000000000000000UL,
/* 0x0210, */ 0x0011001006004401UL,
/* 0x0218, */ 0x0011001006009801UL,
/* 0x0220, */ 0x0011001006009801UL,
/* 0x0228, */ 0x0000000000000000UL,
/* 0x0230, */ 0x0011001006009801UL,
/* 0x0238, */ 0x0011001006009801UL,
/* 0x0240, */ 0x0000000000000000UL,
/* 0x0248, */ 0x0000000000000000UL,
/* 0x0250, */ 0x0000000000000000UL,
/* 0x0258, */ 0x0000000000000000UL,
/* 0x0260, */ 0x0000000000000000UL,
/* 0x0268, */ 0x0000000000000000UL,
/* 0x0270, */ 0x0000000000000000UL,
/* 0x0278, */ 0x0000000000000000UL,
/* 0x0280, */ 0x0000000000000000UL,
/* 0x0288, */ 0x0000000000000000UL,
/* 0x0290, */ 0x0000000000000000UL,
/* 0x0298, */ 0x0000000000000000UL,
/* 0x02A0, */ 0x0000000000000000UL,
/* 0x02A8, */ 0x0000000000000000UL,
/* 0x02B0, */ 0x0000000000000000UL,
/* 0x02B8, */ 0x0011001006003401UL,
/* 0x02C0, */ 0x0000000000000000UL,
/* 0x02C8, */ 0x0000000000000000UL,
/* 0x02D0, */ 0x0000000000000000UL,
/* 0x02D8, */ 0x0000000000000000UL,
/* 0x02E0, */ 0x0000000000000000UL,
/* 0x02E8, */ 0x0011001006003401UL,
/* 0x02F0, */ 0x00110090060FA001UL,
/* 0x02F8, */ 0x00110090060FA001UL,
/* 0x0300, */ 0x0000000000000000UL,
/* 0x0308, */ 0x0000000000000000UL,
/* 0x0310, */ 0x0000000000000000UL,
/* 0x0318, */ 0x0012001006003401UL,
/* 0x0320, */ 0x0000000000000000UL,
/* 0x0328, */ 0x0000000000000000UL,
/* 0x0330, */ 0x0000000000000000UL,
/* 0x0338, */ 0x0000000000000000UL,
/* 0x0340, */ 0x0000000000000000UL,
/* 0x0348, */ 0x0000000000000000UL,
/* 0x0350, */ 0x0000000000000000UL,
/* 0x0358, */ 0x00120090060FA001UL,
/* 0x0360, */ 0x00120090060FA001UL,
/* 0x0368, */ 0x0012001006003401UL,
/* 0x0370, */ 0x0000000000000000UL,
/* 0x0378, */ 0x0000000000000000UL,
/* 0x0380, */ 0x0000000000000000UL,
/* 0x0388, */ 0x0000000000000000UL,
/* 0x0390, */ 0x0012001006003401UL,
};
#endif
/*
* Copyright (c) 2018, Renesas Electronics Corporation. All rights reserved.
* Copyright (c) 2018-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
......@@ -14,9 +14,6 @@
#define RCAR_QOS_VERSION "rev.0.05"
#define QOSCTRL_EARLYR (QOS_BASE1 + 0x0060U)
#define QOSCTRL_FSS (QOS_BASE1 + 0x0048U)
#define REF_ARS_ARBSTOPCYCLE_E3 (((SL_INIT_SSLOTCLK_E3) - 5U) << 16U)
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
......@@ -29,54 +26,47 @@
#endif
static void dbsc_setting(void)
{
/* Register write enable */
io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
struct rcar_gen3_dbsc_qos_settings e3_qos[] = {
/* BUFCAM settings */
io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
io_write_32(DBSC_DBSCHCNT0, 0x000F0037);
io_write_32(DBSC_DBSCHSZ0, 0x00000001);
io_write_32(DBSC_DBSCHRW0, 0x22421111);
{ DBSC_DBCAM0CNF1, 0x00043218 },
{ DBSC_DBCAM0CNF2, 0x000000F4 },
{ DBSC_DBSCHCNT0, 0x000F0037 },
{ DBSC_DBSCHSZ0, 0x00000001 },
{ DBSC_DBSCHRW0, 0x22421111 },
/* DDR3 */
io_write_32(DBSC_SCFCTST2, 0x012F1123);
{ DBSC_SCFCTST2, 0x012F1123 },
/* QoS Settings */
io_write_32(DBSC_DBSCHQOS00, 0x00000F00);
io_write_32(DBSC_DBSCHQOS01, 0x00000B00);
io_write_32(DBSC_DBSCHQOS02, 0x00000000);
io_write_32(DBSC_DBSCHQOS03, 0x00000000);
io_write_32(DBSC_DBSCHQOS40, 0x00000300);
io_write_32(DBSC_DBSCHQOS41, 0x000002F0);
io_write_32(DBSC_DBSCHQOS42, 0x00000200);
io_write_32(DBSC_DBSCHQOS43, 0x00000100);
io_write_32(DBSC_DBSCHQOS90, 0x00000100);
io_write_32(DBSC_DBSCHQOS91, 0x000000F0);
io_write_32(DBSC_DBSCHQOS92, 0x000000A0);
io_write_32(DBSC_DBSCHQOS93, 0x00000040);
io_write_32(DBSC_DBSCHQOS130, 0x00000100);
io_write_32(DBSC_DBSCHQOS131, 0x000000F0);
io_write_32(DBSC_DBSCHQOS132, 0x000000A0);
io_write_32(DBSC_DBSCHQOS133, 0x00000040);
io_write_32(DBSC_DBSCHQOS140, 0x000000C0);
io_write_32(DBSC_DBSCHQOS141, 0x000000B0);
io_write_32(DBSC_DBSCHQOS142, 0x00000080);
io_write_32(DBSC_DBSCHQOS143, 0x00000040);
io_write_32(DBSC_DBSCHQOS150, 0x00000040);
io_write_32(DBSC_DBSCHQOS151, 0x00000030);
io_write_32(DBSC_DBSCHQOS152, 0x00000020);
io_write_32(DBSC_DBSCHQOS153, 0x00000010);
/* Register write protect */
io_write_32(DBSC_DBSYSCNT0, 0x00000000U);
}
{ DBSC_DBSCHQOS00, 0x00000F00 },
{ DBSC_DBSCHQOS01, 0x00000B00 },
{ DBSC_DBSCHQOS02, 0x00000000 },
{ DBSC_DBSCHQOS03, 0x00000000 },
{ DBSC_DBSCHQOS40, 0x00000300 },
{ DBSC_DBSCHQOS41, 0x000002F0 },
{ DBSC_DBSCHQOS42, 0x00000200 },
{ DBSC_DBSCHQOS43, 0x00000100 },
{ DBSC_DBSCHQOS90, 0x00000100 },
{ DBSC_DBSCHQOS91, 0x000000F0 },
{ DBSC_DBSCHQOS92, 0x000000A0 },
{ DBSC_DBSCHQOS93, 0x00000040 },
{ DBSC_DBSCHQOS130, 0x00000100 },
{ DBSC_DBSCHQOS131, 0x000000F0 },
{ DBSC_DBSCHQOS132, 0x000000A0 },
{ DBSC_DBSCHQOS133, 0x00000040 },
{ DBSC_DBSCHQOS140, 0x000000C0 },
{ DBSC_DBSCHQOS141, 0x000000B0 },
{ DBSC_DBSCHQOS142, 0x00000080 },
{ DBSC_DBSCHQOS143, 0x00000040 },
{ DBSC_DBSCHQOS150, 0x00000040 },
{ DBSC_DBSCHQOS151, 0x00000030 },
{ DBSC_DBSCHQOS152, 0x00000020 },
{ DBSC_DBSCHQOS153, 0x00000010 },
};
void qos_init_e3_v10(void)
{
dbsc_setting();
rcar_qos_dbsc_setting(e3_qos, ARRAY_SIZE(e3_qos), true);
/* DRAM Split Address mapping */
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH
......@@ -121,17 +111,16 @@ void qos_init_e3_v10(void)
SL_INIT_SSLOTCLK_E3);
io_write_32(QOSCTRL_REF_ARS, REF_ARS_ARBSTOPCYCLE_E3);
{
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
/* QOSBW SRAM setting */
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
/* RT bus Leaf setting */
......
/*
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stdint.h>
#include <common/debug.h>
#include "../qos_common.h"
#include "../qos_reg.h"
#include "qos_init_h3_v10.h"
#define RCAR_QOS_VERSION "rev.0.36"
#include "qos_init_h3_v10_mstat.h"
void qos_init_h3_v10(void)
{
/* DRAM Split Address mapping */
#if (RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH) || \
(RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_AUTO)
NOTICE("BL2: DRAM Split is 4ch\n");
io_write_32(AXI_ADSPLCR0, ADSPLCR0_ADRMODE_DEFAULT
| ADSPLCR0_SPLITSEL(0xFFU)
| ADSPLCR0_AREA(0x1BU)
| ADSPLCR0_SWP);
io_write_32(AXI_ADSPLCR1, 0x00000000U);
io_write_32(AXI_ADSPLCR2, 0xA8A90000U);
io_write_32(AXI_ADSPLCR3, 0x00000000U);
#elif RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_2CH
NOTICE("BL2: DRAM Split is 2ch\n");
io_write_32(AXI_ADSPLCR0, 0x00000000U);
io_write_32(AXI_ADSPLCR1, ADSPLCR0_ADRMODE_DEFAULT
| ADSPLCR0_SPLITSEL(0xFFU)
| ADSPLCR0_AREA(0x1BU)
| ADSPLCR0_SWP);
io_write_32(AXI_ADSPLCR2, 0x00000000U);
io_write_32(AXI_ADSPLCR3, 0x00000000U);
#else
NOTICE("BL2: DRAM Split is OFF\n");
#endif
#if !(RCAR_QOS_TYPE == RCAR_QOS_NONE)
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
NOTICE("BL2: QoS is default setting(%s)\n", RCAR_QOS_VERSION);
#endif
/* AR Cache setting */
io_write_32(0xE67D1000U, 0x00000100U);
io_write_32(0xE67D1008U, 0x00000100U);
/* Resource Alloc setting */
io_write_32(QOSCTRL_RAS, 0x00000040U);
io_write_32(QOSCTRL_FIXTH, 0x000F0005U);
io_write_32(QOSCTRL_REGGD, 0x00000004U);
io_write_64(QOSCTRL_DANN, 0x0202000004040404UL);
io_write_32(QOSCTRL_DANT, 0x003C1110U);
io_write_32(QOSCTRL_EC, 0x00080001U); /* need for H3 v1.* */
io_write_64(QOSCTRL_EMS, 0x0000000000000000UL);
io_write_32(QOSCTRL_INSFC, 0xC7840001U);
io_write_32(QOSCTRL_BERR, 0x00000000U);
/* QOSBW setting */
io_write_32(QOSCTRL_SL_INIT,
SL_INIT_REFFSSLOT | SL_INIT_SLOTSSLOT | SL_INIT_SSLOTCLK);
io_write_32(QOSCTRL_REF_ARS, 0x00330000U);
/* QOSBW SRAM setting */
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
/* 3DG bus Leaf setting */
io_write_32(0xFD820808U, 0x00001234U);
io_write_32(0xFD820800U, 0x0000003FU);
io_write_32(0xFD821800U, 0x0000003FU);
io_write_32(0xFD822800U, 0x0000003FU);
io_write_32(0xFD823800U, 0x0000003FU);
io_write_32(0xFD824800U, 0x0000003FU);
io_write_32(0xFD825800U, 0x0000003FU);
io_write_32(0xFD826800U, 0x0000003FU);
io_write_32(0xFD827800U, 0x0000003FU);
/* Resource Alloc start */
io_write_32(QOSCTRL_RAEN, 0x00000001U);
/* QOSBW start */
io_write_32(QOSCTRL_STATQC, 0x00000001U);
#else
NOTICE("BL2: QoS is None\n");
/* Resource Alloc setting */
io_write_32(QOSCTRL_EC, 0x00080001U); /* need for H3 v1.* */
#endif /* !(RCAR_QOS_TYPE == RCAR_QOS_NONE) */
}
/*
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
static const uint64_t mstat_fix[] = {
/* 0x0000, */ 0x0000000000000000UL,
/* 0x0008, */ 0x0000000000000000UL,
/* 0x0010, */ 0x0000000000000000UL,
/* 0x0018, */ 0x0000000000000000UL,
/* 0x0020, */ 0x0000000000000000UL,
/* 0x0028, */ 0x0000000000000000UL,
/* 0x0030, */ 0x0000000000000000UL,
/* 0x0038, */ 0x0000000000000000UL,
/* 0x0040, */ 0x00140C050000FFFFUL,
/* 0x0048, */ 0x0000000000000000UL,
/* 0x0050, */ 0x0000000000000000UL,
/* 0x0058, */ 0x001404030000FFFFUL,
/* 0x0060, */ 0x001408060000FFFFUL,
/* 0x0068, */ 0x0000000000000000UL,
/* 0x0070, */ 0x0000000000000000UL,
/* 0x0078, */ 0x0000000000000000UL,
/* 0x0080, */ 0x0000000000000000UL,
/* 0x0088, */ 0x00140C050000FFFFUL,
/* 0x0090, */ 0x001408060000FFFFUL,
/* 0x0098, */ 0x001404020000FFFFUL,
/* 0x00A0, */ 0x0000000000000000UL,
/* 0x00A8, */ 0x0000000000000000UL,
/* 0x00B0, */ 0x0000000000000000UL,
/* 0x00B8, */ 0x0000000000000000UL,
/* 0x00C0, */ 0x0000000000000000UL,
/* 0x00C8, */ 0x0000000000000000UL,
/* 0x00D0, */ 0x0000000000000000UL,
/* 0x00D8, */ 0x0000000000000000UL,
/* 0x00E0, */ 0x0000000000000000UL,
/* 0x00E8, */ 0x0000000000000000UL,
/* 0x00F0, */ 0x0000000000000000UL,
/* 0x00F8, */ 0x0000000000000000UL,
/* 0x0100, */ 0x0000000000000000UL,
/* 0x0108, */ 0x0000000000000000UL,
/* 0x0110, */ 0x0000000000000000UL,
/* 0x0118, */ 0x0000000000000000UL,
/* 0x0120, */ 0x0000000000000000UL,
/* 0x0128, */ 0x0000000000000000UL,
/* 0x0130, */ 0x0000000000000000UL,
/* 0x0138, */ 0x001004020000FFFFUL,
/* 0x0140, */ 0x001004020000FFFFUL,
/* 0x0148, */ 0x001004020000FFFFUL,
/* 0x0150, */ 0x001008050000FFFFUL,
/* 0x0158, */ 0x001008050000FFFFUL,
/* 0x0160, */ 0x001008050000FFFFUL,
/* 0x0168, */ 0x001008050000FFFFUL,
/* 0x0170, */ 0x001008050000FFFFUL,
/* 0x0178, */ 0x001004030000FFFFUL,
/* 0x0180, */ 0x001004030000FFFFUL,
/* 0x0188, */ 0x001004030000FFFFUL,
/* 0x0190, */ 0x001014140000FFFFUL,
/* 0x0198, */ 0x001014140000FFFFUL,
/* 0x01A0, */ 0x001008060000FFFFUL,
/* 0x01A8, */ 0x001008060000FFFFUL,
/* 0x01B0, */ 0x001008060000FFFFUL,
/* 0x01B8, */ 0x0000000000000000UL,
/* 0x01C0, */ 0x0000000000000000UL,
/* 0x01C8, */ 0x0000000000000000UL,
/* 0x01D0, */ 0x0000000000000000UL,
/* 0x01D8, */ 0x0000000000000000UL,
/* 0x01E0, */ 0x0000000000000000UL,
/* 0x01E8, */ 0x0000000000000000UL,
/* 0x01F0, */ 0x0000000000000000UL,
/* 0x01F8, */ 0x0000000000000000UL,
/* 0x0200, */ 0x0000000000000000UL,
/* 0x0208, */ 0x0000000000000000UL,
/* 0x0210, */ 0x0000000000000000UL,
/* 0x0218, */ 0x0000000000000000UL,
/* 0x0220, */ 0x0000000000000000UL,
/* 0x0228, */ 0x0000000000000000UL,
/* 0x0230, */ 0x0000000000000000UL,
/* 0x0238, */ 0x0000000000000000UL,
/* 0x0240, */ 0x0000000000000000UL,
/* 0x0248, */ 0x0000000000000000UL,
/* 0x0250, */ 0x0000000000000000UL,
/* 0x0258, */ 0x0000000000000000UL,
/* 0x0260, */ 0x0000000000000000UL,
/* 0x0268, */ 0x0000000000000000UL,
/* 0x0270, */ 0x0000000000000000UL,
/* 0x0278, */ 0x0000000000000000UL,
/* 0x0280, */ 0x0000000000000000UL,
/* 0x0288, */ 0x0000000000000000UL,
/* 0x0290, */ 0x0000000000000000UL,
/* 0x0298, */ 0x0000000000000000UL,
/* 0x02A0, */ 0x0000000000000000UL,
/* 0x02A8, */ 0x0000000000000000UL,
/* 0x02B0, */ 0x0000000000000000UL,
/* 0x02B8, */ 0x0000000000000000UL,
/* 0x02C0, */ 0x0000000000000000UL,
/* 0x02C8, */ 0x0000000000000000UL,
/* 0x02D0, */ 0x0000000000000000UL,
/* 0x02D8, */ 0x0000000000000000UL,
/* 0x02E0, */ 0x0000000000000000UL,
/* 0x02E8, */ 0x0000000000000000UL,
/* 0x02F0, */ 0x0000000000000000UL,
/* 0x02F8, */ 0x0000000000000000UL,
/* 0x0300, */ 0x0000000000000000UL,
/* 0x0308, */ 0x0000000000000000UL,
/* 0x0310, */ 0x0000000000000000UL,
/* 0x0318, */ 0x0000000000000000UL,
/* 0x0320, */ 0x0000000000000000UL,
/* 0x0328, */ 0x0000000000000000UL,
/* 0x0330, */ 0x0000000000000000UL,
/* 0x0338, */ 0x0000000000000000UL,
};
static const uint64_t mstat_be[] = {
/* 0x0000, */ 0x001000100C8FFC01UL,
/* 0x0008, */ 0x001000100C8FFC01UL,
/* 0x0010, */ 0x001000100C8FFC01UL,
/* 0x0018, */ 0x001000100C8FFC01UL,
/* 0x0020, */ 0x001000100C8FFC01UL,
/* 0x0028, */ 0x001000100C8FFC01UL,
/* 0x0030, */ 0x001000100C8FFC01UL,
/* 0x0038, */ 0x001000100C8FFC01UL,
/* 0x0040, */ 0x0000000000000000UL,
/* 0x0048, */ 0x0000000000000000UL,
/* 0x0050, */ 0x001000100C8FFC01UL,
/* 0x0058, */ 0x0000000000000000UL,
/* 0x0060, */ 0x0000000000000000UL,
/* 0x0068, */ 0x001000100C8FFC01UL,
/* 0x0070, */ 0x001000100C8FFC01UL,
/* 0x0078, */ 0x001000100C8FFC01UL,
/* 0x0080, */ 0x001000100C8FFC01UL,
/* 0x0088, */ 0x0000000000000000UL,
/* 0x0090, */ 0x0000000000000000UL,
/* 0x0098, */ 0x0000000000000000UL,
/* 0x00A0, */ 0x001000100C8FFC01UL,
/* 0x00A8, */ 0x001000100C8FFC01UL,
/* 0x00B0, */ 0x001000100C8FFC01UL,
/* 0x00B8, */ 0x001000100C8FFC01UL,
/* 0x00C0, */ 0x001000100C8FFC01UL,
/* 0x00C8, */ 0x001000100C8FFC01UL,
/* 0x00D0, */ 0x001000100C8FFC01UL,
/* 0x00D8, */ 0x002000200C8FFC01UL,
/* 0x00E0, */ 0x002000200C8FFC01UL,
/* 0x00E8, */ 0x001000100C8FFC01UL,
/* 0x00F0, */ 0x001000100C8FFC01UL,
/* 0x00F8, */ 0x001000100C8FFC01UL,
/* 0x0100, */ 0x0000000000000000UL,
/* 0x0108, */ 0x002000200C8FFC01UL,
/* 0x0110, */ 0x001000100C8FFC01UL,
/* 0x0118, */ 0x001000100C8FFC01UL,
/* 0x0120, */ 0x0000000000000000UL,
/* 0x0128, */ 0x002000200C8FFC01UL,
/* 0x0130, */ 0x001000100C8FFC01UL,
/* 0x0138, */ 0x0000000000000000UL,
/* 0x0140, */ 0x0000000000000000UL,
/* 0x0148, */ 0x0000000000000000UL,
/* 0x0150, */ 0x0000000000000000UL,
/* 0x0158, */ 0x0000000000000000UL,
/* 0x0160, */ 0x0000000000000000UL,
/* 0x0168, */ 0x0000000000000000UL,
/* 0x0170, */ 0x0000000000000000UL,
/* 0x0178, */ 0x0000000000000000UL,
/* 0x0180, */ 0x0000000000000000UL,
/* 0x0188, */ 0x0000000000000000UL,
/* 0x0190, */ 0x0000000000000000UL,
/* 0x0198, */ 0x0000000000000000UL,
/* 0x01A0, */ 0x0000000000000000UL,
/* 0x01A8, */ 0x0000000000000000UL,
/* 0x01B0, */ 0x0000000000000000UL,
/* 0x01B8, */ 0x001000100C8FFC01UL,
/* 0x01C0, */ 0x001000200C8FFC01UL,
/* 0x01C8, */ 0x001000200C8FFC01UL,
/* 0x01D0, */ 0x001000200C8FFC01UL,
/* 0x01D8, */ 0x001000200C8FFC01UL,
/* 0x01E0, */ 0x001000100C8FFC01UL,
/* 0x01E8, */ 0x001000100C8FFC01UL,
/* 0x01F0, */ 0x001000100C8FFC01UL,
/* 0x01F8, */ 0x001000100C8FFC01UL,
/* 0x0200, */ 0x001000100C8FFC01UL,
/* 0x0208, */ 0x001000100C8FFC01UL,
/* 0x0210, */ 0x001000100C8FFC01UL,
/* 0x0218, */ 0x001000100C8FFC01UL,
/* 0x0220, */ 0x001000100C8FFC01UL,
/* 0x0228, */ 0x001000100C8FFC01UL,
/* 0x0230, */ 0x001000100C8FFC01UL,
/* 0x0238, */ 0x001000100C8FFC01UL,
/* 0x0240, */ 0x001000100C8FFC01UL,
/* 0x0248, */ 0x001000100C8FFC01UL,
/* 0x0250, */ 0x001000100C8FFC01UL,
/* 0x0258, */ 0x001000100C8FFC01UL,
/* 0x0260, */ 0x001000100C8FFC01UL,
/* 0x0268, */ 0x001000100C8FFC01UL,
/* 0x0270, */ 0x001000100C8FFC01UL,
/* 0x0278, */ 0x001000100C8FFC01UL,
/* 0x0280, */ 0x001000100C8FFC01UL,
/* 0x0288, */ 0x001000100C8FFC01UL,
/* 0x0290, */ 0x001000100C8FFC01UL,
/* 0x0298, */ 0x001000100C8FFC01UL,
/* 0x02A0, */ 0x001000100C8FFC01UL,
/* 0x02A8, */ 0x001000100C8FFC01UL,
/* 0x02B0, */ 0x001000100C8FFC01UL,
/* 0x02B8, */ 0x001000100C8FFC01UL,
/* 0x02C0, */ 0x001000100C8FFC01UL,
/* 0x02C8, */ 0x001000100C8FFC01UL,
/* 0x02D0, */ 0x001000100C8FFC01UL,
/* 0x02D8, */ 0x001000100C8FFC01UL,
/* 0x02E0, */ 0x001000100C8FFC01UL,
/* 0x02E8, */ 0x001000100C8FFC01UL,
/* 0x02F0, */ 0x001000200C8FFC01UL,
/* 0x02F8, */ 0x001000300C8FFC01UL,
/* 0x0300, */ 0x0000000000000000UL,
/* 0x0308, */ 0x001000200C8FFC01UL,
/* 0x0310, */ 0x001000300C8FFC01UL,
/* 0x0318, */ 0x0000000000000000UL,
/* 0x0320, */ 0x001000200C8FFC01UL,
/* 0x0328, */ 0x001000300C8FFC01UL,
/* 0x0330, */ 0x001000200C8FFC01UL,
/* 0x0338, */ 0x001000300C8FFC01UL,
};
#endif
/*
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stdint.h>
#include <common/debug.h>
#include <rcar_def.h>
#include "../qos_common.h"
#include "../qos_reg.h"
#include "qos_init_h3_v11.h"
#define RCAR_QOS_VERSION "rev.0.37"
#include "qos_init_h3_v11_mstat.h"
struct rcar_gen3_dbsc_qos_settings h3_v11_qos[] = {
/* BUFCAM settings */
/* DBSC_DBCAM0CNF0 not set */
{ DBSC_DBCAM0CNF1, 0x00044218 },
{ DBSC_DBCAM0CNF2, 0x000000F4 },
/* DBSC_DBCAM0CNF3 not set */
{ DBSC_DBSCHCNT0, 0x080F0037 },
{ DBSC_DBSCHCNT1, 0x00001010 },
{ DBSC_DBSCHSZ0, 0x00000001 },
{ DBSC_DBSCHRW0, 0x22421111 },
/* DDR3 */
{ DBSC_SCFCTST2, 0x012F1123 },
/* QoS Settings */
{ DBSC_DBSCHQOS00, 0x0000F000 },
{ DBSC_DBSCHQOS01, 0x0000E000 },
{ DBSC_DBSCHQOS02, 0x00007000 },
{ DBSC_DBSCHQOS03, 0x00000000 },
{ DBSC_DBSCHQOS40, 0x00000E00 },
{ DBSC_DBSCHQOS41, 0x00000DFF },
{ DBSC_DBSCHQOS42, 0x00000400 },
{ DBSC_DBSCHQOS43, 0x00000200 },
{ DBSC_DBSCHQOS90, 0x00000C00 },
{ DBSC_DBSCHQOS91, 0x00000BFF },
{ DBSC_DBSCHQOS92, 0x00000400 },
{ DBSC_DBSCHQOS93, 0x00000200 },
{ DBSC_DBSCHQOS130, 0x00000980 },
{ DBSC_DBSCHQOS131, 0x0000097F },
{ DBSC_DBSCHQOS132, 0x00000300 },
{ DBSC_DBSCHQOS133, 0x00000180 },
{ DBSC_DBSCHQOS140, 0x00000800 },
{ DBSC_DBSCHQOS141, 0x000007FF },
{ DBSC_DBSCHQOS142, 0x00000300 },
{ DBSC_DBSCHQOS143, 0x00000180 },
{ DBSC_DBSCHQOS150, 0x000007D0 },
{ DBSC_DBSCHQOS151, 0x000007CF },
{ DBSC_DBSCHQOS152, 0x000005D0 },
{ DBSC_DBSCHQOS153, 0x000003D0 },
};
void qos_init_h3_v11(void)
{
rcar_qos_dbsc_setting(h3_v11_qos, ARRAY_SIZE(h3_v11_qos), false);
/* DRAM Split Address mapping */
#if (RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH) || \
(RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_AUTO)
NOTICE("BL2: DRAM Split is 4ch\n");
io_write_32(AXI_ADSPLCR0, ADSPLCR0_ADRMODE_DEFAULT
| ADSPLCR0_SPLITSEL(0xFFU)
| ADSPLCR0_AREA(0x1BU)
| ADSPLCR0_SWP);
io_write_32(AXI_ADSPLCR1, 0x00000000U);
io_write_32(AXI_ADSPLCR2, 0xA8A90000U);
io_write_32(AXI_ADSPLCR3, 0x00000000U);
#elif RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_2CH
NOTICE("BL2: DRAM Split is 2ch\n");
io_write_32(AXI_ADSPLCR0, 0x00000000U);
io_write_32(AXI_ADSPLCR1, ADSPLCR0_ADRMODE_DEFAULT
| ADSPLCR0_SPLITSEL(0xFFU)
| ADSPLCR0_AREA(0x1BU)
| ADSPLCR0_SWP);
io_write_32(AXI_ADSPLCR2, 0x00000000U);
io_write_32(AXI_ADSPLCR3, 0x00000000U);
#else
NOTICE("BL2: DRAM Split is OFF\n");
#endif
#if !(RCAR_QOS_TYPE == RCAR_QOS_NONE)
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
NOTICE("BL2: QoS is default setting(%s)\n", RCAR_QOS_VERSION);
#endif
/* AR Cache setting */
io_write_32(0xE67D1000U, 0x00000100U);
io_write_32(0xE67D1008U, 0x00000100U);
/* Resource Alloc setting */
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_2CH
io_write_32(QOSCTRL_RAS, 0x00000020U);
#else
io_write_32(QOSCTRL_RAS, 0x00000040U);
#endif
io_write_32(QOSCTRL_FIXTH, 0x000F0005U);
io_write_32(QOSCTRL_REGGD, 0x00000000U);
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_2CH
io_write_64(QOSCTRL_DANN, 0x0101010102020201UL);
io_write_32(QOSCTRL_DANT, 0x00181008U);
#else
io_write_64(QOSCTRL_DANN, 0x0101000004040401UL);
io_write_32(QOSCTRL_DANT, 0x003C2010U);
#endif
io_write_32(QOSCTRL_EC, 0x00080001U); /* need for H3 v1.* */
io_write_64(QOSCTRL_EMS, 0x0000000000000000UL);
io_write_32(QOSCTRL_INSFC, 0xC7840001U);
io_write_32(QOSCTRL_BERR, 0x00000000U);
io_write_32(QOSCTRL_RACNT0, 0x00000000U);
/* QOSBW setting */
io_write_32(QOSCTRL_SL_INIT,
SL_INIT_REFFSSLOT | SL_INIT_SLOTSSLOT | SL_INIT_SSLOTCLK);
io_write_32(QOSCTRL_REF_ARS, 0x00330000U);
/* QOSBW SRAM setting */
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
/* 3DG bus Leaf setting */
io_write_32(0xFD820808U, 0x00001234U);
io_write_32(0xFD820800U, 0x0000003FU);
io_write_32(0xFD821800U, 0x0000003FU);
io_write_32(0xFD822800U, 0x0000003FU);
io_write_32(0xFD823800U, 0x0000003FU);
io_write_32(0xFD824800U, 0x0000003FU);
io_write_32(0xFD825800U, 0x0000003FU);
io_write_32(0xFD826800U, 0x0000003FU);
io_write_32(0xFD827800U, 0x0000003FU);
/* VIO bus Leaf setting */
io_write_32(0xFEB89800, 0x00000001U);
io_write_32(0xFEB8A800, 0x00000001U);
io_write_32(0xFEB8B800, 0x00000001U);
io_write_32(0xFEB8C800, 0x00000001U);
/* HSC bus Leaf setting */
io_write_32(0xE6430800, 0x00000001U);
io_write_32(0xE6431800, 0x00000001U);
io_write_32(0xE6432800, 0x00000001U);
io_write_32(0xE6433800, 0x00000001U);
/* MP bus Leaf setting */
io_write_32(0xEC620800, 0x00000001U);
io_write_32(0xEC621800, 0x00000001U);
/* PERIE bus Leaf setting */
io_write_32(0xE7760800, 0x00000001U);
io_write_32(0xE7768800, 0x00000001U);
/* PERIW bus Leaf setting */
io_write_32(0xE6760800, 0x00000001U);
io_write_32(0xE6768800, 0x00000001U);
/* RT bus Leaf setting */
io_write_32(0xFFC50800, 0x00000001U);
io_write_32(0xFFC51800, 0x00000001U);
/* CCI bus Leaf setting */
uint32_t modemr = io_read_32(RCAR_MODEMR);
modemr &= MODEMR_BOOT_CPU_MASK;
if ((modemr == MODEMR_BOOT_CPU_CA57) ||
(modemr == MODEMR_BOOT_CPU_CA53)) {
io_write_32(0xF1300800, 0x00000001U);
io_write_32(0xF1340800, 0x00000001U);
io_write_32(0xF1380800, 0x00000001U);
io_write_32(0xF13C0800, 0x00000001U);
}
/* Resource Alloc start */
io_write_32(QOSCTRL_RAEN, 0x00000001U);
/* QOSBW start */
io_write_32(QOSCTRL_STATQC, 0x00000001U);
#else
NOTICE("BL2: QoS is None\n");
/* Resource Alloc setting */
io_write_32(QOSCTRL_EC, 0x00080001U); /* need for H3 v1.* */
#endif /* !(RCAR_QOS_TYPE == RCAR_QOS_NONE) */
}
/*
* Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
static const uint64_t mstat_fix[] = {
/* 0x0000, */ 0x0000000000000000UL,
/* 0x0008, */ 0x0000000000000000UL,
/* 0x0010, */ 0x0000000000000000UL,
/* 0x0018, */ 0x0000000000000000UL,
/* 0x0020, */ 0x0000000000000000UL,
/* 0x0028, */ 0x0000000000000000UL,
/* 0x0030, */ 0x001004030000FFFFUL,
/* 0x0038, */ 0x001008060000FFFFUL,
/* 0x0040, */ 0x001414090000FFFFUL,
/* 0x0048, */ 0x0000000000000000UL,
/* 0x0050, */ 0x001410010000FFFFUL,
/* 0x0058, */ 0x00140C0C0000FFFFUL,
/* 0x0060, */ 0x00140C0C0000FFFFUL,
/* 0x0068, */ 0x0000000000000000UL,
/* 0x0070, */ 0x001410010000FFFFUL,
/* 0x0078, */ 0x001008060000FFFFUL,
/* 0x0080, */ 0x001004020000FFFFUL,
/* 0x0088, */ 0x001414090000FFFFUL,
/* 0x0090, */ 0x00140C0C0000FFFFUL,
/* 0x0098, */ 0x001408080000FFFFUL,
/* 0x00A0, */ 0x000C08020000FFFFUL,
/* 0x00A8, */ 0x000C04010000FFFFUL,
/* 0x00B0, */ 0x000C04010000FFFFUL,
/* 0x00B8, */ 0x0000000000000000UL,
/* 0x00C0, */ 0x000C08020000FFFFUL,
/* 0x00C8, */ 0x000C04010000FFFFUL,
/* 0x00D0, */ 0x000C04010000FFFFUL,
/* 0x00D8, */ 0x000C04030000FFFFUL,
/* 0x00E0, */ 0x000C100F0000FFFFUL,
/* 0x00E8, */ 0x0000000000000000UL,
/* 0x00F0, */ 0x001010080000FFFFUL,
/* 0x00F8, */ 0x001010080000FFFFUL,
/* 0x0100, */ 0x0000000000000000UL,
/* 0x0108, */ 0x000C04030000FFFFUL,
/* 0x0110, */ 0x001010080000FFFFUL,
/* 0x0118, */ 0x001010080000FFFFUL,
/* 0x0120, */ 0x0000000000000000UL,
/* 0x0128, */ 0x000C100E0000FFFFUL,
/* 0x0130, */ 0x0000000000000000UL,
/* 0x0138, */ 0x001008050000FFFFUL,
/* 0x0140, */ 0x001008050000FFFFUL,
/* 0x0148, */ 0x001008050000FFFFUL,
/* 0x0150, */ 0x001008050000FFFFUL,
/* 0x0158, */ 0x001008050000FFFFUL,
/* 0x0160, */ 0x001008050000FFFFUL,
/* 0x0168, */ 0x001008050000FFFFUL,
/* 0x0170, */ 0x001008050000FFFFUL,
/* 0x0178, */ 0x001004030000FFFFUL,
/* 0x0180, */ 0x001004030000FFFFUL,
/* 0x0188, */ 0x001004030000FFFFUL,
/* 0x0190, */ 0x001014140000FFFFUL,
/* 0x0198, */ 0x001014140000FFFFUL,
/* 0x01A0, */ 0x001008050000FFFFUL,
/* 0x01A8, */ 0x001008050000FFFFUL,
/* 0x01B0, */ 0x001008050000FFFFUL,
/* 0x01B8, */ 0x0000000000000000UL,
/* 0x01C0, */ 0x0000000000000000UL,
/* 0x01C8, */ 0x0000000000000000UL,
/* 0x01D0, */ 0x0000000000000000UL,
/* 0x01D8, */ 0x0000000000000000UL,
/* 0x01E0, */ 0x0000000000000000UL,
/* 0x01E8, */ 0x0000000000000000UL,
/* 0x01F0, */ 0x0000000000000000UL,
/* 0x01F8, */ 0x0000000000000000UL,
/* 0x0200, */ 0x0000000000000000UL,
/* 0x0208, */ 0x0000000000000000UL,
/* 0x0210, */ 0x0000000000000000UL,
/* 0x0218, */ 0x0000000000000000UL,
/* 0x0220, */ 0x0000000000000000UL,
/* 0x0228, */ 0x0000000000000000UL,
/* 0x0230, */ 0x0000000000000000UL,
/* 0x0238, */ 0x0000000000000000UL,
/* 0x0240, */ 0x0000000000000000UL,
/* 0x0248, */ 0x0000000000000000UL,
/* 0x0250, */ 0x0000000000000000UL,
/* 0x0258, */ 0x0000000000000000UL,
/* 0x0260, */ 0x0000000000000000UL,
/* 0x0268, */ 0x001408010000FFFFUL,
/* 0x0270, */ 0x001404010000FFFFUL,
/* 0x0278, */ 0x0000000000000000UL,
/* 0x0280, */ 0x0000000000000000UL,
/* 0x0288, */ 0x0000000000000000UL,
/* 0x0290, */ 0x001408010000FFFFUL,
/* 0x0298, */ 0x001404010000FFFFUL,
/* 0x02A0, */ 0x000C04010000FFFFUL,
/* 0x02A8, */ 0x000C04010000FFFFUL,
/* 0x02B0, */ 0x001404010000FFFFUL,
/* 0x02B8, */ 0x0000000000000000UL,
/* 0x02C0, */ 0x0000000000000000UL,
/* 0x02C8, */ 0x0000000000000000UL,
/* 0x02D0, */ 0x000C04010000FFFFUL,
/* 0x02D8, */ 0x000C04010000FFFFUL,
/* 0x02E0, */ 0x001404010000FFFFUL,
/* 0x02E8, */ 0x0000000000000000UL,
/* 0x02F0, */ 0x0000000000000000UL,
/* 0x02F8, */ 0x0000000000000000UL,
/* 0x0300, */ 0x0000000000000000UL,
/* 0x0308, */ 0x0000000000000000UL,
/* 0x0310, */ 0x0000000000000000UL,
/* 0x0318, */ 0x0000000000000000UL,
/* 0x0320, */ 0x0000000000000000UL,
/* 0x0328, */ 0x0000000000000000UL,
/* 0x0330, */ 0x0000000000000000UL,
/* 0x0338, */ 0x0000000000000000UL,
};
static const uint64_t mstat_be[] = {
/* 0x0000, */ 0x001200100C89C401UL,
/* 0x0008, */ 0x001200100C89C401UL,
/* 0x0010, */ 0x001200100C89C401UL,
/* 0x0018, */ 0x001200100C89C401UL,
/* 0x0020, */ 0x001100100C803401UL,
/* 0x0028, */ 0x001100100C80FC01UL,
/* 0x0030, */ 0x0000000000000000UL,
/* 0x0038, */ 0x0000000000000000UL,
/* 0x0040, */ 0x0000000000000000UL,
/* 0x0048, */ 0x0000000000000000UL,
/* 0x0050, */ 0x0000000000000000UL,
/* 0x0058, */ 0x0000000000000000UL,
/* 0x0060, */ 0x0000000000000000UL,
/* 0x0068, */ 0x001100100C803401UL,
/* 0x0070, */ 0x0000000000000000UL,
/* 0x0078, */ 0x0000000000000000UL,
/* 0x0080, */ 0x0000000000000000UL,
/* 0x0088, */ 0x0000000000000000UL,
/* 0x0090, */ 0x0000000000000000UL,
/* 0x0098, */ 0x0000000000000000UL,
/* 0x00A0, */ 0x0000000000000000UL,
/* 0x00A8, */ 0x0000000000000000UL,
/* 0x00B0, */ 0x0000000000000000UL,
/* 0x00B8, */ 0x001100100C803401UL,
/* 0x00C0, */ 0x0000000000000000UL,
/* 0x00C8, */ 0x0000000000000000UL,
/* 0x00D0, */ 0x0000000000000000UL,
/* 0x00D8, */ 0x0000000000000000UL,
/* 0x00E0, */ 0x0000000000000000UL,
/* 0x00E8, */ 0x001100100C803401UL,
/* 0x00F0, */ 0x0000000000000000UL,
/* 0x00F8, */ 0x0000000000000000UL,
/* 0x0100, */ 0x0000000000000000UL,
/* 0x0108, */ 0x0000000000000000UL,
/* 0x0110, */ 0x0000000000000000UL,
/* 0x0118, */ 0x0000000000000000UL,
/* 0x0120, */ 0x0000000000000000UL,
/* 0x0128, */ 0x0000000000000000UL,
/* 0x0130, */ 0x001100100C803401UL,
/* 0x0138, */ 0x0000000000000000UL,
/* 0x0140, */ 0x0000000000000000UL,
/* 0x0148, */ 0x0000000000000000UL,
/* 0x0150, */ 0x0000000000000000UL,
/* 0x0158, */ 0x0000000000000000UL,
/* 0x0160, */ 0x0000000000000000UL,
/* 0x0168, */ 0x0000000000000000UL,
/* 0x0170, */ 0x0000000000000000UL,
/* 0x0178, */ 0x0000000000000000UL,
/* 0x0180, */ 0x0000000000000000UL,
/* 0x0188, */ 0x0000000000000000UL,
/* 0x0190, */ 0x0000000000000000UL,
/* 0x0198, */ 0x0000000000000000UL,
/* 0x01A0, */ 0x0000000000000000UL,
/* 0x01A8, */ 0x0000000000000000UL,
/* 0x01B0, */ 0x0000000000000000UL,
/* 0x01B8, */ 0x001100100C803401UL,
/* 0x01C0, */ 0x001100800C8FFC01UL,
/* 0x01C8, */ 0x001100800C8FFC01UL,
/* 0x01D0, */ 0x001100800C8FFC01UL,
/* 0x01D8, */ 0x001100800C8FFC01UL,
/* 0x01E0, */ 0x001100100C80FC01UL,
/* 0x01E8, */ 0x001200100C80FC01UL,
/* 0x01F0, */ 0x001100100C80FC01UL,
/* 0x01F8, */ 0x001100100C803401UL,
/* 0x0200, */ 0x001100100C80FC01UL,
/* 0x0208, */ 0x001200100C80FC01UL,
/* 0x0210, */ 0x001100100C80FC01UL,
/* 0x0218, */ 0x001100100C825801UL,
/* 0x0220, */ 0x001100100C825801UL,
/* 0x0228, */ 0x001100100C803401UL,
/* 0x0230, */ 0x001100100C825801UL,
/* 0x0238, */ 0x001100100C825801UL,
/* 0x0240, */ 0x001200100C8BB801UL,
/* 0x0248, */ 0x001100200C8FFC01UL,
/* 0x0250, */ 0x001200100C8BB801UL,
/* 0x0258, */ 0x001100200C8FFC01UL,
/* 0x0260, */ 0x001100100C84E401UL,
/* 0x0268, */ 0x0000000000000000UL,
/* 0x0270, */ 0x0000000000000000UL,
/* 0x0278, */ 0x001100100C81F401UL,
/* 0x0280, */ 0x001100100C803401UL,
/* 0x0288, */ 0x001100100C803401UL,
/* 0x0290, */ 0x0000000000000000UL,
/* 0x0298, */ 0x0000000000000000UL,
/* 0x02A0, */ 0x0000000000000000UL,
/* 0x02A8, */ 0x0000000000000000UL,
/* 0x02B0, */ 0x0000000000000000UL,
/* 0x02B8, */ 0x001100100C803401UL,
/* 0x02C0, */ 0x001100100C803401UL,
/* 0x02C8, */ 0x001100100C803401UL,
/* 0x02D0, */ 0x0000000000000000UL,
/* 0x02D8, */ 0x0000000000000000UL,
/* 0x02E0, */ 0x0000000000000000UL,
/* 0x02E8, */ 0x001100100C803401UL,
/* 0x02F0, */ 0x001100300C8FFC01UL,
/* 0x02F8, */ 0x001100500C8FFC01UL,
/* 0x0300, */ 0x001100100C803401UL,
/* 0x0308, */ 0x001100300C8FFC01UL,
/* 0x0310, */ 0x001100500C8FFC01UL,
/* 0x0318, */ 0x001200100C803401UL,
/* 0x0320, */ 0x001100300C8FFC01UL,
/* 0x0328, */ 0x001100500C8FFC01UL,
/* 0x0330, */ 0x001100300C8FFC01UL,
/* 0x0338, */ 0x001100500C8FFC01UL,
};
#endif
......@@ -12,29 +12,34 @@
#include "../qos_reg.h"
#include "qos_init_h3_v20.h"
#define RCAR_QOS_VERSION "rev.0.21"
#define RCAR_QOS_VERSION "rev.0.21"
#define QOSWT_TIME_BANK0 20000000U /* unit:ns */
#define QOSWT_TIME_BANK0 (20000000U) /* unit:ns */
#define QOSWT_WTEN_ENABLE (0x1U)
#define QOSWT_WTEN_ENABLE 0x1U
#define QOSCTRL_REF_ARS_ARBSTOPCYCLE_H3_20 (SL_INIT_SSLOTCLK_H3_20 - 0x5U)
#define OSWT_WTREF_SLOT0_EN_REQ1_SLOT (3U)
#define OSWT_WTREF_SLOT0_EN_REQ2_SLOT (9U)
#define QOSWT_WTREF_SLOT0_EN ((0x1U << OSWT_WTREF_SLOT0_EN_REQ1_SLOT) | (0x1U << OSWT_WTREF_SLOT0_EN_REQ2_SLOT))
#define QOSWT_WTREF_SLOT1_EN ((0x1U << OSWT_WTREF_SLOT0_EN_REQ1_SLOT) | (0x1U << OSWT_WTREF_SLOT0_EN_REQ2_SLOT))
#define QOSWT_WTSET0_REQ_SSLOT0 (5U)
#define WT_BASE_SUB_SLOT_NUM0 (12U)
#define QOSWT_WTSET0_PERIOD0_H3_20 ((QOSWT_TIME_BANK0/QOSWT_WTSET0_CYCLE_H3_20)-1U)
#define QOSWT_WTSET0_SSLOT0 (QOSWT_WTSET0_REQ_SSLOT0 -1U)
#define QOSWT_WTSET0_SLOTSLOT0 (WT_BASE_SUB_SLOT_NUM0 -1U)
#define QOSWT_WTSET1_PERIOD1_H3_20 ((QOSWT_TIME_BANK0/QOSWT_WTSET0_CYCLE_H3_20)-1U)
#define QOSWT_WTSET1_SSLOT1 (QOSWT_WTSET0_REQ_SSLOT0 -1U)
#define QOSWT_WTSET1_SLOTSLOT1 (WT_BASE_SUB_SLOT_NUM0 -1U)
#define OSWT_WTREF_SLOT0_EN_REQ1_SLOT 3U
#define OSWT_WTREF_SLOT0_EN_REQ2_SLOT 9U
#define QOSWT_WTREF_SLOT0_EN \
((0x1U << OSWT_WTREF_SLOT0_EN_REQ1_SLOT) | \
(0x1U << OSWT_WTREF_SLOT0_EN_REQ2_SLOT))
#define QOSWT_WTREF_SLOT1_EN \
((0x1U << OSWT_WTREF_SLOT0_EN_REQ1_SLOT) | \
(0x1U << OSWT_WTREF_SLOT0_EN_REQ2_SLOT))
#define QOSWT_WTSET0_REQ_SSLOT0 5U
#define WT_BASE_SUB_SLOT_NUM0 12U
#define QOSWT_WTSET0_PERIOD0_H3_20 \
((QOSWT_TIME_BANK0 / QOSWT_WTSET0_CYCLE_H3_20) - 1U)
#define QOSWT_WTSET0_SSLOT0 (QOSWT_WTSET0_REQ_SSLOT0 - 1U)
#define QOSWT_WTSET0_SLOTSLOT0 (WT_BASE_SUB_SLOT_NUM0 - 1U)
#define QOSWT_WTSET1_PERIOD1_H3_20 \
((QOSWT_TIME_BANK0 / QOSWT_WTSET0_CYCLE_H3_20) - 1U)
#define QOSWT_WTSET1_SSLOT1 (QOSWT_WTSET0_REQ_SSLOT0 - 1U)
#define QOSWT_WTSET1_SLOTSLOT1 (WT_BASE_SUB_SLOT_NUM0 - 1U)
#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
......@@ -56,79 +61,52 @@
#endif
static void dbsc_setting(void)
{
uint32_t md = 0;
/* Register write enable */
io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
struct rcar_gen3_dbsc_qos_settings h3_v20_qos[] = {
/* BUFCAM settings */
io_write_32(DBSC_DBCAM0CNF1, 0x00043218U); /* dbcam0cnf1 */
io_write_32(DBSC_DBCAM0CNF2, 0x000000F4U); /* dbcam0cnf2 */
io_write_32(DBSC_DBCAM0CNF3, 0x00000000U); /* dbcam0cnf3 */
io_write_32(DBSC_DBSCHCNT0, 0x000F0037U); /* dbschcnt0 */
io_write_32(DBSC_DBSCHSZ0, 0x00000001U); /* dbschsz0 */
io_write_32(DBSC_DBSCHRW0, 0x22421111U); /* dbschrw0 */
md = (*((volatile uint32_t *)RST_MODEMR) & 0x000A0000) >> 17;
switch (md) {
case 0x0:
/* DDR3200 */
io_write_32(DBSC_SCFCTST2, 0x012F1123U);
break;
case 0x1: /* MD19=0,MD17=1 : LPDDR4-3000, 4GByte(1GByte x4) */
/* DDR2800 */
io_write_32(DBSC_SCFCTST2, 0x012F1123U);
break;
case 0x4: /* MD19=1,MD17=0 : LPDDR4-2400, 4GByte(1GByte x4) */
/* DDR2400 */
io_write_32(DBSC_SCFCTST2, 0x012F1123U);
break;
default: /* MD19=1,MD17=1 : LPDDR4-1600, 4GByte(1GByte x4) */
/* DDR1600 */
io_write_32(DBSC_SCFCTST2, 0x012F1123U);
break;
}
{ DBSC_DBCAM0CNF1, 0x00043218U },
{ DBSC_DBCAM0CNF2, 0x000000F4U },
{ DBSC_DBCAM0CNF3, 0x00000000U },
{ DBSC_DBSCHCNT0, 0x000F0037U },
{ DBSC_DBSCHSZ0, 0x00000001U },
{ DBSC_DBSCHRW0, 0x22421111U },
/* DDR3 */
{ DBSC_SCFCTST2, 0x012F1123U },
/* QoS Settings */
io_write_32(DBSC_DBSCHQOS00, 0x00000F00U);
io_write_32(DBSC_DBSCHQOS01, 0x00000B00U);
io_write_32(DBSC_DBSCHQOS02, 0x00000000U);
io_write_32(DBSC_DBSCHQOS03, 0x00000000U);
io_write_32(DBSC_DBSCHQOS40, 0x00000300U);
io_write_32(DBSC_DBSCHQOS41, 0x000002F0U);
io_write_32(DBSC_DBSCHQOS42, 0x00000200U);
io_write_32(DBSC_DBSCHQOS43, 0x00000100U);
io_write_32(DBSC_DBSCHQOS90, 0x00000100U);
io_write_32(DBSC_DBSCHQOS91, 0x000000F0U);
io_write_32(DBSC_DBSCHQOS92, 0x000000A0U);
io_write_32(DBSC_DBSCHQOS93, 0x00000040U);
io_write_32(DBSC_DBSCHQOS120, 0x00000040U);
io_write_32(DBSC_DBSCHQOS121, 0x00000030U);
io_write_32(DBSC_DBSCHQOS122, 0x00000020U);
io_write_32(DBSC_DBSCHQOS123, 0x00000010U);
io_write_32(DBSC_DBSCHQOS130, 0x00000100U);
io_write_32(DBSC_DBSCHQOS131, 0x000000F0U);
io_write_32(DBSC_DBSCHQOS132, 0x000000A0U);
io_write_32(DBSC_DBSCHQOS133, 0x00000040U);
io_write_32(DBSC_DBSCHQOS140, 0x000000C0U);
io_write_32(DBSC_DBSCHQOS141, 0x000000B0U);
io_write_32(DBSC_DBSCHQOS142, 0x00000080U);
io_write_32(DBSC_DBSCHQOS143, 0x00000040U);
io_write_32(DBSC_DBSCHQOS150, 0x00000040U);
io_write_32(DBSC_DBSCHQOS151, 0x00000030U);
io_write_32(DBSC_DBSCHQOS152, 0x00000020U);
io_write_32(DBSC_DBSCHQOS153, 0x00000010U);
/* Register write protect */
io_write_32(DBSC_DBSYSCNT0, 0x00000000U);
}
{ DBSC_DBSCHQOS00, 0x00000F00U },
{ DBSC_DBSCHQOS01, 0x00000B00U },
{ DBSC_DBSCHQOS02, 0x00000000U },
{ DBSC_DBSCHQOS03, 0x00000000U },
{ DBSC_DBSCHQOS40, 0x00000300U },
{ DBSC_DBSCHQOS41, 0x000002F0U },
{ DBSC_DBSCHQOS42, 0x00000200U },
{ DBSC_DBSCHQOS43, 0x00000100U },
{ DBSC_DBSCHQOS90, 0x00000100U },
{ DBSC_DBSCHQOS91, 0x000000F0U },
{ DBSC_DBSCHQOS92, 0x000000A0U },
{ DBSC_DBSCHQOS93, 0x00000040U },
{ DBSC_DBSCHQOS120, 0x00000040U },
{ DBSC_DBSCHQOS121, 0x00000030U },
{ DBSC_DBSCHQOS122, 0x00000020U },
{ DBSC_DBSCHQOS123, 0x00000010U },
{ DBSC_DBSCHQOS130, 0x00000100U },
{ DBSC_DBSCHQOS131, 0x000000F0U },
{ DBSC_DBSCHQOS132, 0x000000A0U },
{ DBSC_DBSCHQOS133, 0x00000040U },
{ DBSC_DBSCHQOS140, 0x000000C0U },
{ DBSC_DBSCHQOS141, 0x000000B0U },
{ DBSC_DBSCHQOS142, 0x00000080U },
{ DBSC_DBSCHQOS143, 0x00000040U },
{ DBSC_DBSCHQOS150, 0x00000040U },
{ DBSC_DBSCHQOS151, 0x00000030U },
{ DBSC_DBSCHQOS152, 0x00000020U },
{ DBSC_DBSCHQOS153, 0x00000010U },
};
void qos_init_h3_v20(void)
{
dbsc_setting();
rcar_qos_dbsc_setting(h3_v20_qos, ARRAY_SIZE(h3_v20_qos), true);
/* DRAM Split Address mapping */
#if (RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH) || \
......@@ -188,30 +166,28 @@ void qos_init_h3_v20(void)
io_write_32(QOSCTRL_REF_ARS, 0x00330000U);
#endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
{
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
uint32_t i;
for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
}
#if RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE
for (i = 0U; i < ARRAY_SIZE(qoswt_fix); i++) {
io_write_64(QOSWT_FIX_WTQOS_BANK0 + i * 8,
qoswt_fix[i]);
io_write_64(QOSWT_FIX_WTQOS_BANK1 + i * 8,
qoswt_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(qoswt_be); i++) {
io_write_64(QOSWT_BE_WTQOS_BANK0 + i * 8, qoswt_be[i]);
io_write_64(QOSWT_BE_WTQOS_BANK1 + i * 8, qoswt_be[i]);
}
#endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
for (i = 0U; i < ARRAY_SIZE(qoswt_fix); i++) {
io_write_64(QOSWT_FIX_WTQOS_BANK0 + i * 8,
qoswt_fix[i]);
io_write_64(QOSWT_FIX_WTQOS_BANK1 + i * 8,
qoswt_fix[i]);
}
for (i = 0U; i < ARRAY_SIZE(qoswt_be); i++) {
io_write_64(QOSWT_BE_WTQOS_BANK0 + i * 8, qoswt_be[i]);
io_write_64(QOSWT_BE_WTQOS_BANK1 + i * 8, qoswt_be[i]);
}
#endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
/* 3DG bus Leaf setting */
io_write_32(GPU_ACT0, 0x00000000U);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment