const struct ipa_interconnect_data *data)
{
struct icc_path *path;
+ int ret;
path = of_icc_get(dev, data->name);
if (IS_ERR(path)) {
- int ret = PTR_ERR(path);
-
+ ret = PTR_ERR(path);
dev_err_probe(dev, ret, "error getting %s interconnect\n",
data->name);
return ret;
}
+ /* All interconnects are initially disabled */
+ (void)icc_disable(path);
+
+ /* Set the bandwidth values to be used when enabled */
+ ret = icc_set_bw(path, data->average_bandwidth, data->peak_bandwidth);
+ if (ret) {
+ dev_err(dev, "error %d setting %s interconnect bandwidths\n",
+ ret, data->name);
+
+ return ret;
+ }
+
interconnect->path = path;
interconnect->name = data->name;
interconnect->avg_bw = data->average_bandwidth;
interconnect = power->interconnect;
for (i = 0; i < power->interconnect_count; i++) {
- ret = icc_set_bw(interconnect->path,
- interconnect->avg_bw,
- interconnect->peak_bw);
+ ret = icc_enable(interconnect->path);
if (ret) {
dev_err(&ipa->pdev->dev,
"error %d enabling %s interconnect\n",
out_unwind:
while (interconnect-- > power->interconnect)
- (void)icc_set_bw(interconnect->path, 0, 0);
+ (void)icc_disable(interconnect->path);
return ret;
}
interconnect = power->interconnect + count;
while (count--) {
interconnect--;
- ret = icc_set_bw(interconnect->path, 0, 0);
+ ret = icc_disable(interconnect->path);
if (ret) {
dev_err(dev, "error %d disabling %s interconnect\n",
ret, interconnect->name);