aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut+renesas@gmail.com>2019-06-14 16:08:19 +0200
committerMarek Vasut <marek.vasut+renesas@gmail.com>2019-06-17 15:13:22 +0200
commitf28f092fd8927066180b7aee7a7554420c7c129e (patch)
tree6a05c00b421b021a2aada10b1e6d50c9c3c79276 /drivers
parented46cdb4b76ee5b6c312e6013a1479bf753f9870 (diff)
downloadplatform_external_arm-trusted-firmware-f28f092fd8927066180b7aee7a7554420c7c129e.tar.gz
platform_external_arm-trusted-firmware-f28f092fd8927066180b7aee7a7554420c7c129e.tar.bz2
platform_external_arm-trusted-firmware-f28f092fd8927066180b7aee7a7554420c7c129e.zip
rcar_gen3: drivers: qos: M3W: Configure DBSC QoS from a table
Convert the DBSC QoS setting function to a simple table of register-value pairs and pass it to common rcar_qos_dbsc_setting() to write those values to matching registers. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Change-Id: Ie2cbfdacf6d1c7eca4498ab7787b866a83660485
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v10.c69
-rw-r--r--drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v11.c77
-rw-r--r--drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v30.c83
3 files changed, 110 insertions, 119 deletions
diff --git a/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v10.c b/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v10.c
index 5d6bd29cb..a8264cb2a 100644
--- a/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v10.c
+++ b/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v10.c
@@ -16,51 +16,50 @@
#include "qos_init_m3_v10_mstat.h"
-static void dbsc_setting(void)
-{
+struct rcar_gen3_dbsc_qos_settings m3_v10_qos[] = {
/* BUFCAM settings */
/* DBSC_DBCAM0CNF0 not set */
- io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
- io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
- io_write_32(DBSC_DBCAM0CNF3, 0x00000000);
- io_write_32(DBSC_DBSCHCNT0, 0x080F0037);
+ { DBSC_DBCAM0CNF1, 0x00043218 },
+ { DBSC_DBCAM0CNF2, 0x000000F4 },
+ { DBSC_DBCAM0CNF3, 0x00000000 },
+ { DBSC_DBSCHCNT0, 0x080F0037 },
/* DBSC_DBSCHCNT1 not set */
- io_write_32(DBSC_DBSCHSZ0, 0x00000001);
- io_write_32(DBSC_DBSCHRW0, 0x22421111);
+ { 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, 0x00000300);
- io_write_32(DBSC_DBSCHQOS91, 0x000002F0);
- io_write_32(DBSC_DBSCHQOS92, 0x00000200);
- io_write_32(DBSC_DBSCHQOS93, 0x00000100);
- 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);
-}
+ { 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_m3_v10(void)
{
- dbsc_setting();
+ rcar_qos_dbsc_setting(m3_v10_qos, ARRAY_SIZE(m3_v10_qos), false);
/* DRAM Split Address mapping */
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH
diff --git a/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v11.c b/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v11.c
index f3d0d841f..22fd83a90 100644
--- a/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v11.c
+++ b/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v11.c
@@ -60,53 +60,52 @@
#endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
#endif
-static void dbsc_setting(void)
-{
+struct rcar_gen3_dbsc_qos_settings m3_v11_qos[] = {
/* BUFCAM settings */
- io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
- io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
- io_write_32(DBSC_DBCAM0CNF3, 0x00000000);
- 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_DBCAM0CNF3, 0x00000000 },
+ { 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_DBSCHQOS120, 0x00000040);
- io_write_32(DBSC_DBSCHQOS121, 0x00000030);
- io_write_32(DBSC_DBSCHQOS122, 0x00000020);
- io_write_32(DBSC_DBSCHQOS123, 0x00000010);
- 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);
-}
+ { 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_DBSCHQOS120, 0x00000040 },
+ { DBSC_DBSCHQOS121, 0x00000030 },
+ { DBSC_DBSCHQOS122, 0x00000020 },
+ { DBSC_DBSCHQOS123, 0x00000010 },
+ { 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_m3_v11(void)
{
- dbsc_setting();
+ rcar_qos_dbsc_setting(m3_v11_qos, ARRAY_SIZE(m3_v11_qos), false);
/* DRAM Split Address mapping */
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH
diff --git a/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v30.c b/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v30.c
index 7d70225bf..e300fd541 100644
--- a/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v30.c
+++ b/drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v30.c
@@ -60,59 +60,52 @@
#endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
#endif
-static void dbsc_setting(void)
-{
- /* Register write enable */
- io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
-
+struct rcar_gen3_dbsc_qos_settings m3_v30_qos[] = {
/* BUFCAM settings */
- io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
- io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
- io_write_32(DBSC_DBCAM0CNF3, 0x00000000);
- 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_DBCAM0CNF3, 0x00000000 },
+ { 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_DBSCHQOS120, 0x00000040);
- io_write_32(DBSC_DBSCHQOS121, 0x00000030);
- io_write_32(DBSC_DBSCHQOS122, 0x00000020);
- io_write_32(DBSC_DBSCHQOS123, 0x00000010);
- 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_DBSCHQOS120, 0x00000040 },
+ { DBSC_DBSCHQOS121, 0x00000030 },
+ { DBSC_DBSCHQOS122, 0x00000020 },
+ { DBSC_DBSCHQOS123, 0x00000010 },
+ { 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_m3_v30(void)
{
- dbsc_setting();
+ rcar_qos_dbsc_setting(m3_v30_qos, ARRAY_SIZE(m3_v30_qos), true);
/* DRAM Split Address mapping */
#if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH