summaryrefslogtreecommitdiff
path: root/drivers/platform/msm/msm_bus/msm_bus_noc.c
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-07-26 09:49:05 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-07-26 09:49:05 -0700
commit073b22a0e1d44f6f4e2ebc9801d556369e7fe738 (patch)
tree40c4e8448a07d5974dbdb69fd69c580e61cc7612 /drivers/platform/msm/msm_bus/msm_bus_noc.c
parentea43cb4aa302993af3947af04b494c708d512d1a (diff)
parent5a398a5b7cbeee984c3aca2022db43ce036c5851 (diff)
Merge "msm: msm_bus: Rules engine for adhoc driver"
Diffstat (limited to 'drivers/platform/msm/msm_bus/msm_bus_noc.c')
-rw-r--r--drivers/platform/msm/msm_bus/msm_bus_noc.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/drivers/platform/msm/msm_bus/msm_bus_noc.c b/drivers/platform/msm/msm_bus/msm_bus_noc.c
index 1124b04f7b8c..cea72ad39dbf 100644
--- a/drivers/platform/msm/msm_bus/msm_bus_noc.c
+++ b/drivers/platform/msm/msm_bus/msm_bus_noc.c
@@ -642,8 +642,8 @@ static int msm_bus_noc_qos_init(struct msm_bus_node_device_type *info,
int ret = 0;
int i;
- prio.p1 = info->node_info->prio1;
- prio.p0 = info->node_info->prio0;
+ prio.p1 = info->node_info->qos_params.prio1;
+ prio.p0 = info->node_info->qos_params.prio0;
if (!info->node_info->qport) {
MSM_BUS_DBG("No QoS Ports to init\n");
@@ -652,26 +652,28 @@ static int msm_bus_noc_qos_init(struct msm_bus_node_device_type *info,
}
for (i = 0; i < info->node_info->num_qports; i++) {
- if (info->node_info->mode != NOC_QOS_MODE_BYPASS) {
+ if (info->node_info->qos_params.mode != NOC_QOS_MODE_BYPASS) {
noc_set_qos_priority(qos_base, qos_off,
info->node_info->qport[i], qos_delta,
&prio);
- if (info->node_info->mode != NOC_QOS_MODE_FIXED) {
+ if (info->node_info->qos_params.mode !=
+ NOC_QOS_MODE_FIXED) {
struct msm_bus_noc_qos_bw qbw;
- qbw.ws = info->node_info->ws;
+ qbw.ws = info->node_info->qos_params.ws;
qbw.bw = 0;
msm_bus_noc_set_qos_bw(qos_base, qos_off,
- qos_freq,
- info->node_info->qport[i],
- qos_delta,
- info->node_info->mode, &qbw);
+ qos_freq,
+ info->node_info->qport[i],
+ qos_delta,
+ info->node_info->qos_params.mode,
+ &qbw);
}
}
noc_set_qos_mode(qos_base, qos_off, info->node_info->qport[i],
- qos_delta, info->node_info->mode,
- (1 << info->node_info->mode));
+ qos_delta, info->node_info->qos_params.mode,
+ (1 << info->node_info->qos_params.mode));
}
err_qos_init:
return ret;
@@ -687,7 +689,10 @@ static int msm_bus_noc_set_bw(struct msm_bus_node_device_type *dev,
int i;
struct msm_bus_node_info_type *info = dev->node_info;
- if (info && info->num_qports) {
+ if (info && info->num_qports &&
+ ((info->qos_params.mode == NOC_QOS_MODE_REGULATOR) ||
+ (info->qos_params.mode ==
+ NOC_QOS_MODE_LIMITER))) {
struct msm_bus_noc_qos_bw qos_bw;
bw = msm_bus_div64(info->num_qports,
@@ -700,10 +705,10 @@ static int msm_bus_noc_set_bw(struct msm_bus_node_device_type *dev,
}
qos_bw.bw = bw;
- qos_bw.ws = info->ws;
+ qos_bw.ws = info->qos_params.ws;
msm_bus_noc_set_qos_bw(qos_base, qos_off, qos_freq,
info->qport[i], qos_delta,
- info->mode, &qos_bw);
+ info->qos_params.mode, &qos_bw);
MSM_BUS_DBG("NOC: QoS: Update mas_bw: ws: %u\n",
qos_bw.ws);
}
@@ -736,6 +741,7 @@ int msm_bus_noc_set_ops(struct msm_bus_node_device_type *bus_dev)
else {
bus_dev->fabdev->noc_ops.qos_init = msm_bus_noc_qos_init;
bus_dev->fabdev->noc_ops.set_bw = msm_bus_noc_set_bw;
+ bus_dev->fabdev->noc_ops.limit_mport = NULL;
}
return 0;
}