Re: [PATCH 4/6] s5p-cec: use cec_notifier_cec_adap_(un)register

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

On 2019-07-15 12:30, Hans Verkuil wrote:
> Use cec_notifier_cec_adap_(un)register instead of
> cec_notifier_get, cec_notifier_put and cec_register_cec_notifier.
>
> Also enable the CEC_CAP_CONNECTOR_INFO capability.
>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
> Cc: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
> Cc: Sylwester Nawrocki <snawrocki@xxxxxxxxxx>

Acked-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>

> ---
>   drivers/media/platform/s5p-cec/s5p_cec.c | 23 ++++++++++++++---------
>   1 file changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/media/platform/s5p-cec/s5p_cec.c b/drivers/media/platform/s5p-cec/s5p_cec.c
> index ea6231b387ed..6ddcc35b0bbd 100644
> --- a/drivers/media/platform/s5p-cec/s5p_cec.c
> +++ b/drivers/media/platform/s5p-cec/s5p_cec.c
> @@ -214,21 +214,23 @@ static int s5p_cec_probe(struct platform_device *pdev)
>   	if (IS_ERR(cec->reg))
>   		return PTR_ERR(cec->reg);
>   
> -	cec->notifier = cec_notifier_get(hdmi_dev);
> -	if (cec->notifier == NULL)
> -		return -ENOMEM;
> -
>   	cec->adap = cec_allocate_adapter(&s5p_cec_adap_ops, cec, CEC_NAME,
> -		CEC_CAP_DEFAULTS | (needs_hpd ? CEC_CAP_NEEDS_HPD : 0), 1);
> +		CEC_CAP_DEFAULTS | (needs_hpd ? CEC_CAP_NEEDS_HPD : 0) |
> +		CEC_CAP_CONNECTOR_INFO, 1);
>   	ret = PTR_ERR_OR_ZERO(cec->adap);
>   	if (ret)
>   		return ret;
>   
> -	ret = cec_register_adapter(cec->adap, &pdev->dev);
> -	if (ret)
> +	cec->notifier = cec_notifier_cec_adap_register(hdmi_dev, NULL,
> +						       cec->adap);
> +	if (!cec->notifier) {
> +		ret = -ENOMEM;
>   		goto err_delete_adapter;
> +	}
>   
> -	cec_register_cec_notifier(cec->adap, cec->notifier);
> +	ret = cec_register_adapter(cec->adap, &pdev->dev);
> +	if (ret)
> +		goto err_notifier;
>   
>   	platform_set_drvdata(pdev, cec);
>   	pm_runtime_enable(dev);
> @@ -236,6 +238,9 @@ static int s5p_cec_probe(struct platform_device *pdev)
>   	dev_dbg(dev, "successfully probed\n");
>   	return 0;
>   
> +err_notifier:
> +	cec_notifier_cec_adap_unregister(cec->notifier);
> +
>   err_delete_adapter:
>   	cec_delete_adapter(cec->adap);
>   	return ret;
> @@ -245,8 +250,8 @@ static int s5p_cec_remove(struct platform_device *pdev)
>   {
>   	struct s5p_cec_dev *cec = platform_get_drvdata(pdev);
>   
> +	cec_notifier_cec_adap_unregister(cec->notifier);
>   	cec_unregister_adapter(cec->adap);
> -	cec_notifier_put(cec->notifier);
>   	pm_runtime_disable(&pdev->dev);
>   	return 0;
>   }

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux