On Tue, Aug 13, 2019 at 01:02:35PM +0200, Dariusz Marcinkiewicz wrote:
Use the new cec_notifier_cec_adap_(un)register() functions to (un)register the notifier for the CEC adapter.
Signed-off-by: Dariusz Marcinkiewicz darekm@google.com Signed-off-by: Hans Verkuil hverkuil-cisco@xs4all.nl Tested-by: Hans Verkuil hverkuil-cisco@xs4all.nl
drivers/gpu/drm/i2c/tda9950.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i2c/tda9950.c b/drivers/gpu/drm/i2c/tda9950.c index 8039fc0d83db4..a5a75bdeb7a5f 100644 --- a/drivers/gpu/drm/i2c/tda9950.c +++ b/drivers/gpu/drm/i2c/tda9950.c @@ -420,7 +420,8 @@ static int tda9950_probe(struct i2c_client *client, priv->hdmi = glue->parent;
priv->adap = cec_allocate_adapter(&tda9950_cec_ops, priv, "tda9950",
CEC_CAP_DEFAULTS,
CEC_CAP_DEFAULTS |
if (IS_ERR(priv->adap)) return PTR_ERR(priv->adap);CEC_CAP_CONNECTOR_INFO, CEC_MAX_LOG_ADDRS);
@@ -457,13 +458,14 @@ static int tda9950_probe(struct i2c_client *client, if (ret < 0) return ret;
- priv->notify = cec_notifier_get(priv->hdmi);
priv->notify = cec_notifier_cec_adap_register(priv->hdmi, NULL,
priv->adap);
if (!priv->notify) return -ENOMEM;
ret = cec_register_adapter(priv->adap, priv->hdmi); if (ret < 0) {
cec_notifier_put(priv->notify);
return ret; }cec_notifier_cec_adap_unregister(priv->notify);
@@ -473,8 +475,6 @@ static int tda9950_probe(struct i2c_client *client, */ devm_remove_action(dev, tda9950_cec_del, priv);
- cec_register_cec_notifier(priv->adap, priv->notify);
- return 0;
}
@@ -482,8 +482,8 @@ static int tda9950_remove(struct i2c_client *client) { struct tda9950_priv *priv = i2c_get_clientdata(client);
- cec_notifier_cec_adap_unregister(priv->notify); cec_unregister_adapter(priv->adap);
- cec_notifier_put(priv->notify);
It looks weird to have an unexpectedly different ordering of unregistration from the registration path - normally, unregistration is the reverse order of initialisation.
In the initialisation path, it seems that we register the notifier and _then_ the adapter. Here, we unregister the notifier and then the adapter rather than what would normally be expected. Why is this? I suspect there will be drivers created that do this the "normal" way round, so if this is a requirement, it needs to be made plainly obvious.
return 0; } -- 2.23.0.rc1.153.gdeed80330f-goog