Commit 4f799e73 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda: Make snd_hdac_display_power() void function



After the recent refactoring, snd_hdac_display_power() doesn't return
any error, hence it can be defined to return void.
This makes many error checks redundant and allows us to reduce them
gracefully.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 457f3c86
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@

#ifdef CONFIG_SND_HDA_COMPONENT
int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable);
int snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx,
void snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx,
			    bool enable);
int snd_hdac_sync_audio_rate(struct hdac_device *codec, hda_nid_t nid,
			     int dev_id, int rate);
@@ -30,10 +30,9 @@ static inline int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable)
{
	return 0;
}
static inline int snd_hdac_display_power(struct hdac_bus *bus,
static inline void snd_hdac_display_power(struct hdac_bus *bus,
					  unsigned int idx, bool enable)
{
	return 0;
}
static inline int snd_hdac_sync_audio_rate(struct hdac_device *codec,
					   hda_nid_t nid, int dev_id, int rate)
+2 −6
Original line number Diff line number Diff line
@@ -62,10 +62,8 @@ EXPORT_SYMBOL_GPL(snd_hdac_set_codec_wakeup);
 *
 * This function updates the power status, and calls the get_power() and
 * put_power() ops accordingly, toggling the codec wakeup, too.
 *
 * Returns zero for success or a negative error code.
 */
int snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx, bool enable)
void snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx, bool enable)
{
	struct drm_audio_component *acomp = bus->audio_component;

@@ -77,7 +75,7 @@ int snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx, bool enable)
		clear_bit(idx, &bus->display_power_status);

	if (!acomp || !acomp->ops)
		return 0;
		return;

	if (bus->display_power_status) {
		if (!bus->display_power_active) {
@@ -94,8 +92,6 @@ int snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx, bool enable)
			bus->display_power_active = false;
		}
	}

	return 0;
}
EXPORT_SYMBOL_GPL(snd_hdac_display_power);

+1 −8
Original line number Diff line number Diff line
@@ -2216,12 +2216,7 @@ static int azx_probe_continue(struct azx *chip)
	 * this power. For other platforms, like Baytrail/Braswell, only the
	 * display codec needs the power and it can be released after probe.
	 */
	err = display_power(chip, true);
	if (err < 0) {
		dev_err(chip->card->dev,
			"Cannot turn on display power on i915\n");
		goto i915_power_fail;
	}
	display_power(chip, true);

	err = azx_first_init(chip);
	if (err < 0)
@@ -2271,8 +2266,6 @@ static int azx_probe_continue(struct azx *chip)
out_free:
	if (err < 0 || !hda->need_i915_power)
		display_power(chip, false);

i915_power_fail:
	if (err < 0)
		hda->init_failed = 1;
	complete_all(&hda->probe_wait);
+5 −18
Original line number Diff line number Diff line
@@ -2031,13 +2031,8 @@ static int hdac_hdmi_dev_probe(struct hdac_device *hdev)
	 * Turned off in the runtime_suspend during the first explicit
	 * pm_runtime_suspend call.
	 */
	ret = snd_hdac_display_power(hdev->bus, hdev->addr, true);
	if (ret < 0) {
		dev_err(&hdev->dev,
			"Cannot turn on display power on i915 err: %d\n",
			ret);
		return ret;
	}
	snd_hdac_display_power(hdev->bus, hdev->addr, true);

	ret = hdac_hdmi_parse_and_map_nid(hdev, &hdmi_dais, &num_dais);
	if (ret < 0) {
		dev_err(&hdev->dev,
@@ -2169,7 +2164,6 @@ static int hdac_hdmi_runtime_suspend(struct device *dev)
	struct hdac_device *hdev = dev_to_hdac_dev(dev);
	struct hdac_bus *bus = hdev->bus;
	struct hdac_ext_link *hlink = NULL;
	int err;

	dev_dbg(dev, "Enter: %s\n", __func__);

@@ -2195,11 +2189,9 @@ static int hdac_hdmi_runtime_suspend(struct device *dev)

	snd_hdac_ext_bus_link_put(bus, hlink);

	err = snd_hdac_display_power(bus, hdev->addr, false);
	if (err < 0)
		dev_err(dev, "Cannot turn off display power on i915\n");
	snd_hdac_display_power(bus, hdev->addr, false);

	return err;
	return 0;
}

static int hdac_hdmi_runtime_resume(struct device *dev)
@@ -2207,7 +2199,6 @@ static int hdac_hdmi_runtime_resume(struct device *dev)
	struct hdac_device *hdev = dev_to_hdac_dev(dev);
	struct hdac_bus *bus = hdev->bus;
	struct hdac_ext_link *hlink = NULL;
	int err;

	dev_dbg(dev, "Enter: %s\n", __func__);

@@ -2223,11 +2214,7 @@ static int hdac_hdmi_runtime_resume(struct device *dev)

	snd_hdac_ext_bus_link_get(bus, hlink);

	err = snd_hdac_display_power(bus, hdev->addr, true);
	if (err < 0) {
		dev_err(dev, "Cannot turn on display power on i915\n");
		return err;
	}
	snd_hdac_display_power(bus, hdev->addr, true);

	hdac_hdmi_skl_enable_all_pins(hdev);
	hdac_hdmi_skl_enable_dp12(hdev);
+11 −29
Original line number Diff line number Diff line
@@ -311,7 +311,7 @@ static int skl_suspend(struct device *dev)
	struct pci_dev *pci = to_pci_dev(dev);
	struct hdac_bus *bus = pci_get_drvdata(pci);
	struct skl *skl  = bus_to_skl(bus);
	int ret = 0;
	int ret;

	/*
	 * Do not suspend if streams which are marked ignore suspend are
@@ -333,14 +333,10 @@ static int skl_suspend(struct device *dev)
		skl->skl_sst->fw_loaded = false;
	}

	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI)) {
		ret = snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
		if (ret < 0)
			dev_err(bus->dev,
				"Cannot turn OFF display power on i915\n");
	}
	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI))
		snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);

	return ret;
	return 0;
}

static int skl_resume(struct device *dev)
@@ -352,14 +348,8 @@ static int skl_resume(struct device *dev)
	int ret;

	/* Turned OFF in HDMI codec driver after codec reconfiguration */
	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI)) {
		ret = snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, true);
		if (ret < 0) {
			dev_err(bus->dev,
				"Cannot turn on display power on i915\n");
			return ret;
		}
	}
	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI))
		snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, true);

	/*
	 * resume only when we are not in suspend active, otherwise need to
@@ -783,11 +773,9 @@ static int skl_i915_init(struct hdac_bus *bus)
	if (err < 0)
		return err;

	err = snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, true);
	if (err < 0)
		dev_err(bus->dev, "Cannot turn on display power on i915\n");
	snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, true);

	return err;
	return 0;
}

static void skl_probe_work(struct work_struct *work)
@@ -837,14 +825,8 @@ static void skl_probe_work(struct work_struct *work)
	list_for_each_entry(hlink, &bus->hlink_list, list)
		snd_hdac_ext_bus_link_put(bus, hlink);

	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI)) {
		err = snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
		if (err < 0) {
			dev_err(bus->dev, "Cannot turn off display power on i915\n");
			skl_machine_device_unregister(skl);
			return;
		}
	}
	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI))
		snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);

	/* configure PM */
	pm_runtime_put_noidle(bus->dev);
@@ -855,7 +837,7 @@ static void skl_probe_work(struct work_struct *work)

out_err:
	if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI))
		err = snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
		snd_hdac_display_power(bus, HDA_CODEC_IDX_CONTROLLER, false);
}

/*