Commit 9dcff75d authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'icc-5.19-rc1' of...

Merge tag 'icc-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc

 into char-misc-next

Georgi writes:

interconnect changes for 5.19

These are the interconnect changes for the 5.19-rc1 merge window
consisting of driver updates.

 Driver changes:
 - New driver for SC8280XP
 - New driver for SDX65
 - SC8180X driver fixes
 - Constify various data structures in that are never modified
 - Fix clock rate caching in RPM drivers.
 - Misc fixes and clean-ups

Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>

* tag 'icc-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc:
  dt-bindings: interconnect: Remove sc7180/sdx55 ipa compatibles
  interconnect: qcom: sc8180x: Reformat node and bcm definitions
  interconnect: qcom: sc8180x: Mark some BCMs keepalive
  interconnect: qcom: sc8180x: Fix QUP0 nodes
  interconnect: qcom: sc8180x: Modernize sc8180x probe
  dt-bindings: interconnect: Add SC8180X QUP0 virt provider
  interconnect: qcom: icc-rpm: Cache every clock rate
  interconnect: qcom: icc-rpm: Fix for cached clock rate
  interconnect: qcom: sc8280xp: constify qcom_icc_bcm pointers
  interconnect: qcom: sc8280xp: constify icc_node pointers
  interconnect: qcom: sc8280xp: constify qcom_icc_desc
  interconnect: qcom: Add SDX65 interconnect provider driver
  dt-bindings: interconnect: Add Qualcomm SDX65 DT bindings
  interconnect: qcom: constify qcom_icc_bcm pointers
  interconnect: qcom: constify icc_node pointers
  interconnect: qcom: constify qcom_icc_desc
  interconnect: qcom: Add SC8280XP interconnect provider
  dt-bindings: interconnect: qcom: Add sc8280xp binding
parents 6646b95a 3be0ec65
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ properties:
      - qcom,sc7180-config-noc
      - qcom,sc7180-dc-noc
      - qcom,sc7180-gem-noc
      - qcom,sc7180-ipa-virt
      - qcom,sc7180-mc-virt
      - qcom,sc7180-mmss-noc
      - qcom,sc7180-npu-noc
@@ -59,7 +58,20 @@ properties:
      - qcom,sc8180x-ipa-virt
      - qcom,sc8180x-mc-virt
      - qcom,sc8180x-mmss-noc
      - qcom,sc8180x-qup-virt
      - qcom,sc8180x-system-noc
      - qcom,sc8280xp-aggre1-noc
      - qcom,sc8280xp-aggre2-noc
      - qcom,sc8280xp-clk-virt
      - qcom,sc8280xp-config-noc
      - qcom,sc8280xp-dc-noc
      - qcom,sc8280xp-gem-noc
      - qcom,sc8280xp-lpass-ag-noc
      - qcom,sc8280xp-mc-virt
      - qcom,sc8280xp-mmss-noc
      - qcom,sc8280xp-nspa-noc
      - qcom,sc8280xp-nspb-noc
      - qcom,sc8280xp-system-noc
      - qcom,sdm845-aggre1-noc
      - qcom,sdm845-aggre2-noc
      - qcom,sdm845-config-noc
@@ -68,10 +80,12 @@ properties:
      - qcom,sdm845-mem-noc
      - qcom,sdm845-mmss-noc
      - qcom,sdm845-system-noc
      - qcom,sdx55-ipa-virt
      - qcom,sdx55-mc-virt
      - qcom,sdx55-mem-noc
      - qcom,sdx55-system-noc
      - qcom,sdx65-mc-virt
      - qcom,sdx65-mem-noc
      - qcom,sdx65-system-noc
      - qcom,sm8150-aggre1-noc
      - qcom,sm8150-aggre2-noc
      - qcom,sm8150-camnoc-noc
+18 −0
Original line number Diff line number Diff line
@@ -110,6 +110,15 @@ config INTERCONNECT_QCOM_SC8180X
	  This is a driver for the Qualcomm Network-on-Chip on sc8180x-based
	  platforms.

config INTERCONNECT_QCOM_SC8280XP
	tristate "Qualcomm SC8280XP interconnect driver"
	depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
	select INTERCONNECT_QCOM_RPMH
	select INTERCONNECT_QCOM_BCM_VOTER
	help
	  This is a driver for the Qualcomm Network-on-Chip on SC8280XP-based
	  platforms.

config INTERCONNECT_QCOM_SDM660
	tristate "Qualcomm SDM660 interconnect driver"
	depends on INTERCONNECT_QCOM
@@ -137,6 +146,15 @@ config INTERCONNECT_QCOM_SDX55
	  This is a driver for the Qualcomm Network-on-Chip on sdx55-based
	  platforms.

config INTERCONNECT_QCOM_SDX65
	tristate "Qualcomm SDX65 interconnect driver"
	depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
	select INTERCONNECT_QCOM_RPMH
	select INTERCONNECT_QCOM_BCM_VOTER
	help
	  This is a driver for the Qualcomm Network-on-Chip on sdx65-based
	  platforms.

