|
@@ -504,6 +504,8 @@ int bolero_register_macro(struct device *dev, u16 macro_id,
|
|
|
if (macro_id == TX_MACRO) {
|
|
|
priv->macro_params[macro_id].reg_wake_irq = ops->reg_wake_irq;
|
|
|
priv->macro_params[macro_id].clk_switch = ops->clk_switch;
|
|
|
+ priv->macro_params[macro_id].reg_evt_listener =
|
|
|
+ ops->reg_evt_listener;
|
|
|
}
|
|
|
|
|
|
priv->num_dais += ops->num_dais;
|
|
@@ -567,6 +569,7 @@ void bolero_unregister_macro(struct device *dev, u16 macro_id)
|
|
|
if (macro_id == TX_MACRO) {
|
|
|
priv->macro_params[macro_id].reg_wake_irq = NULL;
|
|
|
priv->macro_params[macro_id].clk_switch = NULL;
|
|
|
+ priv->macro_params[macro_id].reg_evt_listener = NULL;
|
|
|
}
|
|
|
|
|
|
priv->num_dais -= priv->macro_params[macro_id].num_dais;
|
|
@@ -803,6 +806,41 @@ int bolero_tx_clk_switch(struct snd_soc_component *component)
|
|
|
}
|
|
|
EXPORT_SYMBOL(bolero_tx_clk_switch);
|
|
|
|
|
|
+/**
|
|
|
+ * bolero_register_event_listener - Register/Deregister to event listener
|
|
|
+ *
|
|
|
+ * @component: pointer to codec component instance.
|
|
|
+ * @enable: when set to 1 registers to event listener otherwise, derigisters
|
|
|
+ * from the event listener
|
|
|
+ *
|
|
|
+ * Returns 0 on success or -EINVAL on error.
|
|
|
+ */
|
|
|
+int bolero_register_event_listener(struct snd_soc_component *component,
|
|
|
+ bool enable)
|
|
|
+{
|
|
|
+ struct bolero_priv *priv = NULL;
|
|
|
+ int ret = 0;
|
|
|
+
|
|
|
+ if (!component)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ priv = snd_soc_component_get_drvdata(component);
|
|
|
+ if (!priv)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ if (!bolero_is_valid_codec_dev(priv->dev)) {
|
|
|
+ dev_err(component->dev, "%s: invalid codec\n", __func__);
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (priv->macro_params[TX_MACRO].reg_evt_listener)
|
|
|
+ ret = priv->macro_params[TX_MACRO].reg_evt_listener(component,
|
|
|
+ enable);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(bolero_register_event_listener);
|
|
|
+
|
|
|
static int bolero_soc_codec_probe(struct snd_soc_component *component)
|
|
|
{
|
|
|
struct bolero_priv *priv = dev_get_drvdata(component->dev);
|