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

Commit fe6b73f5 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: add LOWSVS support on sdm845"

parents d5a5780f 0e66d4f4
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -2793,7 +2793,7 @@
		qcom,smmu-s1-bypass;
		qcom,bandwidth-vote-for-ipa;
		qcom,msm-bus,name = "ipa";
		qcom,msm-bus,num-cases = <4>;
		qcom,msm-bus,num-cases = <5>;
		qcom,msm-bus,num-paths = <4>;
		qcom,msm-bus,vectors-KBps =
		/* No vote */
@@ -2801,22 +2801,28 @@
			<90 585 0 0>,
			<1 676 0 0>,
			<143 777 0 0>,
		/* SVS2 */
			<90 512 80000 600000>,
			<90 585 80000 350000>,
			<1 676 40000 40000>, /*gcc_config_noc_clk_src */
			<143 777 0 75>, /* IB defined for IPA2X_clk in MHz*/
		/* SVS */
			<90 512 80000 640000>,
			<90 585 80000 640000>,
			<1 676 80000 80000>,
			<143 777 0 150>, /* IB defined for IPA clk in MHz*/
			<143 777 0 150>, /* IB defined for IPA2X_clk in MHz*/
		/* NOMINAL */
			<90 512 206000 960000>,
			<90 585 206000 960000>,
			<1 676 206000 160000>,
			<143 777 0 300>, /* IB defined for IPA clk in MHz*/
			<143 777 0 300>, /* IB defined for IPA2X_clk in MHz*/
		/* TURBO */
			<90 512 206000 3600000>,
			<90 585 206000 3600000>,
			<1 676 206000 300000>,
			<143 777 0 355>; /* IB defined for IPA clk in MHz*/
		qcom,bus-vector-names = "MIN", "SVS", "NOMINAL", "TURBO";
		qcom,bus-vector-names =
			"MIN", "SVS2", "SVS", "NOMINAL", "TURBO";

		/* IPA RAM mmap */
		qcom,ipa-ram-mmap = <
+2 −2
Original line number Diff line number Diff line
@@ -716,7 +716,7 @@ static int ipa3_usb_create_rm_resources(enum ipa3_usb_transport_type ttype)
		rm_ctx->prod_params.name = IPA3_USB_IS_TTYPE_DPL(ttype) ?
			IPA_RM_RESOURCE_USB_DPL_DUMMY_PROD :
			IPA_RM_RESOURCE_USB_PROD;
		rm_ctx->prod_params.floor_voltage = IPA_VOLTAGE_SVS;
		rm_ctx->prod_params.floor_voltage = IPA_VOLTAGE_SVS2;
		rm_ctx->prod_params.reg_params.user_data = NULL;
		rm_ctx->prod_params.reg_params.notify_cb =
			IPA3_USB_IS_TTYPE_DPL(ttype) ?
@@ -741,7 +741,7 @@ static int ipa3_usb_create_rm_resources(enum ipa3_usb_transport_type ttype)
		rm_ctx->cons_params.name = IPA3_USB_IS_TTYPE_DPL(ttype) ?
			IPA_RM_RESOURCE_USB_DPL_CONS :
			IPA_RM_RESOURCE_USB_CONS;
		rm_ctx->cons_params.floor_voltage = IPA_VOLTAGE_SVS;
		rm_ctx->cons_params.floor_voltage = IPA_VOLTAGE_SVS2;
		rm_ctx->cons_params.reg_params.user_data = NULL;
		rm_ctx->cons_params.reg_params.notify_cb = NULL;
		rm_ctx->cons_params.request_resource =