config INTERCONNECT_QCOM_SM8150
	tristate "Qualcomm SM8150 interconnect driver"
	depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
+4 −0
Original line number Diff line number Diff line
@@ -12,9 +12,11 @@ icc-rpmh-obj := icc-rpmh.o
qnoc-sc7180-objs			:= sc7180.o
qnoc-sc7280-objs                        := sc7280.o
qnoc-sc8180x-objs			:= sc8180x.o
qnoc-sc8280xp-objs			:= sc8280xp.o
qnoc-sdm660-objs			:= sdm660.o
qnoc-sdm845-objs			:= sdm845.o
qnoc-sdx55-objs				:= sdx55.o
qnoc-sdx65-objs				:= sdx65.o
qnoc-sm8150-objs			:= sm8150.o
qnoc-sm8250-objs			:= sm8250.o
qnoc-sm8350-objs			:= sm8350.o
@@ -33,9 +35,11 @@ obj-$(CONFIG_INTERCONNECT_QCOM_RPMH) += icc-rpmh.o
obj-$(CONFIG_INTERCONNECT_QCOM_SC7180) += qnoc-sc7180.o
obj-$(CONFIG_INTERCONNECT_QCOM_SC7280) += qnoc-sc7280.o
obj-$(CONFIG_INTERCONNECT_QCOM_SC8180X) += qnoc-sc8180x.o
obj-$(CONFIG_INTERCONNECT_QCOM_SC8280XP) += qnoc-sc8280xp.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDM660) += qnoc-sdm660.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDM845) += qnoc-sdm845.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDX55) += qnoc-sdx55.o
obj-$(CONFIG_INTERCONNECT_QCOM_SDX65) += qnoc-sdx65.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8150) += qnoc-sm8150.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8250) += qnoc-sm8250.o
obj-$(CONFIG_INTERCONNECT_QCOM_SM8350) += qnoc-sm8350.o
+10 −6
Original line number Diff line number Diff line
@@ -274,20 +274,19 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst)
	do_div(rate, qn->buswidth);
	rate = min_t(u64, rate, LONG_MAX);

	if (qn->rate == rate)
		return 0;

	for (i = 0; i < qp->num_clks; i++) {
		if (qp->bus_clk_rate[i] == rate)
			continue;

		ret = clk_set_rate(qp->bus_clks[i].clk, rate);
		if (ret) {
			pr_err("%s clk_set_rate error: %d\n",
			       qp->bus_clks[i].id, ret);
			return ret;
		}
		qp->bus_clk_rate[i] = rate;
	}

	qn->rate = rate;

	return 0;
}

@@ -301,7 +300,7 @@ int qnoc_probe(struct platform_device *pdev)
	const struct qcom_icc_desc *desc;
	struct icc_onecell_data *data;
	struct icc_provider *provider;
	struct qcom_icc_node **qnodes;
	struct qcom_icc_node * const *qnodes;
	struct qcom_icc_provider *qp;
	struct icc_node *node;
	size_t num_nodes, i;
@@ -332,6 +331,11 @@ int qnoc_probe(struct platform_device *pdev)
	if (!qp)
		return -ENOMEM;

	qp->bus_clk_rate = devm_kcalloc(dev, cd_num, sizeof(*qp->bus_clk_rate),
					GFP_KERNEL);
	if (!qp->bus_clk_rate)
		return -ENOMEM;

	data = devm_kzalloc(dev, struct_size(data, nodes, num_nodes),
			    GFP_KERNEL);
	if (!data)
+3 −3
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ enum qcom_icc_type {
 * @type: the ICC provider type
 * @qos_offset: offset to QoS registers
 * @regmap: regmap for QoS registers read/write access
 * @bus_clk_rate: bus clock rate in Hz
 */
struct qcom_icc_provider {
	struct icc_provider provider;
@@ -33,6 +34,7 @@ struct qcom_icc_provider {
	enum qcom_icc_type type;
	struct regmap *regmap;
	unsigned int qos_offset;
	u64 *bus_clk_rate;
	struct clk_bulk_data bus_clks[];
};

@@ -66,7 +68,6 @@ struct qcom_icc_qos {
 * @mas_rpm_id:	RPM id for devices that are bus masters
 * @slv_rpm_id:	RPM id for devices that are bus slaves
 * @qos: NoC QoS setting parameters
 * @rate: current bus clock rate in Hz
 */
struct qcom_icc_node {
	unsigned char *name;
@@ -77,11 +78,10 @@ struct qcom_icc_node {
	int mas_rpm_id;
	int slv_rpm_id;
	struct qcom_icc_qos qos;
	u64 rate;
};

struct qcom_icc_desc {
	struct qcom_icc_node **nodes;
	struct qcom_icc_node * const *nodes;
	size_t num_nodes;
	const char * const *clocks;
	size_t num_clocks;
Loading