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

Commit b028b818 authored by Harry Butterworth's avatar Harry Butterworth Committed by Takashi Iwai
Browse files

ALSA: ctxfi: Implement a combined capabilities query method to replace...


ALSA: ctxfi: Implement a combined capabilities query method to replace multiple have_x query methods.

Signed-off-by: default avatarHarry Butterworth <heb1001@gmail.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 55309216
Loading
Loading
Loading
Loading
+3 −28
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
#include "ctatc.h"
#include "ctpcm.h"
#include "ctmixer.h"
#include "cthardware.h"
#include "ctsrc.h"
#include "ctamixer.h"
#include "ctdaio.h"
@@ -972,25 +971,11 @@ static int atc_select_mic_in(struct ct_atc *atc)
	return 0;
}

static int atc_have_digit_io_switch(struct ct_atc *atc)
static struct capabilities atc_capabilities(struct ct_atc *atc)
{
	struct hw *hw = atc->hw;

	return hw->have_digit_io_switch(hw);
}

static int atc_have_dedicated_mic(struct ct_atc *atc)
{
	struct hw *hw = atc->hw;

	return hw->have_dedicated_mic(hw);
}

static int atc_have_output_switch(struct ct_atc *atc)
{
	struct hw *hw = atc->hw;

	return hw->have_output_switch(hw);
	return hw->capabilities(hw);
}

static int atc_output_switch_get(struct ct_atc *atc)
@@ -1007,13 +992,6 @@ static int atc_output_switch_put(struct ct_atc *atc, int position)
	return hw->output_switch_put(hw, position);
}

static int atc_have_mic_source_switch(struct ct_atc *atc)
{
	struct hw *hw = atc->hw;

	return hw->have_mic_source_switch(hw);
}