+13 −8
Original line number Diff line number Diff line
@@ -3294,21 +3294,20 @@ static unsigned int ipa3_get_bus_vote(void)
{
	unsigned int idx = 1;

	if (ipa3_ctx->curr_ipa_clk_rate == ipa3_ctx->ctrl->ipa_clk_rate_svs) {
	if (ipa3_ctx->curr_ipa_clk_rate == ipa3_ctx->ctrl->ipa_clk_rate_svs2) {
		idx = 1;
	} else if (ipa3_ctx->curr_ipa_clk_rate ==
			ipa3_ctx->ctrl->ipa_clk_rate_nominal) {
		if (ipa3_ctx->ctrl->msm_bus_data_ptr->num_usecases <= 2)
			idx = 1;
		else
		ipa3_ctx->ctrl->ipa_clk_rate_svs) {
		idx = 2;
	} else if (ipa3_ctx->curr_ipa_clk_rate ==
		ipa3_ctx->ctrl->ipa_clk_rate_nominal) {
		idx = 3;
	} else if (ipa3_ctx->curr_ipa_clk_rate ==
			ipa3_ctx->ctrl->ipa_clk_rate_turbo) {
		idx = ipa3_ctx->ctrl->msm_bus_data_ptr->num_usecases - 1;
	} else {
		WARN_ON(1);
	}

	IPADBG("curr %d idx %d\n", ipa3_ctx->curr_ipa_clk_rate, idx);

	return idx;
@@ -3699,8 +3698,11 @@ int ipa3_set_required_perf_profile(enum ipa_voltage_level floor_voltage,
		else if (bandwidth_mbps >=
			ipa3_ctx->ctrl->clock_scaling_bw_threshold_nominal)
			needed_voltage = IPA_VOLTAGE_NOMINAL;
		else
		else if (bandwidth_mbps >=
			ipa3_ctx->ctrl->clock_scaling_bw_threshold_svs)
			needed_voltage = IPA_VOLTAGE_SVS;
		else
			needed_voltage = IPA_VOLTAGE_SVS2;
	} else {
		IPADBG_LOW("Clock scaling is disabled\n");
		needed_voltage = IPA_VOLTAGE_NOMINAL;
@@ -3708,6 +3710,9 @@ int ipa3_set_required_perf_profile(enum ipa_voltage_level floor_voltage,

	needed_voltage = max(needed_voltage, floor_voltage);
	switch (needed_voltage) {
	case IPA_VOLTAGE_SVS2:
		clk_rate = ipa3_ctx->ctrl->ipa_clk_rate_svs2;
		break;
	case IPA_VOLTAGE_SVS:
		clk_rate = ipa3_ctx->ctrl->ipa_clk_rate_svs;
		break;
+2 −0
Original line number Diff line number Diff line
@@ -1560,8 +1560,10 @@ struct ipa3_controller {
	u32 ipa_clk_rate_turbo;
	u32 ipa_clk_rate_nominal;
	u32 ipa_clk_rate_svs;
	u32 ipa_clk_rate_svs2;
	u32 clock_scaling_bw_threshold_turbo;
	u32 clock_scaling_bw_threshold_nominal;
	u32 clock_scaling_bw_threshold_svs;
	u32 ipa_reg_base_ofst;
	u32 max_holb_tmr_val;
	void (*ipa_sram_read_settings)(void);
+9 −0
Original line number Diff line number Diff line
@@ -24,14 +24,17 @@
#include "ipahal/ipahal_hw_stats.h"
#include "../ipa_rm_i.h"

#define IPA_V3_0_CLK_RATE_SVS2 (37.5 * 1000 * 1000UL)
#define IPA_V3_0_CLK_RATE_SVS (75 * 1000 * 1000UL)
#define IPA_V3_0_CLK_RATE_NOMINAL (150 * 1000 * 1000UL)
#define IPA_V3_0_CLK_RATE_TURBO (200 * 1000 * 1000UL)

#define IPA_V3_5_CLK_RATE_SVS2 (100 * 1000 * 1000UL)
#define IPA_V3_5_CLK_RATE_SVS (200 * 1000 * 1000UL)
#define IPA_V3_5_CLK_RATE_NOMINAL (400 * 1000 * 1000UL)
#define IPA_V3_5_CLK_RATE_TURBO (42640 * 10 * 1000UL)

#define IPA_V4_0_CLK_RATE_SVS2 (60 * 1000 * 1000UL)
#define IPA_V4_0_CLK_RATE_SVS (125 * 1000 * 1000UL)
#define IPA_V4_0_CLK_RATE_NOMINAL (220 * 1000 * 1000UL)
#define IPA_V4_0_CLK_RATE_TURBO (250 * 1000 * 1000UL)
@@ -40,6 +43,7 @@

#define IPA_V3_0_BW_THRESHOLD_TURBO_MBPS (1000)
#define IPA_V3_0_BW_THRESHOLD_NOMINAL_MBPS (600)
#define IPA_V3_0_BW_THRESHOLD_SVS_MBPS (310)

#define IPA_ENDP_INIT_HDR_METADATA_n_MUX_ID_BMASK 0xFF0000
#define IPA_ENDP_INIT_HDR_METADATA_n_MUX_ID_SHFT 0x10
@@ -3733,14 +3737,17 @@ int ipa3_controller_static_bind(struct ipa3_controller *ctrl,
		ctrl->ipa_clk_rate_turbo = IPA_V4_0_CLK_RATE_TURBO;
		ctrl->ipa_clk_rate_nominal = IPA_V4_0_CLK_RATE_NOMINAL;
		ctrl->ipa_clk_rate_svs = IPA_V4_0_CLK_RATE_SVS;
		ctrl->ipa_clk_rate_svs2 = IPA_V4_0_CLK_RATE_SVS2;
	} else if (hw_type >= IPA_HW_v3_5) {
		ctrl->ipa_clk_rate_turbo = IPA_V3_5_CLK_RATE_TURBO;
		ctrl->ipa_clk_rate_nominal = IPA_V3_5_CLK_RATE_NOMINAL;
		ctrl->ipa_clk_rate_svs = IPA_V3_5_CLK_RATE_SVS;
		ctrl->ipa_clk_rate_svs2 = IPA_V3_5_CLK_RATE_SVS2;
	} else {
		ctrl->ipa_clk_rate_turbo = IPA_V3_0_CLK_RATE_TURBO;
		ctrl->ipa_clk_rate_nominal = IPA_V3_0_CLK_RATE_NOMINAL;
		ctrl->ipa_clk_rate_svs = IPA_V3_0_CLK_RATE_SVS;
		ctrl->ipa_clk_rate_svs2 = IPA_V3_0_CLK_RATE_SVS2;
	}

	ctrl->ipa_init_rt4 = _ipa_init_rt4_v3;
@@ -3754,6 +3761,8 @@ int ipa3_controller_static_bind(struct ipa3_controller *ctrl,
	ctrl->ipa3_enable_clks = _ipa_enable_clks_v3_0;
	ctrl->ipa3_disable_clks = _ipa_disable_clks_v3_0;
	ctrl->msm_bus_data_ptr = &ipa_bus_client_pdata_v3_0;
	ctrl->clock_scaling_bw_threshold_svs =
		IPA_V3_0_BW_THRESHOLD_SVS_MBPS;
	ctrl->clock_scaling_bw_threshold_nominal =
		IPA_V3_0_BW_THRESHOLD_NOMINAL_MBPS;
	ctrl->clock_scaling_bw_threshold_turbo =
Loading