diff options
| -rw-r--r-- | arch/arm/include/asm/arch-rmobile/r8a7791.h | 72 | ||||
| -rw-r--r-- | board/renesas/koelsch/Makefile | 9 | ||||
| -rw-r--r-- | board/renesas/koelsch/koelsch.c | 283 | ||||
| -rw-r--r-- | board/renesas/koelsch/qos.c | 1220 | ||||
| -rw-r--r-- | board/renesas/koelsch/qos.h | 12 | ||||
| -rw-r--r-- | boards.cfg | 2 | ||||
| -rw-r--r-- | include/configs/koelsch.h | 133 | 
7 files changed, 1728 insertions, 3 deletions
| diff --git a/arch/arm/include/asm/arch-rmobile/r8a7791.h b/arch/arm/include/asm/arch-rmobile/r8a7791.h index 8f26e6ee6..2afda0a62 100644 --- a/arch/arm/include/asm/arch-rmobile/r8a7791.h +++ b/arch/arm/include/asm/arch-rmobile/r8a7791.h @@ -1,6 +1,5 @@  /*   * arch/arm/include/asm/arch-rmobile/r8a7791.h - *     This file is r8a7791 processor definition.   *   * Copyright (C) 2013 Renesas Electronics Corporation   * @@ -64,12 +63,48 @@  #define DBSC3_0_QOS_W14_BASE	0xE6792E00  #define DBSC3_0_QOS_W15_BASE	0xE6792F00 +#define DBSC3_1_QOS_R0_BASE	0xE67A1000 +#define DBSC3_1_QOS_R1_BASE	0xE67A1100 +#define DBSC3_1_QOS_R2_BASE	0xE67A1200 +#define DBSC3_1_QOS_R3_BASE	0xE67A1300 +#define DBSC3_1_QOS_R4_BASE	0xE67A1400 +#define DBSC3_1_QOS_R5_BASE	0xE67A1500 +#define DBSC3_1_QOS_R6_BASE	0xE67A1600 +#define DBSC3_1_QOS_R7_BASE	0xE67A1700 +#define DBSC3_1_QOS_R8_BASE	0xE67A1800 +#define DBSC3_1_QOS_R9_BASE	0xE67A1900 +#define DBSC3_1_QOS_R10_BASE	0xE67A1A00 +#define DBSC3_1_QOS_R11_BASE	0xE67A1B00 +#define DBSC3_1_QOS_R12_BASE	0xE67A1C00 +#define DBSC3_1_QOS_R13_BASE	0xE67A1D00 +#define DBSC3_1_QOS_R14_BASE	0xE67A1E00 +#define DBSC3_1_QOS_R15_BASE	0xE67A1F00 +#define DBSC3_1_QOS_W0_BASE	0xE67A2000 +#define DBSC3_1_QOS_W1_BASE	0xE67A2100 +#define DBSC3_1_QOS_W2_BASE	0xE67A2200 +#define DBSC3_1_QOS_W3_BASE	0xE67A2300 +#define DBSC3_1_QOS_W4_BASE	0xE67A2400 +#define DBSC3_1_QOS_W5_BASE	0xE67A2500 +#define DBSC3_1_QOS_W6_BASE	0xE67A2600 +#define DBSC3_1_QOS_W7_BASE	0xE67A2700 +#define DBSC3_1_QOS_W8_BASE	0xE67A2800 +#define DBSC3_1_QOS_W9_BASE	0xE67A2900 +#define DBSC3_1_QOS_W10_BASE	0xE67A2A00 +#define DBSC3_1_QOS_W11_BASE	0xE67A2B00 +#define DBSC3_1_QOS_W12_BASE	0xE67A2C00 +#define DBSC3_1_QOS_W13_BASE	0xE67A2D00 +#define DBSC3_1_QOS_W14_BASE	0xE67A2E00 +#define DBSC3_1_QOS_W15_BASE	0xE67A2F00 + +#define DBSC3_0_DBADJ2		0xE67900C8 +  #define CCI_400_MAXOT_1		0xF0091110  #define CCI_400_MAXOT_2		0xF0092110  #define CCI_400_QOSCNTL_1	0xF009110C  #define CCI_400_QOSCNTL_2	0xF009210C  #define	MXI_BASE		0xFE960000 +#define	MXI_QOS_BASE		0xFE960300  #define SYS_AXI_SYX64TO128_BASE	0xFF800300  #define SYS_AXI_AVB_BASE	0xFF800340 @@ -95,11 +130,28 @@  #define SYS_AXI_USB21_BASE	0xFF800C40  #define SYS_AXI_USB22_BASE	0xFF800C80  #define SYS_AXI_USB30_BASE	0xFF800CC0 +#define SYS_AXI_AX2M_BASE	0xFF800380 +#define SYS_AXI_CC50_BASE	0xFF8003C0 +#define SYS_AXI_CCI_BASE	0xFF800440 +#define SYS_AXI_CS_BASE		0xFF800480 +#define SYS_AXI_DDM_BASE	0xFF8004C0 +#define SYS_AXI_ETH_BASE	0xFF800500 +#define SYS_AXI_MPXM_BASE	0xFF800840 +#define SYS_AXI_SAT0_BASE	0xFF800980 +#define SYS_AXI_SAT1_BASE	0xFF8009C0 +#define SYS_AXI_SDM0_BASE	0xFF800A00 +#define SYS_AXI_SDM1_BASE	0xFF800A40 +#define SYS_AXI_TRAB_BASE	0xFF800B00 +#define SYS_AXI_UDM0_BASE	0xFF800B80 +#define SYS_AXI_UDM1_BASE	0xFF800BC0  #define RT_AXI_SHX_BASE		0xFF810100 +#define RT_AXI_DBG_BASE		0xFF810140 +#define RT_AXI_RDM_BASE		0xFF810180  #define RT_AXI_RDS_BASE		0xFF8101C0  #define RT_AXI_RTX64TO128_BASE	0xFF810200  #define RT_AXI_STPRO_BASE	0xFF810240 +#define RT_AXI_SY2RT_BASE	0xFF810280  #define MP_AXI_ADSP_BASE	0xFF820100  #define MP_AXI_ASDS0_BASE	0xFF8201C0 @@ -123,6 +175,8 @@  #define CCI_AXI_MMUS1_BASE	0xFF880280  #define CCI_AXI_MMUMP_BASE	0xFF8802C0 +#define MEDIA_AXI_MXR_BASE	0xFE960080 +#define MEDIA_AXI_MXW_BASE	0xFE9600C0  #define MEDIA_AXI_JPR_BASE	0xFE964100  #define MEDIA_AXI_JPW_BASE	0xFE966100  #define MEDIA_AXI_GCU0R_BASE	0xFE964140 @@ -567,18 +621,30 @@ struct r8a7791_dbsc3_qos {  	u32 dbthres0;  	u32 dbthres1;  	u32 dbthres2; +	u32 dummy0;	/* 0x24 */  	u32 dblgqon;  };  /* MXI(QoS) */  struct r8a7791_mxi { -	u32 dummy0[10];	/* 0x00 .. 0x24 */ +	u32 mxsaar0; +	u32 mxsaar1; +	u32 dummy0[8];	/* 0x08 .. 0x24 */  	u32 mxs3cracr; -	u32 dummy1[5];	/* 0x2C .. 0x3C */ +	u32 dummy1[3];	/* 0x2C .. 0x34 */ +	u32 mxs3cwacr; +	u32 dummy2;	/* 0x3C */  	u32 mxrtcr;  	u32 mxwtcr;  }; +struct r8a7791_mxi_qos { +	u32 vspdu0; +	u32 vspdu1; +	u32 du0; +	u32 du1; +}; +  /* AXI(QoS) */  struct r8a7791_axi_qos {  	u32 qosconf; diff --git a/board/renesas/koelsch/Makefile b/board/renesas/koelsch/Makefile new file mode 100644 index 000000000..b4d0183b3 --- /dev/null +++ b/board/renesas/koelsch/Makefile @@ -0,0 +1,9 @@ +# +# board/renesas/koelsch/Makefile +# +# Copyright (C) 2013 Renesas Electronics Corporation +# +# SPDX-License-Identifier: GPL-2.0 +# + +obj-y	:= koelsch.o qos.o diff --git a/board/renesas/koelsch/koelsch.c b/board/renesas/koelsch/koelsch.c new file mode 100644 index 000000000..7153f652b --- /dev/null +++ b/board/renesas/koelsch/koelsch.c @@ -0,0 +1,283 @@ +/* + * board/renesas/koelsch/koelsch.c + * + * Copyright (C) 2013 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0 + * + */ + +#include <common.h> +#include <malloc.h> +#include <asm/processor.h> +#include <asm/mach-types.h> +#include <asm/io.h> +#include <asm/errno.h> +#include <asm/arch/sys_proto.h> +#include <asm/gpio.h> +#include <asm/arch/rmobile.h> +#include <i2c.h> +#include "qos.h" + +DECLARE_GLOBAL_DATA_PTR; + +#define s_init_wait(cnt) \ +	({	\ +		u32 i = 0x10000 * cnt;	\ +		while (i > 0)	\ +			i--;	\ +	}) + + +#define dbpdrgd_check(bsc) \ +	({	\ +		while ((readl(&bsc->dbpdrgd) & 0x1) != 0x1)	\ +			;	\ +	}) + +#if defined(CONFIG_NORFLASH) +static void bsc_init(void) +{ +	struct r8a7791_lbsc *lbsc = (struct r8a7791_lbsc *)LBSC_BASE; +	struct r8a7791_dbsc3 *dbsc3_0 = (struct r8a7791_dbsc3 *)DBSC3_0_BASE; + +	/* LBSC */ +	writel(0x00000020, &lbsc->cs0ctrl); +	writel(0x00000020, &lbsc->cs1ctrl); +	writel(0x00002020, &lbsc->ecs0ctrl); +	writel(0x00002020, &lbsc->ecs1ctrl); + +	writel(0x077F077F, &lbsc->cswcr0); +	writel(0x077F077F, &lbsc->cswcr1); +	writel(0x077F077F, &lbsc->ecswcr0); +	writel(0x077F077F, &lbsc->ecswcr1); + +	/* DBSC3 */ +	s_init_wait(10); + +	writel(0x0000A55A, &dbsc3_0->dbpdlck); +	writel(0x00000001, &dbsc3_0->dbpdrga); +	writel(0x80000000, &dbsc3_0->dbpdrgd); +	writel(0x00000004, &dbsc3_0->dbpdrga); +	dbpdrgd_check(dbsc3_0); + +	writel(0x00000006, &dbsc3_0->dbpdrga); +	writel(0x0001C000, &dbsc3_0->dbpdrgd); + +	writel(0x00000023, &dbsc3_0->dbpdrga); +	writel(0x00FD2480, &dbsc3_0->dbpdrgd); + +	writel(0x00000010, &dbsc3_0->dbpdrga); +	writel(0xF004649B, &dbsc3_0->dbpdrgd); + +	writel(0x0000000F, &dbsc3_0->dbpdrga); +	writel(0x00181EE4, &dbsc3_0->dbpdrgd); + +	writel(0x0000000E, &dbsc3_0->dbpdrga); +	writel(0x33C03812, &dbsc3_0->dbpdrgd); + +	writel(0x00000003, &dbsc3_0->dbpdrga); +	writel(0x0300C481, &dbsc3_0->dbpdrgd); + +	writel(0x00000007, &dbsc3_0->dbkind); +	writel(0x10030A02, &dbsc3_0->dbconf0); +	writel(0x00000001, &dbsc3_0->dbphytype); +	writel(0x00000000, &dbsc3_0->dbbl); +	writel(0x0000000B, &dbsc3_0->dbtr0); +	writel(0x00000008, &dbsc3_0->dbtr1); +	writel(0x00000000, &dbsc3_0->dbtr2); +	writel(0x0000000B, &dbsc3_0->dbtr3); +	writel(0x000C000B, &dbsc3_0->dbtr4); +	writel(0x00000027, &dbsc3_0->dbtr5); +	writel(0x0000001C, &dbsc3_0->dbtr6); +	writel(0x00000005, &dbsc3_0->dbtr7); +	writel(0x00000018, &dbsc3_0->dbtr8); +	writel(0x00000008, &dbsc3_0->dbtr9); +	writel(0x0000000C, &dbsc3_0->dbtr10); +	writel(0x00000009, &dbsc3_0->dbtr11); +	writel(0x00000012, &dbsc3_0->dbtr12); +	writel(0x000000D0, &dbsc3_0->dbtr13); +	writel(0x00140005, &dbsc3_0->dbtr14); +	writel(0x00050004, &dbsc3_0->dbtr15); +	writel(0x70233005, &dbsc3_0->dbtr16); +	writel(0x000C0000, &dbsc3_0->dbtr17); +	writel(0x00000300, &dbsc3_0->dbtr18); +	writel(0x00000040, &dbsc3_0->dbtr19); +	writel(0x00000001, &dbsc3_0->dbrnk0); +	writel(0x00020001, &dbsc3_0->dbadj0); +	writel(0x20082008, &dbsc3_0->dbadj2); +	writel(0x00020002, &dbsc3_0->dbwt0cnf0); +	writel(0x0000000F, &dbsc3_0->dbwt0cnf4); + +	writel(0x00000015, &dbsc3_0->dbpdrga); +	writel(0x00000D70, &dbsc3_0->dbpdrgd); + +	writel(0x00000016, &dbsc3_0->dbpdrga); +	writel(0x00000006, &dbsc3_0->dbpdrgd); + +	writel(0x00000017, &dbsc3_0->dbpdrga); +	writel(0x00000018, &dbsc3_0->dbpdrgd); + +	writel(0x00000012, &dbsc3_0->dbpdrga); +	writel(0x9D5CBB66, &dbsc3_0->dbpdrgd); + +	writel(0x00000013, &dbsc3_0->dbpdrga); +	writel(0x1A868300, &dbsc3_0->dbpdrgd); + +	writel(0x00000023, &dbsc3_0->dbpdrga); +	writel(0x00FDB6C0, &dbsc3_0->dbpdrgd); + +	writel(0x00000014, &dbsc3_0->dbpdrga); +	writel(0x300214D8, &dbsc3_0->dbpdrgd); + +	writel(0x0000001A, &dbsc3_0->dbpdrga); +	writel(0x930035C7, &dbsc3_0->dbpdrgd); + +	writel(0x00000060, &dbsc3_0->dbpdrga); +	writel(0x330657B2, &dbsc3_0->dbpdrgd); + +	writel(0x00000011, &dbsc3_0->dbpdrga); +	writel(0x1000040B, &dbsc3_0->dbpdrgd); + +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x00000001, &dbsc3_0->dbpdrga); +	writel(0x00000071, &dbsc3_0->dbpdrgd); + +	writel(0x00000004, &dbsc3_0->dbpdrga); +	dbpdrgd_check(dbsc3_0); + +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x2100FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); +	writel(0x0000FA00, &dbsc3_0->dbcmd); + +	writel(0x110000DB, &dbsc3_0->dbcmd); + +	writel(0x00000001, &dbsc3_0->dbpdrga); +	writel(0x00000181, &dbsc3_0->dbpdrgd); + +	writel(0x00000004, &dbsc3_0->dbpdrga); +	dbpdrgd_check(dbsc3_0); + +	writel(0x00000001, &dbsc3_0->dbpdrga); +	writel(0x0000FE01, &dbsc3_0->dbpdrgd); + +	writel(0x00000004, &dbsc3_0->dbpdrga); +	dbpdrgd_check(dbsc3_0); + +	writel(0x00000000, &dbsc3_0->dbbs0cnt1); +	writel(0x01004C20, &dbsc3_0->dbcalcnf); +	writel(0x014000AA, &dbsc3_0->dbcaltr); +	writel(0x00000140, &dbsc3_0->dbrfcnf0); +	writel(0x00081860, &dbsc3_0->dbrfcnf1); +	writel(0x00010000, &dbsc3_0->dbrfcnf2); +	writel(0x00000001, &dbsc3_0->dbrfen); +	writel(0x00000001, &dbsc3_0->dbacen); +} +#else +#define bsc_init() do {} while (0) +#endif /* CONFIG_NORFLASH */ + +void s_init(void) +{ +	struct r8a7791_rwdt *rwdt = (struct r8a7791_rwdt *)RWDT_BASE; +	struct r8a7791_swdt *swdt = (struct r8a7791_swdt *)SWDT_BASE; + +	/* Watchdog init */ +	writel(0xA5A5A500, &rwdt->rwtcsra); +	writel(0xA5A5A500, &swdt->swtcsra); + +	/* QoS */ +	qos_init(); + +	/* BSC */ +	bsc_init(); +} + +#define MSTPSR1		0xE6150038 +#define SMSTPCR1	0xE6150134 +#define TMU0_MSTP125	(1 << 25) + +#define MSTPSR7		0xE61501C4 +#define SMSTPCR7	0xE615014C +#define SCIF0_MSTP721	(1 << 21) + +#define PMMR	0xE6060000 +#define GPSR4	0xE6060014 +#define IPSR14	0xE6060058 + +#define set_guard_reg(addr, mask, value)	\ +{ \ +	u32 val; \ +	val = (readl(addr) & ~(mask)) | (value); \ +	writel(~val, PMMR); \ +	writel(val, addr); \ +} + +#define mstp_setbits(type, addr, saddr, set) \ +	out_##type((saddr), in_##type(addr) | (set)) +#define mstp_clrbits(type, addr, saddr, clear) \ +	out_##type((saddr), in_##type(addr) & ~(clear)) +#define mstp_setbits_le32(addr, saddr, set) \ +	mstp_setbits(le32, addr, saddr, set) +#define mstp_clrbits_le32(addr, saddr, clear)   \ +	mstp_clrbits(le32, addr, saddr, clear) + +int board_early_init_f(void) +{ +	mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125); + +#if defined(CONFIG_NORFLASH) +	/* SCIF0 */ +	set_guard_reg(GPSR4, 0x34000000, 0x00000000); +	set_guard_reg(IPSR14, 0x00000FC7, 0x00000481); +	set_guard_reg(GPSR4, 0x00000000, 0x34000000); +#endif + +	mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP721); + +	return 0; +} + +int board_init(void) +{ +	/* adress of boot parameters */ +	gd->bd->bi_boot_params = KOELSCH_SDRAM_BASE + 0x100; + +	/* Init PFC controller */ +	r8a7791_pinmux_init(); + +	return 0; +} + +int dram_init(void) +{ +	gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; +	gd->ram_size = CONFIG_SYS_SDRAM_SIZE; + +	return 0; +} + +const struct rmobile_sysinfo sysinfo = { +	CONFIG_RMOBILE_BOARD_STRING +}; + +void dram_init_banksize(void) +{ +	gd->bd->bi_dram[0].start = KOELSCH_SDRAM_BASE; +	gd->bd->bi_dram[0].size = KOELSCH_SDRAM_SIZE; +} + +int board_late_init(void) +{ +	return 0; +} + +void reset_cpu(ulong addr) +{ +} diff --git a/board/renesas/koelsch/qos.c b/board/renesas/koelsch/qos.c new file mode 100644 index 000000000..7f88f7da8 --- /dev/null +++ b/board/renesas/koelsch/qos.c @@ -0,0 +1,1220 @@ +/* + * board/renesas/koelsch/qos.c + * + * Copyright (C) 2013 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0 + * + */ + +#include <common.h> +#include <asm/processor.h> +#include <asm/mach-types.h> +#include <asm/io.h> +#include <asm/arch/rmobile.h> + +/* QoS version 0.23 */ + +enum { +	DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04, +	DBSC3_05, DBSC3_06, DBSC3_07, DBSC3_08, DBSC3_09, +	DBSC3_10, DBSC3_11, DBSC3_12, DBSC3_13, DBSC3_14, +	DBSC3_15, +	DBSC3_NR, +}; + +static u32 dbsc3_0_r_qos_addr[DBSC3_NR] = { +	[DBSC3_00] = DBSC3_0_QOS_R0_BASE, +	[DBSC3_01] = DBSC3_0_QOS_R1_BASE, +	[DBSC3_02] = DBSC3_0_QOS_R2_BASE, +	[DBSC3_03] = DBSC3_0_QOS_R3_BASE, +	[DBSC3_04] = DBSC3_0_QOS_R4_BASE, +	[DBSC3_05] = DBSC3_0_QOS_R5_BASE, +	[DBSC3_06] = DBSC3_0_QOS_R6_BASE, +	[DBSC3_07] = DBSC3_0_QOS_R7_BASE, +	[DBSC3_08] = DBSC3_0_QOS_R8_BASE, +	[DBSC3_09] = DBSC3_0_QOS_R9_BASE, +	[DBSC3_10] = DBSC3_0_QOS_R10_BASE, +	[DBSC3_11] = DBSC3_0_QOS_R11_BASE, +	[DBSC3_12] = DBSC3_0_QOS_R12_BASE, +	[DBSC3_13] = DBSC3_0_QOS_R13_BASE, +	[DBSC3_14] = DBSC3_0_QOS_R14_BASE, +	[DBSC3_15] = DBSC3_0_QOS_R15_BASE, +}; + +static u32 dbsc3_0_w_qos_addr[DBSC3_NR] = { +	[DBSC3_00] = DBSC3_0_QOS_W0_BASE, +	[DBSC3_01] = DBSC3_0_QOS_W1_BASE, +	[DBSC3_02] = DBSC3_0_QOS_W2_BASE, +	[DBSC3_03] = DBSC3_0_QOS_W3_BASE, +	[DBSC3_04] = DBSC3_0_QOS_W4_BASE, +	[DBSC3_05] = DBSC3_0_QOS_W5_BASE, +	[DBSC3_06] = DBSC3_0_QOS_W6_BASE, +	[DBSC3_07] = DBSC3_0_QOS_W7_BASE, +	[DBSC3_08] = DBSC3_0_QOS_W8_BASE, +	[DBSC3_09] = DBSC3_0_QOS_W9_BASE, +	[DBSC3_10] = DBSC3_0_QOS_W10_BASE, +	[DBSC3_11] = DBSC3_0_QOS_W11_BASE, +	[DBSC3_12] = DBSC3_0_QOS_W12_BASE, +	[DBSC3_13] = DBSC3_0_QOS_W13_BASE, +	[DBSC3_14] = DBSC3_0_QOS_W14_BASE, +	[DBSC3_15] = DBSC3_0_QOS_W15_BASE, +}; + +static u32 dbsc3_1_r_qos_addr[DBSC3_NR] = { +	[DBSC3_00] = DBSC3_1_QOS_R0_BASE, +	[DBSC3_01] = DBSC3_1_QOS_R1_BASE, +	[DBSC3_02] = DBSC3_1_QOS_R2_BASE, +	[DBSC3_03] = DBSC3_1_QOS_R3_BASE, +	[DBSC3_04] = DBSC3_1_QOS_R4_BASE, +	[DBSC3_05] = DBSC3_1_QOS_R5_BASE, +	[DBSC3_06] = DBSC3_1_QOS_R6_BASE, +	[DBSC3_07] = DBSC3_1_QOS_R7_BASE, +	[DBSC3_08] = DBSC3_1_QOS_R8_BASE, +	[DBSC3_09] = DBSC3_1_QOS_R9_BASE, +	[DBSC3_10] = DBSC3_1_QOS_R10_BASE, +	[DBSC3_11] = DBSC3_1_QOS_R11_BASE, +	[DBSC3_12] = DBSC3_1_QOS_R12_BASE, +	[DBSC3_13] = DBSC3_1_QOS_R13_BASE, +	[DBSC3_14] = DBSC3_1_QOS_R14_BASE, +	[DBSC3_15] = DBSC3_1_QOS_R15_BASE, +}; + +static u32 dbsc3_1_w_qos_addr[DBSC3_NR] = { +	[DBSC3_00] = DBSC3_1_QOS_W0_BASE, +	[DBSC3_01] = DBSC3_1_QOS_W1_BASE, +	[DBSC3_02] = DBSC3_1_QOS_W2_BASE, +	[DBSC3_03] = DBSC3_1_QOS_W3_BASE, +	[DBSC3_04] = DBSC3_1_QOS_W4_BASE, +	[DBSC3_05] = DBSC3_1_QOS_W5_BASE, +	[DBSC3_06] = DBSC3_1_QOS_W6_BASE, +	[DBSC3_07] = DBSC3_1_QOS_W7_BASE, +	[DBSC3_08] = DBSC3_1_QOS_W8_BASE, +	[DBSC3_09] = DBSC3_1_QOS_W9_BASE, +	[DBSC3_10] = DBSC3_1_QOS_W10_BASE, +	[DBSC3_11] = DBSC3_1_QOS_W11_BASE, +	[DBSC3_12] = DBSC3_1_QOS_W12_BASE, +	[DBSC3_13] = DBSC3_1_QOS_W13_BASE, +	[DBSC3_14] = DBSC3_1_QOS_W14_BASE, +	[DBSC3_15] = DBSC3_1_QOS_W15_BASE, +}; + +void qos_init(void) +{ +	int i; +	struct r8a7791_s3c *s3c; +	struct r8a7791_s3c_qos *s3c_qos; +	struct r8a7791_dbsc3_qos *qos_addr; +	struct r8a7791_mxi *mxi; +	struct r8a7791_mxi_qos *mxi_qos; +	struct r8a7791_axi_qos *axi_qos; + +	/* DBSC DBADJ2 */ +	writel(0x20042004, DBSC3_0_DBADJ2); + +	/* S3C -QoS */ +	s3c = (struct r8a7791_s3c *)S3C_BASE; +	writel(0x00FF1B1D, &s3c->s3cadsplcr); +	writel(0x1F0D0C0C, &s3c->s3crorr); +	writel(0x1F0D0C0A, &s3c->s3cworr); + +	/* QoS Control Registers */ +	s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_CCI0_BASE; +	writel(0x00890089, &s3c_qos->s3cqos0); +	writel(0x20960010, &s3c_qos->s3cqos1); +	writel(0x20302030, &s3c_qos->s3cqos2); +	writel(0x20AA2200, &s3c_qos->s3cqos3); +	writel(0x00002032, &s3c_qos->s3cqos4); +	writel(0x20960010, &s3c_qos->s3cqos5); +	writel(0x20302030, &s3c_qos->s3cqos6); +	writel(0x20AA2200, &s3c_qos->s3cqos7); +	writel(0x00002032, &s3c_qos->s3cqos8); + +	s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_CCI1_BASE; +	writel(0x00890089, &s3c_qos->s3cqos0); +	writel(0x20960010, &s3c_qos->s3cqos1); +	writel(0x20302030, &s3c_qos->s3cqos2); +	writel(0x20AA2200, &s3c_qos->s3cqos3); +	writel(0x00002032, &s3c_qos->s3cqos4); +	writel(0x20960010, &s3c_qos->s3cqos5); +	writel(0x20302030, &s3c_qos->s3cqos6); +	writel(0x20AA2200, &s3c_qos->s3cqos7); +	writel(0x00002032, &s3c_qos->s3cqos8); + +	s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_MXI_BASE; +	writel(0x00820082, &s3c_qos->s3cqos0); +	writel(0x20960020, &s3c_qos->s3cqos1); +	writel(0x20302030, &s3c_qos->s3cqos2); +	writel(0x20AA20DC, &s3c_qos->s3cqos3); +	writel(0x00002032, &s3c_qos->s3cqos4); +	writel(0x20960020, &s3c_qos->s3cqos5); +	writel(0x20302030, &s3c_qos->s3cqos6); +	writel(0x20AA20DC, &s3c_qos->s3cqos7); +	writel(0x00002032, &s3c_qos->s3cqos8); + +	s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_AXI_BASE; +	writel(0x00820082, &s3c_qos->s3cqos0); +	writel(0x20960020, &s3c_qos->s3cqos1); +	writel(0x20302030, &s3c_qos->s3cqos2); +	writel(0x20AA20FA, &s3c_qos->s3cqos3); +	writel(0x00002032, &s3c_qos->s3cqos4); +	writel(0x20960020, &s3c_qos->s3cqos5); +	writel(0x20302030, &s3c_qos->s3cqos6); +	writel(0x20AA20FA, &s3c_qos->s3cqos7); +	writel(0x00002032, &s3c_qos->s3cqos8); + +	/* DBSC -QoS */ +	/* DBSC0 - Read */ +	for (i = DBSC3_00; i < DBSC3_NR; i++) { +		qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_0_r_qos_addr[i]; +		writel(0x00000002, &qos_addr->dblgcnt); +		writel(0x00002096, &qos_addr->dbtmval0); +		writel(0x00002064, &qos_addr->dbtmval1); +		writel(0x00002032, &qos_addr->dbtmval2); +		writel(0x00001FB0, &qos_addr->dbtmval3); +		writel(0x00000001, &qos_addr->dbrqctr); +		writel(0x00002078, &qos_addr->dbthres0); +		writel(0x0000204B, &qos_addr->dbthres1); +		writel(0x00001FE7, &qos_addr->dbthres2); +		writel(0x00000001, &qos_addr->dblgqon); +	} + +	/* DBSC0 - Write */ +	for (i = DBSC3_00; i < DBSC3_NR; i++) { +		qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_0_w_qos_addr[i]; +		writel(0x00000002, &qos_addr->dblgcnt); +		writel(0x000020EB, &qos_addr->dbtmval0); +		writel(0x0000206E, &qos_addr->dbtmval1); +		writel(0x00002050, &qos_addr->dbtmval2); +		writel(0x0000203A, &qos_addr->dbtmval3); +		writel(0x00000001, &qos_addr->dbrqctr); +		writel(0x00002078, &qos_addr->dbthres0); +		writel(0x0000205A, &qos_addr->dbthres1); +		writel(0x0000203C, &qos_addr->dbthres2); +		writel(0x00000001, &qos_addr->dblgqon); +	} + +	/* DBSC1 - Read */ +	for (i = DBSC3_00; i < DBSC3_NR; i++) { +		qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_1_r_qos_addr[i]; +		writel(0x00000002, &qos_addr->dblgcnt); +		writel(0x00002096, &qos_addr->dbtmval0); +		writel(0x00002064, &qos_addr->dbtmval1); +		writel(0x00002032, &qos_addr->dbtmval2); +		writel(0x00001FB0, &qos_addr->dbtmval3); +		writel(0x00000001, &qos_addr->dbrqctr); +		writel(0x00002078, &qos_addr->dbthres0); +		writel(0x0000204B, &qos_addr->dbthres1); +		writel(0x00001FE7, &qos_addr->dbthres2); +		writel(0x00000001, &qos_addr->dblgqon); +	} + +	/* DBSC1 - Write */ +	for (i = DBSC3_00; i < DBSC3_NR; i++) { +		qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_1_w_qos_addr[i]; +		writel(0x00000002, &qos_addr->dblgcnt); +		writel(0x000020EB, &qos_addr->dbtmval0); +		writel(0x0000206E, &qos_addr->dbtmval1); +		writel(0x00002050, &qos_addr->dbtmval2); +		writel(0x0000203A, &qos_addr->dbtmval3); +		writel(0x00000001, &qos_addr->dbrqctr); +		writel(0x00002078, &qos_addr->dbthres0); +		writel(0x0000205A, &qos_addr->dbthres1); +		writel(0x0000203C, &qos_addr->dbthres2); +		writel(0x00000001, &qos_addr->dblgqon); +	} + +	/* CCI-400 -QoS */ +	writel(0x20001000, CCI_400_MAXOT_1); +	writel(0x20001000, CCI_400_MAXOT_2); +	writel(0x0000000C, CCI_400_QOSCNTL_1); +	writel(0x0000000C, CCI_400_QOSCNTL_2); + +	/* MXI -QoS */ +	/* Transaction Control (MXI) */ +	mxi = (struct r8a7791_mxi *)MXI_BASE; +	writel(0x00000013, &mxi->mxrtcr); +	writel(0x00000013, &mxi->mxwtcr); +	writel(0x00780080, &mxi->mxsaar0); +	writel(0x02000800, &mxi->mxsaar1); + +	/* QoS Control (MXI) */ +	mxi_qos = (struct r8a7791_mxi_qos *)MXI_QOS_BASE; +	writel(0x0000000C, &mxi_qos->vspdu0); +	writel(0x0000000C, &mxi_qos->vspdu1); +	writel(0x0000000D, &mxi_qos->du0); +	writel(0x0000000D, &mxi_qos->du1); + +	/* AXI -QoS */ +	/* Transaction Control (MXI) */ +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SYX64TO128_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_AVB_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020A6, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_G2D_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020A6, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMP0_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002021, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMP1_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002037, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMUX0_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMUX1_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMUX2_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_LBS_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x0000214C, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUDS_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUM_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUS0_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUS1_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MTSB0_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002021, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MTSB1_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002021, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_PCI_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x0000214C, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_RTX_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDS0_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020A6, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDS1_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020A6, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB20_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB21_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB22_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB30_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x0000214C, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_AX2M_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_CC50_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002029, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_CCI_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_CS_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_DDM_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020A6, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_ETH_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MPXM_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SAT0_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SAT1_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDM0_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x0000214C, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDM1_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x0000214C, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_TRAB_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020A6, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_UDM0_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_UDM1_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	/* QoS Register (RT-AXI) */ +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_SHX_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_DBG_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_RDM_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002299, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_RDS_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002029, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_RTX64TO128_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_STPRO_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002029, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)RT_AXI_SY2RT_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	/* QoS Register (MP-AXI) */ +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_ADSP_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002037, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_ASDS0_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002014, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_ASDS1_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002014, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_MLP_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002014, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_MMUMP_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_SPU_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002053, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MP_AXI_SPUC_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x0000206E, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	/* QoS Register (SYS-AXI256) */ +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_AXI128TO256_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_SYX_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_MPX_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_MXI_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	/* QoS Register (CCI-AXI) */ +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUS0_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_SYX2_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUDS_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUM_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MXI_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x00002245, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUS1_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUMP_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002004, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000000, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	/* QoS Register (Media-AXI) */ +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_MXR_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x000020DC, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x000020AA, &axi_qos->qosthres0); +	writel(0x00002032, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_MXW_BASE; +	writel(0x00000002, &axi_qos->qosconf); +	writel(0x000020DC, &axi_qos->qosctset0); +	writel(0x00002096, &axi_qos->qosctset1); +	writel(0x00002030, &axi_qos->qosctset2); +	writel(0x00002030, &axi_qos->qosctset3); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x000020AA, &axi_qos->qosthres0); +	writel(0x00002032, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_JPR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_JPW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_TDMR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_TDMW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1CR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1CW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU1CR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU1CW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002190, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VIN0W_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP0R_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP0W_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMSR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMSW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1R_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1W_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP1R_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP1W_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMRR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMRW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD0R_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD0W_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD1R_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD1W_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x000020C8, &axi_qos->qosctset0); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_DU0R_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002063, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_DU0W_BASE; +	writel(0x00000000, &axi_qos->qosconf); +	writel(0x00002063, &axi_qos->qosctset0); +	writel(0x00000001, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0CR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002073, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0CW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002073, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0VR_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002073, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0VW_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002073, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); + +	axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VPC0R_BASE; +	writel(0x00000001, &axi_qos->qosconf); +	writel(0x00002073, &axi_qos->qosctset0); +	writel(0x00000020, &axi_qos->qosreqctr); +	writel(0x00002064, &axi_qos->qosthres0); +	writel(0x00002004, &axi_qos->qosthres1); +	writel(0x00000001, &axi_qos->qosthres2); +	writel(0x00000001, &axi_qos->qosqon); +} diff --git a/board/renesas/koelsch/qos.h b/board/renesas/koelsch/qos.h new file mode 100644 index 000000000..9a6c0461b --- /dev/null +++ b/board/renesas/koelsch/qos.h @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2013 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#ifndef __QOS_H__ +#define __QOS_H__ + +void qos_init(void); + +#endif diff --git a/boards.cfg b/boards.cfg index 05eaea2e7..8ac1fdd46 100644 --- a/boards.cfg +++ b/boards.cfg @@ -340,6 +340,8 @@ Active  arm         armv7          rmobile     atmark-techno   armadillo-800eva  Active  arm         armv7          rmobile     kmc             kzm9g               kzm9g                                -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>:Tetsuyuki Kobayashi <koba@kmckk.co.jp>  Active  arm         armv7          rmobile     renesas         lager               lager                                -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>  Active  arm         armv7          rmobile     renesas         lager               lager_nor                            lager:NORFLASH                                                                                                                    Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> +Active  arm         armv7          rmobile     renesas         koelsch             koelsch                              -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> +Active  arm         armv7          rmobile     renesas         koelsch             koelsch_nor                          koelsch:NORFLASH                                                                                                                  Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>  Active  arm         armv7          s5pc1xx     samsung         goni                s5p_goni                             -                                                                                                                                 Minkyu Kang <mk7.kang@samsung.com>  Active  arm         armv7          s5pc1xx     samsung         smdkc100            smdkc100                             -                                                                                                                                 Minkyu Kang <mk7.kang@samsung.com>  Active  arm         armv7          socfpga     altera          socfpga             socfpga_cyclone5                     -                                                                                                                                 - diff --git a/include/configs/koelsch.h b/include/configs/koelsch.h new file mode 100644 index 000000000..59c494854 --- /dev/null +++ b/include/configs/koelsch.h @@ -0,0 +1,133 @@ +/* + * include/configs/koelsch.h + * + * Copyright (C) 2013 Renesas Electronics Corporation + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#ifndef __KOELSCH_H +#define __KOELSCH_H + +#undef DEBUG +#define CONFIG_ARMV7 +#define CONFIG_R8A7791 +#define CONFIG_RMOBILE +#define CONFIG_RMOBILE_BOARD_STRING "Koelsch" +#define CONFIG_SH_GPIO_PFC + +#include <asm/arch/rmobile.h> + +#define	CONFIG_CMD_EDITENV +#define	CONFIG_CMD_SAVEENV +#define CONFIG_CMD_MEMORY +#define CONFIG_CMD_DFL +#define CONFIG_CMD_SDRAM +#define CONFIG_CMD_RUN +#define CONFIG_CMD_LOADS +#define CONFIG_CMD_BOOTZ +#define	CONFIG_CMD_FLASH + +#define	CONFIG_CMDLINE_TAG +#define	CONFIG_SETUP_MEMORY_TAGS +#define	CONFIG_INITRD_TAG +#define	CONFIG_CMDLINE_EDITING + +#define CONFIG_OF_LIBFDT +#define BOARD_LATE_INIT + +#define CONFIG_BAUDRATE		38400 +#define CONFIG_BOOTDELAY	3 +#define CONFIG_BOOTARGS		"" + +#define CONFIG_VERSION_VARIABLE +#undef	CONFIG_SHOW_BOOT_PROGRESS + +#define CONFIG_ARCH_CPU_INIT +#define CONFIG_DISPLAY_CPUINFO +#define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_USE_ARCH_MEMSET +#define CONFIG_USE_ARCH_MEMCPY +#define CONFIG_TMU_TIMER + +/* STACK */ +#define CONFIG_SYS_INIT_SP_ADDR		0xE633fffc +#define STACK_AREA_SIZE				0xC000 +#define LOW_LEVEL_MERAM_STACK	\ +		(CONFIG_SYS_INIT_SP_ADDR + STACK_AREA_SIZE - 4) + +/* MEMORY */ +#define KOELSCH_SDRAM_BASE	0x40000000 +#define KOELSCH_SDRAM_SIZE	(2048u * 1024 * 1024) +#define KOELSCH_UBOOT_SDRAM_SIZE	(512 * 1024 * 1024) + +#define CONFIG_SYS_LONGHELP +#define CONFIG_SYS_CBSIZE		256 +#define CONFIG_SYS_PBSIZE		256 +#define CONFIG_SYS_MAXARGS		16 +#define CONFIG_SYS_BARGSIZE		512 +#define CONFIG_SYS_BAUDRATE_TABLE	{ 38400, 115200 } + +/* SCIF */ +#define CONFIG_SCIF_CONSOLE +#define CONFIG_CONS_SCIF0 +#define SCIF0_BASE		0xe6e60000 +#undef	CONFIG_SYS_CONSOLE_INFO_QUIET +#undef	CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE +#undef	CONFIG_SYS_CONSOLE_ENV_OVERWRITE + +#define CONFIG_SYS_MEMTEST_START	(KOELSCH_SDRAM_BASE) +#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + \ +					 504 * 1024 * 1024) +#undef	CONFIG_SYS_ALT_MEMTEST +#undef	CONFIG_SYS_MEMTEST_SCRATCH +#undef	CONFIG_SYS_LOADS_BAUD_CHANGE + +#define CONFIG_SYS_SDRAM_BASE		(KOELSCH_SDRAM_BASE) +#define CONFIG_SYS_SDRAM_SIZE		(KOELSCH_UBOOT_SDRAM_SIZE) +#define CONFIG_SYS_LOAD_ADDR		(CONFIG_SYS_SDRAM_BASE + 0x7fc0) +#define CONFIG_NR_DRAM_BANKS		1 + +#define CONFIG_SYS_MONITOR_BASE		0x00000000 +#define CONFIG_SYS_MONITOR_LEN		(256 * 1024) +#define CONFIG_SYS_MALLOC_LEN		(1 * 1024 * 1024) +#define CONFIG_SYS_GBL_DATA_SIZE	(256) +#define CONFIG_SYS_BOOTMAPSZ		(8 * 1024 * 1024) + +/* FLASH */ +#define CONFIG_SYS_TEXT_BASE	0x00000000 +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_SYS_FLASH_CFI_WIDTH	FLASH_CFI_16BIT +#define	CONFIG_FLASH_CFI_DRIVER +#define	CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS +#define	CONFIG_FLASH_SHOW_PROGRESS	45 +#define CONFIG_SYS_FLASH_BASE		0x00000000 +#define	CONFIG_SYS_FLASH_SIZE		0x04000000	/* 64 MB */ +#define CONFIG_SYS_MAX_FLASH_SECT	1024 +#define CONFIG_SYS_MAX_FLASH_BANKS	1 +#define CONFIG_SYS_FLASH_BANKS_LIST	{ (CONFIG_SYS_FLASH_BASE) } +#define	CONFIG_SYS_FLASH_BANKS_SIZES	{ (CONFIG_SYS_FLASH_SIZE) } +#define CONFIG_SYS_FLASH_ERASE_TOUT	3000 +#define CONFIG_SYS_FLASH_WRITE_TOUT	3000 +#define CONFIG_SYS_FLASH_LOCK_TOUT	3000 +#define CONFIG_SYS_FLASH_UNLOCK_TOUT	3000 + +/* ENV setting */ +#define CONFIG_ENV_IS_IN_FLASH +#define CONFIG_ENV_OVERWRITE	1 +#define CONFIG_ENV_SECT_SIZE	(256 * 1024) +#define CONFIG_ENV_ADDR		(CONFIG_SYS_FLASH_BASE + \ +				 CONFIG_SYS_MONITOR_LEN) +#define CONFIG_ENV_OFFSET	(CONFIG_ENV_ADDR) +#define CONFIG_ENV_SIZE		(CONFIG_ENV_SECT_SIZE) +#define CONFIG_ENV_SIZE_REDUND	(CONFIG_SYS_MONITOR_LEN) + +/* Board Clock */ +#define	CONFIG_SYS_CLK_FREQ	10000000 +#define CONFIG_SH_TMU_CLK_FREQ	CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ	14745600 +#define CONFIG_SYS_TMU_CLK_DIV	4 +#define CONFIG_SYS_HZ		1000 + +#endif	/* __KOELSCH_H */ |