static int atc_mic_source_switch_get(struct ct_atc *atc)
{
	struct hw *hw = atc->hw;
@@ -1664,12 +1642,9 @@ static struct ct_atc atc_preset __devinitdata = {
	.spdif_out_get_status = atc_spdif_out_get_status,
	.spdif_out_set_status = atc_spdif_out_set_status,
	.spdif_out_passthru = atc_spdif_out_passthru,
	.have_digit_io_switch = atc_have_digit_io_switch,
	.have_dedicated_mic = atc_have_dedicated_mic,
	.have_output_switch = atc_have_output_switch,
	.capabilities = atc_capabilities,
	.output_switch_get = atc_output_switch_get,
	.output_switch_put = atc_output_switch_put,
	.have_mic_source_switch = atc_have_mic_source_switch,
	.mic_source_switch_get = atc_mic_source_switch_get,
	.mic_source_switch_put = atc_mic_source_switch_put,
#ifdef CONFIG_PM
+2 −4
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <sound/core.h>

#include "ctvmem.h"
#include "cthardware.h"
#include "ctresource.h"

enum CTALSADEVS {		/* Types of alsa devices */
@@ -121,12 +122,9 @@ struct ct_atc {
	int (*spdif_out_get_status)(struct ct_atc *atc, unsigned int *status);
	int (*spdif_out_set_status)(struct ct_atc *atc, unsigned int status);
	int (*spdif_out_passthru)(struct ct_atc *atc, unsigned char state);
	int (*have_digit_io_switch)(struct ct_atc *atc);
	int (*have_dedicated_mic)(struct ct_atc *atc);
	int (*have_output_switch)(struct ct_atc *atc);
	struct capabilities (*capabilities)(struct ct_atc *atc);
	int (*output_switch_get)(struct ct_atc *atc);
	int (*output_switch_put)(struct ct_atc *atc, int position);
	int (*have_mic_source_switch)(struct ct_atc *atc);
	int (*mic_source_switch_get)(struct ct_atc *atc);
	int (*mic_source_switch_put)(struct ct_atc *atc, int position);

+8 −4
Original line number Diff line number Diff line
@@ -61,6 +61,13 @@ struct card_conf {
	unsigned int msr;	/* master sample rate in rsrs */
};

struct capabilities {
	unsigned int digit_io_switch:1;
	unsigned int dedicated_mic:1;
	unsigned int output_switch:1;
	unsigned int mic_source_switch:1;
};

struct hw {
	int (*card_init)(struct hw *hw, struct card_conf *info);
	int (*card_stop)(struct hw *hw);
@@ -71,12 +78,9 @@ struct hw {
#endif
	int (*is_adc_source_selected)(struct hw *hw, enum ADCSRC source);
	int (*select_adc_source)(struct hw *hw, enum ADCSRC source);
	int (*have_digit_io_switch)(struct hw *hw);
	int (*have_dedicated_mic)(struct hw *hw);
	int (*have_output_switch)(struct hw *hw);
	struct capabilities (*capabilities)(struct hw *hw);
	int (*output_switch_get)(struct hw *hw);
	int (*output_switch_put)(struct hw *hw, int position);
	int (*have_mic_source_switch)(struct hw *hw);
	int (*mic_source_switch_get)(struct hw *hw);
	int (*mic_source_switch_put)(struct hw *hw, int position);

+9 −20
Original line number Diff line number Diff line
@@ -1777,25 +1777,17 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info)
		return adc_init_SBx(hw, info->input, info->mic20db);
}

static int hw_have_digit_io_switch(struct hw *hw)
static struct capabilities hw_capabilities(struct hw *hw)
{
	/* SB073x and Vista compatible cards have no digit IO switch */
	return !(hw->model == CTSB073X || hw->model == CTUAA);
}

static int hw_have_dedicated_mic(struct hw *hw)
{
	return 0;
}
	struct capabilities cap;

static int hw_have_output_switch(struct hw *hw)
{
	return 0;
}
	/* SB073x and Vista compatible cards have no digit IO switch */
	cap.digit_io_switch = !(hw->model == CTSB073X || hw->model == CTUAA);
	cap.dedicated_mic = 0;
	cap.output_switch = 0;
	cap.mic_source_switch = 0;

static int hw_have_mic_source_switch(struct hw *hw)
{
	return 0;
	return cap;
}

#define CTLBITS(a, b, c, d)	(((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
@@ -2187,10 +2179,7 @@ static struct hw ct20k1_preset __devinitdata = {
	.pll_init = hw_pll_init,
	.is_adc_source_selected = hw_is_adc_input_selected,
	.select_adc_source = hw_adc_input_select,
	.have_digit_io_switch = hw_have_digit_io_switch,
	.have_dedicated_mic = hw_have_dedicated_mic,
	.have_output_switch = hw_have_output_switch,
	.have_mic_source_switch = hw_have_mic_source_switch,
	.capabilities = hw_capabilities,
#ifdef CONFIG_PM
	.suspend = hw_suspend,
	.resume = hw_resume,
+8 −19
Original line number Diff line number Diff line
@@ -1915,19 +1915,16 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info)
	return err;
}

static int hw_have_digit_io_switch(struct hw *hw)
static struct capabilities hw_capabilities(struct hw *hw)
{
	return 0;
}
	struct capabilities cap;

static int hw_have_dedicated_mic(struct hw *hw)
{
	return hw->model == CTSB1270;
}
	cap.digit_io_switch = 0;
	cap.dedicated_mic = hw->model == CTSB1270;
	cap.output_switch = hw->model == CTSB1270;
	cap.mic_source_switch = hw->model == CTSB1270;

static int hw_have_output_switch(struct hw *hw)
{
	return hw->model == CTSB1270;
	return cap;
}

static int hw_output_switch_get(struct hw *hw)
@@ -1978,11 +1975,6 @@ static int hw_output_switch_put(struct hw *hw, int position)
	return 1;
}

static int hw_have_mic_source_switch(struct hw *hw)
{
	return hw->model == CTSB1270;
}

static int hw_mic_source_switch_get(struct hw *hw)
{
	struct hw20k2 *hw20k2 = (struct hw20k2 *)hw;
@@ -2256,12 +2248,9 @@ static struct hw ct20k2_preset __devinitdata = {
	.pll_init = hw_pll_init,
	.is_adc_source_selected = hw_is_adc_input_selected,
	.select_adc_source = hw_adc_input_select,
	.have_digit_io_switch = hw_have_digit_io_switch,
	.have_dedicated_mic = hw_have_dedicated_mic,
	.have_output_switch = hw_have_output_switch,
	.capabilities = hw_capabilities,
	.output_switch_get = hw_output_switch_get,
	.output_switch_put = hw_output_switch_put,
	.have_mic_source_switch = hw_have_mic_source_switch,
	.mic_source_switch_get = hw_mic_source_switch_get,
	.mic_source_switch_put = hw_mic_source_switch_put,
#ifdef CONFIG_PM
Loading