|
@@ -1576,31 +1576,6 @@ static const struct drm_bridge_funcs tda998x_bridge_funcs = {
|
|
|
.enable = tda998x_bridge_enable,
|
|
|
};
|
|
|
|
|
|
-static void tda998x_destroy(struct device *dev)
|
|
|
-{
|
|
|
- struct tda998x_priv *priv = dev_get_drvdata(dev);
|
|
|
-
|
|
|
- drm_bridge_remove(&priv->bridge);
|
|
|
-
|
|
|
- /* disable all IRQs and free the IRQ handler */
|
|
|
- cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
|
|
|
- reg_clear(priv, REG_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
|
|
|
-
|
|
|
- if (priv->audio_pdev)
|
|
|
- platform_device_unregister(priv->audio_pdev);
|
|
|
-
|
|
|
- if (priv->hdmi->irq)
|
|
|
- free_irq(priv->hdmi->irq, priv);
|
|
|
-
|
|
|
- del_timer_sync(&priv->edid_delay_timer);
|
|
|
- cancel_work_sync(&priv->detect_work);
|
|
|
-
|
|
|
- i2c_unregister_device(priv->cec);
|
|
|
-
|
|
|
- if (priv->cec_notify)
|
|
|
- cec_notifier_put(priv->cec_notify);
|
|
|
-}
|
|
|
-
|
|
|
/* I2C driver functions */
|
|
|
|
|
|
static int tda998x_get_audio_ports(struct tda998x_priv *priv,
|
|
@@ -1664,6 +1639,31 @@ static void tda998x_set_config(struct tda998x_priv *priv,
|
|
|
priv->audio_params = p->audio_params;
|
|
|
}
|
|
|
|
|
|
+static void tda998x_destroy(struct device *dev)
|
|
|
+{
|
|
|
+ struct tda998x_priv *priv = dev_get_drvdata(dev);
|
|
|
+
|
|
|
+ drm_bridge_remove(&priv->bridge);
|
|
|
+
|
|
|
+ /* disable all IRQs and free the IRQ handler */
|
|
|
+ cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
|
|
|
+ reg_clear(priv, REG_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
|
|
|
+
|
|
|
+ if (priv->audio_pdev)
|
|
|
+ platform_device_unregister(priv->audio_pdev);
|
|
|
+
|
|
|
+ if (priv->hdmi->irq)
|
|
|
+ free_irq(priv->hdmi->irq, priv);
|
|
|
+
|
|
|
+ del_timer_sync(&priv->edid_delay_timer);
|
|
|
+ cancel_work_sync(&priv->detect_work);
|
|
|
+
|
|
|
+ i2c_unregister_device(priv->cec);
|
|
|
+
|
|
|
+ if (priv->cec_notify)
|
|
|
+ cec_notifier_put(priv->cec_notify);
|
|
|
+}
|
|
|
+
|
|
|
static int tda998x_create(struct device *dev)
|
|
|
{
|
|
|
struct i2c_client *client = to_i2c_client(dev);
|
|
@@ -1705,13 +1705,13 @@ static int tda998x_create(struct device *dev)
|
|
|
/* read version: */
|
|
|
rev_lo = reg_read(priv, REG_VERSION_LSB);
|
|
|
if (rev_lo < 0) {
|
|
|
- dev_err(&client->dev, "failed to read version: %d\n", rev_lo);
|
|
|
+ dev_err(dev, "failed to read version: %d\n", rev_lo);
|
|
|
return rev_lo;
|
|
|
}
|
|
|
|
|
|
rev_hi = reg_read(priv, REG_VERSION_MSB);
|
|
|
if (rev_hi < 0) {
|
|
|
- dev_err(&client->dev, "failed to read version: %d\n", rev_hi);
|
|
|
+ dev_err(dev, "failed to read version: %d\n", rev_hi);
|
|
|
return rev_hi;
|
|
|
}
|
|
|
|
|
@@ -1722,20 +1722,19 @@ static int tda998x_create(struct device *dev)
|
|
|
|
|
|
switch (priv->rev) {
|
|
|
case TDA9989N2:
|
|
|
- dev_info(&client->dev, "found TDA9989 n2");
|
|
|
+ dev_info(dev, "found TDA9989 n2");
|
|
|
break;
|
|
|
case TDA19989:
|
|
|
- dev_info(&client->dev, "found TDA19989");
|
|
|
+ dev_info(dev, "found TDA19989");
|
|
|
break;
|
|
|
case TDA19989N2:
|
|
|
- dev_info(&client->dev, "found TDA19989 n2");
|
|
|
+ dev_info(dev, "found TDA19989 n2");
|
|
|
break;
|
|
|
case TDA19988:
|
|
|
- dev_info(&client->dev, "found TDA19988");
|
|
|
+ dev_info(dev, "found TDA19988");
|
|
|
break;
|
|
|
default:
|
|
|
- dev_err(&client->dev, "found unsupported device: %04x\n",
|
|
|
- priv->rev);
|
|
|
+ dev_err(dev, "found unsupported device: %04x\n", priv->rev);
|
|
|
return -ENXIO;
|
|
|
}
|
|
|
|
|
@@ -1778,8 +1777,7 @@ static int tda998x_create(struct device *dev)
|
|
|
tda998x_irq_thread, irq_flags,
|
|
|
"tda998x", priv);
|
|
|
if (ret) {
|
|
|
- dev_err(&client->dev,
|
|
|
- "failed to request IRQ#%u: %d\n",
|
|
|
+ dev_err(dev, "failed to request IRQ#%u: %d\n",
|
|
|
client->irq, ret);
|
|
|
goto err_irq;
|
|
|
}
|
|
@@ -1788,13 +1786,13 @@ static int tda998x_create(struct device *dev)
|
|
|
cec_write(priv, REG_CEC_RXSHPDINTENA, CEC_RXSHPDLEV_HPD);
|
|
|
}
|
|
|
|
|
|
- priv->cec_notify = cec_notifier_get(&client->dev);
|
|
|
+ priv->cec_notify = cec_notifier_get(dev);
|
|
|
if (!priv->cec_notify) {
|
|
|
ret = -ENOMEM;
|
|
|
goto fail;
|
|
|
}
|
|
|
|
|
|
- priv->cec_glue.parent = &client->dev;
|
|
|
+ priv->cec_glue.parent = dev;
|
|
|
priv->cec_glue.data = priv;
|
|
|
priv->cec_glue.init = tda998x_cec_hook_init;
|
|
|
priv->cec_glue.exit = tda998x_cec_hook_exit;
|
|
@@ -1839,8 +1837,8 @@ static int tda998x_create(struct device *dev)
|
|
|
|
|
|
if (priv->audio_port[0].format != AFMT_UNUSED)
|
|
|
tda998x_audio_codec_init(priv, &client->dev);
|
|
|
- } else if (client->dev.platform_data) {
|
|
|
- tda998x_set_config(priv, client->dev.platform_data);
|
|
|
+ } else if (dev->platform_data) {
|
|
|
+ tda998x_set_config(priv, dev->platform_data);
|
|
|
}
|
|
|
|
|
|
priv->bridge.funcs = &tda998x_bridge_funcs;
|