Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55e22c68 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ARM: dts: msm: Enable QoS programming for Aggre0 masters on msm8996"

parents 9ee35ff7 c5e901ee
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@
			label = "fab-a0noc";
			qcom,fab-dev;
			qcom,base-name = "a0noc-base";
			qcom,bypass-qos-prg;
			qcom,bus-type = <1>;
			qcom,qos-off = <4096>;
			qcom,base-offset = <12288>;
@@ -52,6 +51,16 @@
			coresight-outports = <0>;
			coresight-child-list = <&funnel_in1>;
			coresight-child-ports = <7>;
			aggre0-snoc-axi-no-rate-supply =<&gdsc_aggre0_noc>;
			qcom,node-qos-clks {
				clock-names = "aggre0-snoc-axi-no-rate",
				"aggre0-cnoc-ahb-no-rate",
				"aggre0-noc-mpu-cfg-no-rate";
				clocks =
				<&clock_gcc clk_gcc_aggre0_snoc_axi_clk>,
				<&clock_gcc clk_gcc_aggre0_cnoc_ahb_clk>,
				<&clock_gcc clk_gcc_aggre0_noc_mpu_cfg_ahb_clk>;
			};
		};

		fab_a1noc: fab-a1noc {
+5 −5
Original line number Diff line number Diff line
@@ -1175,12 +1175,12 @@ static int msm_bus_device_probe(struct platform_device *pdev)
		goto exit_device_probe;
	}

	/*
	 * Setup the QoS for the nodes, don't check the error codes as we
	 * defer QoS programming to the first transaction in cases of failure
	 * and we want to continue the probe.
	 */
	ret = bus_for_each_dev(&msm_bus_type, NULL, NULL, msm_bus_dev_init_qos);
	if (ret) {
		MSM_BUS_ERR("%s: Error during qos init", __func__);
		goto exit_device_probe;
	}


	/* Register the arb layer ops */
	msm_bus_arb_setops_adhoc(&arb_ops);
+14 −8
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ static int msm_bus_of_parse_clk_array(struct device_node *dev_node,

	clks = of_property_count_strings(dev_node, "clock-names");
	if (clks < 0) {
		pr_info("%s: No qos clks node %d\n", __func__, id);
		dev_err(&pdev->dev, "No qos clks node %d\n", id);
		ret = clks;
		goto exit_of_parse_clk_array;
	}
@@ -237,7 +237,7 @@ static int msm_bus_of_parse_clk_array(struct device_node *dev_node,
			(clks * sizeof(struct nodeclk)), GFP_KERNEL);

	if (!(*clk_arr)) {
		pr_err("%s: Error allocating clk nodes for %d\n", __func__, id);
		dev_err(&pdev->dev, "Error allocating clk nodes for %d\n", id);
		ret = -ENOMEM;
		*num_clks = 0;
		goto exit_of_parse_clk_array;
@@ -596,14 +596,20 @@ static int get_bus_node_device_data(
					MAX_REG_NAME, "%c", '\0');
		}

		qos_clk_node = of_find_node_by_name(dev_node,
		qos_clk_node = of_get_child_by_name(dev_node,
						"qcom,node-qos-clks");

		if (qos_clk_node)
			msm_bus_of_parse_clk_array(qos_clk_node, dev_node, pdev,
		if (qos_clk_node) {
			if (msm_bus_of_parse_clk_array(qos_clk_node, dev_node,
						pdev,
						&node_device->node_qos_clks,
						&node_device->num_node_qos_clks,
			node_device->node_info->id);
						node_device->node_info->id)) {
				dev_info(&pdev->dev, "Bypass QoS programming");
				node_device->fabdev->bypass_qos_prg = true;
			}
			of_node_put(qos_clk_node);
		}

		if (msmbus_coresight_init_adhoc(pdev, dev_node))
			dev_warn(&pdev->dev,