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

Commit 0030a7a0 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "dwc3-msm: Add default-bus-vote property to select default USB bus voting"

parents 0a473d70 0c947778
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ Optional properties :
    - qcom,msm_bus,num_cases
    - qcom,msm_bus,num_paths
    - qcom,msm_bus,vectors
- qcom,default-bus-vote: To use default bus voting other than NOMINAL. Default is NOMINAL.
- interrupt-names : Optional interrupt resource entries are:
    "ss_phy_irq"  : Interrupt from super speed phy for wake up notification.
    "hs_phy_irq" : Interrupt from HS PHY for asynchronous events in LPM.
+15 −4
Original line number Diff line number Diff line
@@ -281,6 +281,7 @@ struct dwc3_msm {
	unsigned int		max_power;
	bool			charging_disabled;
	enum dwc3_drd_state	drd_state;
	enum bus_vote		default_bus_vote;
	enum bus_vote		override_bus_vote;
	u32			bus_perf_client;
	struct msm_bus_scale_pdata	*bus_scale_table;
@@ -2369,7 +2370,7 @@ static int dwc3_msm_update_bus_bw(struct dwc3_msm *mdwc, enum bus_vote bv)
	 * from userspace.
	 */
	if (bv >= mdwc->bus_scale_table->num_usecases)
		bv_index = BUS_VOTE_NOMINAL;
		bv_index = mdwc->default_bus_vote;
	else if (bv == BUS_VOTE_NONE)
		bv_index = BUS_VOTE_NONE;

@@ -2611,7 +2612,7 @@ static int dwc3_msm_resume(struct dwc3_msm *mdwc)
	if (mdwc->in_host_mode && mdwc->max_rh_port_speed == USB_SPEED_HIGH)
		dwc3_msm_update_bus_bw(mdwc, BUS_VOTE_SVS);
	else
		dwc3_msm_update_bus_bw(mdwc, BUS_VOTE_NOMINAL);
		dwc3_msm_update_bus_bw(mdwc, mdwc->default_bus_vote);

	/* Vote for TCXO while waking up USB HSPHY */
	ret = clk_prepare_enable(mdwc->xo_clk);
@@ -3471,7 +3472,7 @@ static ssize_t bus_vote_store(struct device *dev,
			&& (mdwc->max_rh_port_speed == USB_SPEED_HIGH))
			bv = BUS_VOTE_SVS;
		else
			bv = BUS_VOTE_NOMINAL;
			bv = mdwc->default_bus_vote;

		dwc3_msm_update_bus_bw(mdwc, bv);
	}
@@ -3753,10 +3754,20 @@ static int dwc3_msm_probe(struct platform_device *pdev)
		goto put_dwc3;
	}

	/* use default as nominal bus voting */
	mdwc->default_bus_vote = BUS_VOTE_NOMINAL;
	ret = of_property_read_u32(node, "qcom,default-bus-vote",
			&mdwc->default_bus_vote);

	mdwc->bus_scale_table = msm_bus_cl_get_pdata(pdev);
	if (mdwc->bus_scale_table) {
		mdwc->bus_perf_client =
			msm_bus_scale_register_client(mdwc->bus_scale_table);

		/* default_bus_vote is out of range, use nominal bus voting */
		if (mdwc->default_bus_vote >=
				mdwc->bus_scale_table->num_usecases)
			mdwc->default_bus_vote = BUS_VOTE_NOMINAL;
	}

	dwc = platform_get_drvdata(mdwc->dwc3);
@@ -4032,7 +4043,7 @@ static int dwc3_msm_host_notifier(struct notifier_block *nb,
			dev_dbg(mdwc->dev, "set core clk rate %ld\n",
				mdwc->core_clk_rate);
			mdwc->max_rh_port_speed = USB_SPEED_UNKNOWN;
			dwc3_msm_update_bus_bw(mdwc, BUS_VOTE_NOMINAL);
			dwc3_msm_update_bus_bw(mdwc, mdwc->default_bus_vote);
		}
	}