[PATCH v2 3/4] drm/bridge: dw-hdmi: add cec driver
Neil Armstrong
narmstrong at baylibre.com
Wed Aug 2 14:17:39 UTC 2017
On 08/02/2017 03:14 PM, Laurent Pinchart wrote:
> Hi Hans,
>
> On Wednesday 02 Aug 2017 08:47:23 Hans Verkuil wrote:
>> On 08/02/2017 12:32 AM, Laurent Pinchart wrote:
>>>> +
>>>> + cec_register_cec_notifier(cec->adap, cec->notify);
>>>> +
>>>> + return 0;
>>>> +}
>>>> +
>>>> +static int dw_hdmi_cec_remove(struct platform_device *pdev)
>>>> +{
>>>> + struct dw_hdmi_cec *cec = platform_get_drvdata(pdev);
>>>> +
>>>> + cec_unregister_adapter(cec->adap);
>>>> + cec_notifier_put(cec->notify);
>>>> +
>>>> + return 0;
>>>> +}
>>>> +
>>>> +static struct platform_driver dw_hdmi_cec_driver = {
>>>> + .probe = dw_hdmi_cec_probe,
>>>> + .remove = dw_hdmi_cec_remove,
>>>> + .driver = {
>>>> + .name = "dw-hdmi-cec",
>>>> + },
>>>> +};
>>>> +module_platform_driver(dw_hdmi_cec_driver);
>>>
>>> Is there a particular reason why this has to be a separate module instead
>>> of simply calling the CEC init/cleanup functions directly from the main
>>> dw-hdmi driver ?
>>
>> Not all SoCs that use dw-hdmi also use the dw-hdmi CEC implementation. Some
>> use their own implementation (amlogic).
>
> Lovely. Of course we need to reinvent the wheel every time, where would the
> fun be otherwise ?
>
>> So by implementing the cec-notifier in the dw-hdmi driver and keeping dw-
>> hdmi CEC separate you can easily choose whether or not you want to use this
>> CEC driver or another SoC CEC driver.
>
> I'm certainly fine with such a split, but I don't think it requires a separate
> platform_driver. We could use a similar approach as with the HDMI PHY that can
> also differ between SoCs. The PHY is identified at runtime when possible, and
> the SoC-specific glue code can override that with a few data fields and
> function pointers.
The HDMI CEC is in the Synopsys IP like the I2S or AHB Audio, and is optional.
So it's legitimate to handle it in a similar fashion.
Amlogic has a separate custom CEC implementation, having an optional driver
makes it possible to avoid loading unnecessary code like the AHB audio driver
for non-freescale platforms.
>
>>>> +MODULE_AUTHOR("Russell King <rmk+kernel at armlinux.org.uk>");
>>>> +MODULE_DESCRIPTION("Synopsys Designware HDMI CEC driver for i.MX");
>>>> +MODULE_LICENSE("GPL");
>>>> +MODULE_ALIAS(PLATFORM_MODULE_PREFIX "dw-hdmi-cec");
>
Yes let's get this merged !
Neil
More information about the dri-devel
mailing list