Commit 3ccb8551 authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Vinod Koul
Browse files

soundwire: cadence_master: make clock stop exit configurable on init



The use of clock stop is not a requirement, the IP can e.g. be
completely power gated and not detect any wakes while in s2idle/deep
sleep.

For now clock-stop is not supported anyways so the control parameter
is always false. This will be revisited when we add clock stop.

Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191022235448.17586-6-pierre-louis.bossart@linux.intel.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 9e3d47fb
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -979,7 +979,7 @@ static u32 cdns_set_initial_frame_shape(int n_rows, int n_cols)
 * sdw_cdns_init() - Cadence initialization
 * @cdns: Cadence instance
 */
int sdw_cdns_init(struct sdw_cdns *cdns)
int sdw_cdns_init(struct sdw_cdns *cdns, bool clock_stop_exit)
{
	struct sdw_bus *bus = &cdns->bus;
	struct sdw_master_prop *prop = &bus->prop;
@@ -987,13 +987,14 @@ int sdw_cdns_init(struct sdw_cdns *cdns)
	int divider;
	int ret;

	/* Exit clock stop */
	if (clock_stop_exit) {
		ret = cdns_clear_bit(cdns, CDNS_MCP_CONTROL,
				     CDNS_MCP_CONTROL_CLK_STOP_CLR);
		if (ret < 0) {
			dev_err(cdns->dev, "Couldn't exit from clock stop\n");
			return ret;
		}
	}

	/* Set clock divider */
	divider	= (prop->mclk_freq / prop->max_clk_freq) - 1;
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ extern struct sdw_master_ops sdw_cdns_master_ops;
irqreturn_t sdw_cdns_irq(int irq, void *dev_id);
irqreturn_t sdw_cdns_thread(int irq, void *dev_id);

int sdw_cdns_init(struct sdw_cdns *cdns);
int sdw_cdns_init(struct sdw_cdns *cdns, bool clock_stop_exit);
int sdw_cdns_pdi_init(struct sdw_cdns *cdns,
		      struct sdw_cdns_stream_config config);
int sdw_cdns_exit_reset(struct sdw_cdns *cdns);
+1 −1
Original line number Diff line number Diff line
@@ -903,7 +903,7 @@ static int intel_init(struct sdw_intel *sdw)
	intel_link_power_up(sdw);
	intel_shim_init(sdw);

	return sdw_cdns_init(&sdw->cdns);
	return sdw_cdns_init(&sdw->cdns, false);
}

/*