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

Commit 5bcaca4b authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/topic/component' into asoc-next

parents 832a9414 b2d9de54
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -593,7 +593,6 @@ struct snd_soc_dapm_context {


	struct device *dev; /* from parent - for debug */
	struct device *dev; /* from parent - for debug */
	struct snd_soc_component *component; /* parent component */
	struct snd_soc_component *component; /* parent component */
	struct snd_soc_codec *codec; /* parent codec */
	struct snd_soc_card *card; /* parent card */
	struct snd_soc_card *card; /* parent card */


	/* used during DAPM updates */
	/* used during DAPM updates */
+59 −35
Original line number Original line Diff line number Diff line
@@ -690,6 +690,17 @@ struct snd_soc_compr_ops {
struct snd_soc_component_driver {
struct snd_soc_component_driver {
	const char *name;
	const char *name;


	/* Default control and setup, added after probe() is run */
	const struct snd_kcontrol_new *controls;
	unsigned int num_controls;
	const struct snd_soc_dapm_widget *dapm_widgets;
	unsigned int num_dapm_widgets;
	const struct snd_soc_dapm_route *dapm_routes;
	unsigned int num_dapm_routes;

	int (*probe)(struct snd_soc_component *);
	void (*remove)(struct snd_soc_component *);

	/* DT */
	/* DT */
	int (*of_xlate_dai_name)(struct snd_soc_component *component,
	int (*of_xlate_dai_name)(struct snd_soc_component *component,
				 struct of_phandle_args *args,
				 struct of_phandle_args *args,
@@ -697,6 +708,10 @@ struct snd_soc_component_driver {
	void (*seq_notifier)(struct snd_soc_component *, enum snd_soc_dapm_type,
	void (*seq_notifier)(struct snd_soc_component *, enum snd_soc_dapm_type,
		int subseq);
		int subseq);
	int (*stream_event)(struct snd_soc_component *, int event);
	int (*stream_event)(struct snd_soc_component *, int event);

	/* probe ordering - for components with runtime dependencies */
	int probe_order;
	int remove_order;
};
};


struct snd_soc_component {
struct snd_soc_component {
@@ -710,6 +725,7 @@ struct snd_soc_component {


	unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */
	unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */
	unsigned int registered_as_component:1;
	unsigned int registered_as_component:1;
	unsigned int probed:1;


	struct list_head list;
	struct list_head list;


@@ -728,9 +744,35 @@ struct snd_soc_component {


	struct mutex io_mutex;
	struct mutex io_mutex;


#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs_root;
#endif

	/*
	* DO NOT use any of the fields below in drivers, they are temporary and
	* are going to be removed again soon. If you use them in driver code the
	* driver will be marked as BROKEN when these fields are removed.
	*/

	/* Don't use these, use snd_soc_component_get_dapm() */
	/* Don't use these, use snd_soc_component_get_dapm() */
	struct snd_soc_dapm_context dapm;
	struct snd_soc_dapm_context dapm;
	struct snd_soc_dapm_context *dapm_ptr;
	struct snd_soc_dapm_context *dapm_ptr;

	const struct snd_kcontrol_new *controls;
	unsigned int num_controls;
	const struct snd_soc_dapm_widget *dapm_widgets;
	unsigned int num_dapm_widgets;
	const struct snd_soc_dapm_route *dapm_routes;
	unsigned int num_dapm_routes;
	struct snd_soc_codec *codec;

	int (*probe)(struct snd_soc_component *);
	void (*remove)(struct snd_soc_component *);

#ifdef CONFIG_DEBUG_FS
	void (*init_debugfs)(struct snd_soc_component *component);
	const char *debugfs_prefix;
#endif
};
};


/* SoC Audio Codec device */
/* SoC Audio Codec device */
@@ -746,11 +788,9 @@ struct snd_soc_codec {
	struct snd_ac97 *ac97;  /* for ad-hoc ac97 devices */
	struct snd_ac97 *ac97;  /* for ad-hoc ac97 devices */
	unsigned int cache_bypass:1; /* Suppress access to the cache */
	unsigned int cache_bypass:1; /* Suppress access to the cache */
	unsigned int suspended:1; /* Codec is in suspend PM state */
	unsigned int suspended:1; /* Codec is in suspend PM state */
	unsigned int probed:1; /* Codec has been probed */
	unsigned int ac97_registered:1; /* Codec has been AC97 registered */
	unsigned int ac97_registered:1; /* Codec has been AC97 registered */
	unsigned int ac97_created:1; /* Codec has been created by SoC */
	unsigned int ac97_created:1; /* Codec has been created by SoC */
	unsigned int cache_init:1; /* codec cache has been initialized */
	unsigned int cache_init:1; /* codec cache has been initialized */
	u32 cache_only;  /* Suppress writes to hardware */
	u32 cache_sync; /* Cache needs to be synced to hardware */
	u32 cache_sync; /* Cache needs to be synced to hardware */


	/* codec IO */
	/* codec IO */
@@ -766,7 +806,6 @@ struct snd_soc_codec {
	struct snd_soc_dapm_context dapm;
	struct snd_soc_dapm_context dapm;


#ifdef CONFIG_DEBUG_FS
#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs_codec_root;
	struct dentry *debugfs_reg;
	struct dentry *debugfs_reg;
#endif
#endif
};
};
@@ -813,10 +852,6 @@ struct snd_soc_codec_driver {
			     enum snd_soc_dapm_type, int);
			     enum snd_soc_dapm_type, int);


	bool ignore_pmdown_time;  /* Doesn't benefit from pmdown delay */
	bool ignore_pmdown_time;  /* Doesn't benefit from pmdown delay */

	/* probe ordering - for components with runtime dependencies */
	int probe_order;
	int remove_order;
};
};


/* SoC platform interface */
/* SoC platform interface */
@@ -832,14 +867,6 @@ struct snd_soc_platform_driver {
	int (*pcm_new)(struct snd_soc_pcm_runtime *);
	int (*pcm_new)(struct snd_soc_pcm_runtime *);
	void (*pcm_free)(struct snd_pcm *);
	void (*pcm_free)(struct snd_pcm *);


	/* Default control and setup, added after probe() is run */
	const struct snd_kcontrol_new *controls;
	int num_controls;
	const struct snd_soc_dapm_widget *dapm_widgets;
	int num_dapm_widgets;
	const struct snd_soc_dapm_route *dapm_routes;
	int num_dapm_routes;

	/*
	/*
	 * For platform caused delay reporting.
	 * For platform caused delay reporting.
	 * Optional.
	 * Optional.
@@ -853,13 +880,6 @@ struct snd_soc_platform_driver {
	/* platform stream compress ops */
	/* platform stream compress ops */
	const struct snd_compr_ops *compr_ops;
	const struct snd_compr_ops *compr_ops;


	/* probe ordering - for components with runtime dependencies */
	int probe_order;
	int remove_order;

	/* platform IO - used for platform DAPM */
	unsigned int (*read)(struct snd_soc_platform *, unsigned int);
	int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
	int (*bespoke_trigger)(struct snd_pcm_substream *, int);
	int (*bespoke_trigger)(struct snd_pcm_substream *, int);
};
};


@@ -874,15 +894,10 @@ struct snd_soc_platform {
	const struct snd_soc_platform_driver *driver;
	const struct snd_soc_platform_driver *driver;


	unsigned int suspended:1; /* platform is suspended */
	unsigned int suspended:1; /* platform is suspended */
	unsigned int probed:1;


	struct list_head list;
	struct list_head list;


	struct snd_soc_component component;
	struct snd_soc_component component;

#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs_platform_root;
#endif
};
};


struct snd_soc_dai_link {
struct snd_soc_dai_link {
@@ -994,7 +1009,7 @@ struct snd_soc_aux_dev {
	const struct device_node *codec_of_node;
	const struct device_node *codec_of_node;


	/* codec/machine specific init - e.g. add machine controls */
	/* codec/machine specific init - e.g. add machine controls */
	int (*init)(struct snd_soc_dapm_context *dapm);
	int (*init)(struct snd_soc_component *component);
};
};


/* SoC card */
/* SoC card */
@@ -1112,6 +1127,7 @@ struct snd_soc_pcm_runtime {
	struct snd_soc_platform *platform;
	struct snd_soc_platform *platform;
	struct snd_soc_dai *codec_dai;
	struct snd_soc_dai *codec_dai;
	struct snd_soc_dai *cpu_dai;
	struct snd_soc_dai *cpu_dai;
	struct snd_soc_component *component; /* Only valid for AUX dev rtds */


	struct snd_soc_dai **codec_dais;
	struct snd_soc_dai **codec_dais;
	unsigned int num_codecs;
	unsigned int num_codecs;
@@ -1260,9 +1276,6 @@ void snd_soc_component_async_complete(struct snd_soc_component *component);
int snd_soc_component_test_bits(struct snd_soc_component *component,
int snd_soc_component_test_bits(struct snd_soc_component *component,
	unsigned int reg, unsigned int mask, unsigned int value);
	unsigned int reg, unsigned int mask, unsigned int value);


int snd_soc_component_init_io(struct snd_soc_component *component,
	struct regmap *regmap);

/* device driver data */
/* device driver data */


static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card,
static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card,
@@ -1276,26 +1289,37 @@ static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card)
	return card->drvdata;
	return card->drvdata;
}
}


static inline void snd_soc_component_set_drvdata(struct snd_soc_component *c,
		void *data)
{
	dev_set_drvdata(c->dev, data);
}

static inline void *snd_soc_component_get_drvdata(struct snd_soc_component *c)
{
	return dev_get_drvdata(c->dev);
}

static inline void snd_soc_codec_set_drvdata(struct snd_soc_codec *codec,
static inline void snd_soc_codec_set_drvdata(struct snd_soc_codec *codec,
		void *data)
		void *data)
{
{
	dev_set_drvdata(codec->dev, data);
	snd_soc_component_set_drvdata(&codec->component, data);
}
}


static inline void *snd_soc_codec_get_drvdata(struct snd_soc_codec *codec)
static inline void *snd_soc_codec_get_drvdata(struct snd_soc_codec *codec)
{
{
	return dev_get_drvdata(codec->dev);
	return snd_soc_component_get_drvdata(&codec->component);
}
}


static inline void snd_soc_platform_set_drvdata(struct snd_soc_platform *platform,
static inline void snd_soc_platform_set_drvdata(struct snd_soc_platform *platform,
		void *data)
		void *data)
{
{
	dev_set_drvdata(platform->dev, data);
	snd_soc_component_set_drvdata(&platform->component, data);
}
}


static inline void *snd_soc_platform_get_drvdata(struct snd_soc_platform *platform)
static inline void *snd_soc_platform_get_drvdata(struct snd_soc_platform *platform)
{
{
	return dev_get_drvdata(platform->dev);
	return snd_soc_component_get_drvdata(&platform->component);
}
}


static inline void snd_soc_pcm_set_drvdata(struct snd_soc_pcm_runtime *rtd,
static inline void snd_soc_pcm_set_drvdata(struct snd_soc_pcm_runtime *rtd,
+1 −1
Original line number Original line Diff line number Diff line
@@ -212,7 +212,7 @@ static void wm8350_pga_work(struct work_struct *work)
{
{
	struct snd_soc_dapm_context *dapm =
	struct snd_soc_dapm_context *dapm =
	    container_of(work, struct snd_soc_dapm_context, delayed_work.work);
	    container_of(work, struct snd_soc_dapm_context, delayed_work.work);
	struct snd_soc_codec *codec = dapm->codec;
	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm);
	struct wm8350_data *wm8350_data = snd_soc_codec_get_drvdata(codec);
	struct wm8350_data *wm8350_data = snd_soc_codec_get_drvdata(codec);
	struct wm8350_output *out1 = &wm8350_data->out1,
	struct wm8350_output *out1 = &wm8350_data->out1,
	    *out2 = &wm8350_data->out2;
	    *out2 = &wm8350_data->out2;
+1 −1
Original line number Original line Diff line number Diff line
@@ -1433,7 +1433,7 @@ static void wm8753_work(struct work_struct *work)
	struct snd_soc_dapm_context *dapm =
	struct snd_soc_dapm_context *dapm =
		container_of(work, struct snd_soc_dapm_context,
		container_of(work, struct snd_soc_dapm_context,
			     delayed_work.work);
			     delayed_work.work);
	struct snd_soc_codec *codec = dapm->codec;
	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm);
	wm8753_set_bias_level(codec, dapm->bias_level);
	wm8753_set_bias_level(codec, dapm->bias_level);
}
}


+1 −1
Original line number Original line Diff line number Diff line
@@ -615,7 +615,7 @@ static void wm8971_work(struct work_struct *work)
	struct snd_soc_dapm_context *dapm =
	struct snd_soc_dapm_context *dapm =
		container_of(work, struct snd_soc_dapm_context,
		container_of(work, struct snd_soc_dapm_context,
			     delayed_work.work);
			     delayed_work.work);
	struct snd_soc_codec *codec = dapm->codec;
	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm);
	wm8971_set_bias_level(codec, codec->dapm.bias_level);
	wm8971_set_bias_level(codec, codec->dapm.bias_level);
}
}


Loading