Commit d875f936 authored by Marek Vasut's avatar Marek Vasut
Browse files

rcar_gen3: drivers: qos: Add function to configure DBSC QoS settings from a table



The DBSC QoS settings can be programmed by iterating over a table with
register-value pairs and writing those to the registers, add function
to do just that. Subsequent patches will convert the DBSC QoS setting
functions for each SoC to this new function.
Signed-off-by: default avatarMarek Vasut <marek.vasut+renesas@gmail.com>
Change-Id: I949c46a0f032661a58000cb5f7829349e973438c
parent b7849164
......@@ -128,7 +128,15 @@ typedef struct {
uint64_t value;
} mstat_slot_t;
struct rcar_gen3_dbsc_qos_settings {
uint32_t reg;
uint32_t val;
};
extern uint32_t qos_init_ddr_ch;
extern uint8_t qos_init_ddr_phyvalid;
void rcar_qos_dbsc_setting(struct rcar_gen3_dbsc_qos_settings *qos,
unsigned int qos_size, bool dbsc_wren);
#endif /* QOS_COMMON_H */
......@@ -11,6 +11,7 @@
#include "qos_init.h"
#include "qos_common.h"
#include "qos_reg.h"
#if RCAR_LSI == RCAR_AUTO
#include "H3/qos_init_h3_v10.h"
#include "H3/qos_init_h3_v11.h"
......@@ -389,3 +390,20 @@ uint32_t get_refperiod(void)
return refperiod;
}
#endif
void rcar_qos_dbsc_setting(struct rcar_gen3_dbsc_qos_settings *qos,
unsigned int qos_size, bool dbsc_wren)
{
int i;
/* Register write enable */
if (dbsc_wren)
io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
for (i = 0; i < qos_size; i++)
io_write_32(qos[i].reg, qos[i].val);
/* Register write protect */
if (dbsc_wren)
io_write_32(DBSC_DBSYSCNT0, 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