[PATCH v5 09/34] drm/mediatek: mtk_cec: Switch to register as module_platform_driver

AngeloGioacchino Del Regno posted 34 patches 11 months, 1 week ago
There is a newer version of this series
[PATCH v5 09/34] drm/mediatek: mtk_cec: Switch to register as module_platform_driver
Posted by AngeloGioacchino Del Regno 11 months, 1 week ago
In preparation for splitting out the common bits from the HDMI
driver, change the mtk_cec driver from being registered from the
HDMI driver itself to be a module_platform_driver of its own.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/gpu/drm/mediatek/Makefile   | 4 ++--
 drivers/gpu/drm/mediatek/mtk_cec.c  | 7 ++++++-
 drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +-
 drivers/gpu/drm/mediatek/mtk_hdmi.h | 1 -
 4 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
index 32a2ed6c0cfe..bdd3a062f797 100644
--- a/drivers/gpu/drm/mediatek/Makefile
+++ b/drivers/gpu/drm/mediatek/Makefile
@@ -21,10 +21,10 @@ mediatek-drm-y := mtk_crtc.o \
 
 obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
 
-mediatek-drm-hdmi-objs := mtk_cec.o \
-			  mtk_hdmi.o \
+mediatek-drm-hdmi-objs := mtk_hdmi.o \
 			  mtk_hdmi_ddc.o
 
+obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mtk_cec.o
 obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o
 
 obj-$(CONFIG_DRM_MEDIATEK_DP) += mtk_dp.o
diff --git a/drivers/gpu/drm/mediatek/mtk_cec.c b/drivers/gpu/drm/mediatek/mtk_cec.c
index b42c0d87eba3..c7be530ca041 100644
--- a/drivers/gpu/drm/mediatek/mtk_cec.c
+++ b/drivers/gpu/drm/mediatek/mtk_cec.c
@@ -12,7 +12,6 @@
 #include <linux/platform_device.h>
 
 #include "mtk_cec.h"
-#include "mtk_hdmi.h"
 #include "mtk_drm_drv.h"
 
 #define TR_CONFIG		0x00
@@ -102,6 +101,7 @@ void mtk_cec_set_hpd_event(struct device *dev,
 	cec->hpd_event = hpd_event;
 	spin_unlock_irqrestore(&cec->lock, flags);
 }
+EXPORT_SYMBOL_NS_GPL(mtk_cec_set_hpd_event, "DRM_MTK_HDMI_V1");
 
 bool mtk_cec_hpd_high(struct device *dev)
 {
@@ -112,6 +112,7 @@ bool mtk_cec_hpd_high(struct device *dev)
 
 	return (status & (HDMI_PORD | HDMI_HTPLG)) == (HDMI_PORD | HDMI_HTPLG);
 }
+EXPORT_SYMBOL_NS_GPL(mtk_cec_hpd_high, "DRM_MTK_HDMI_V1");
 
 static void mtk_cec_htplg_irq_init(struct mtk_cec *cec)
 {
@@ -247,3 +248,7 @@ struct platform_driver mtk_cec_driver = {
 		.of_match_table = mtk_cec_of_ids,
 	},
 };
+module_platform_driver(mtk_cec_driver);
+
+MODULE_DESCRIPTION("MediaTek HDMI CEC Driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index ca82bc829cb9..da725182f0db 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1805,7 +1805,6 @@ static struct platform_driver mtk_hdmi_driver = {
 
 static struct platform_driver * const mtk_hdmi_drivers[] = {
 	&mtk_hdmi_ddc_driver,
-	&mtk_cec_driver,
 	&mtk_hdmi_driver,
 };
 
@@ -1827,3 +1826,4 @@ module_exit(mtk_hdmitx_exit);
 MODULE_AUTHOR("Jie Qiu <jie.qiu@mediatek.com>");
 MODULE_DESCRIPTION("MediaTek HDMI Driver");
 MODULE_LICENSE("GPL v2");
+MODULE_IMPORT_NS("DRM_MTK_HDMI_V1");
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.h b/drivers/gpu/drm/mediatek/mtk_hdmi.h
index 472bf141c92b..e40bc4651995 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.h
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.h
@@ -8,7 +8,6 @@
 
 struct platform_driver;
 
-extern struct platform_driver mtk_cec_driver;
 extern struct platform_driver mtk_hdmi_ddc_driver;
 
 #endif /* _MTK_HDMI_CTRL_H */
-- 
2.47.0
Re: [PATCH v5 09/34] drm/mediatek: mtk_cec: Switch to register as module_platform_driver
Posted by CK Hu (胡俊光) 10 months, 1 week ago
Hi, Angelo:

On Mon, 2025-01-13 at 15:52 +0100, AngeloGioacchino Del Regno wrote:
> External email : Please do not click links or open attachments until you have verified the sender or the content.
> 
> 
> In preparation for splitting out the common bits from the HDMI
> driver, change the mtk_cec driver from being registered from the
> HDMI driver itself to be a module_platform_driver of its own.

CEC is not the common part, so the reason is not related to splitting out the common bits.
I think the reason is HDMI v2 driver does not use CEC driver, so you want not to build CEC driver when HDMI v2.

> 
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> ---
>  drivers/gpu/drm/mediatek/Makefile   | 4 ++--
>  drivers/gpu/drm/mediatek/mtk_cec.c  | 7 ++++++-
>  drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +-
>  drivers/gpu/drm/mediatek/mtk_hdmi.h | 1 -
>  4 files changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
> index 32a2ed6c0cfe..bdd3a062f797 100644
> --- a/drivers/gpu/drm/mediatek/Makefile
> +++ b/drivers/gpu/drm/mediatek/Makefile
> @@ -21,10 +21,10 @@ mediatek-drm-y := mtk_crtc.o \
> 
>  obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
> 
> -mediatek-drm-hdmi-objs := mtk_cec.o \
> -                         mtk_hdmi.o \
> +mediatek-drm-hdmi-objs := mtk_hdmi.o \
>                           mtk_hdmi_ddc.o

You don't need to separate mtk_cec to a independent module.
You could include it in v1 and exclude it in v2.

Regards,
CK

> 
> +obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mtk_cec.o
>  obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o
> 
>  obj-$(CONFIG_DRM_MEDIATEK_DP) += mtk_dp.o
> diff --git a/drivers/gpu/drm/mediatek/mtk_cec.c b/drivers/gpu/drm/mediatek/mtk_cec.c
> index b42c0d87eba3..c7be530ca041 100644
> --- a/drivers/gpu/drm/mediatek/mtk_cec.c
> +++ b/drivers/gpu/drm/mediatek/mtk_cec.c
> @@ -12,7 +12,6 @@
>  #include <linux/platform_device.h>
> 
>  #include "mtk_cec.h"
> -#include "mtk_hdmi.h"
>  #include "mtk_drm_drv.h"
> 
>  #define TR_CONFIG              0x00
> @@ -102,6 +101,7 @@ void mtk_cec_set_hpd_event(struct device *dev,
>         cec->hpd_event = hpd_event;
>         spin_unlock_irqrestore(&cec->lock, flags);
>  }
> +EXPORT_SYMBOL_NS_GPL(mtk_cec_set_hpd_event, "DRM_MTK_HDMI_V1");
> 
>  bool mtk_cec_hpd_high(struct device *dev)
>  {
> @@ -112,6 +112,7 @@ bool mtk_cec_hpd_high(struct device *dev)
> 
>         return (status & (HDMI_PORD | HDMI_HTPLG)) == (HDMI_PORD | HDMI_HTPLG);
>  }
> +EXPORT_SYMBOL_NS_GPL(mtk_cec_hpd_high, "DRM_MTK_HDMI_V1");
> 
>  static void mtk_cec_htplg_irq_init(struct mtk_cec *cec)
>  {
> @@ -247,3 +248,7 @@ struct platform_driver mtk_cec_driver = {
>                 .of_match_table = mtk_cec_of_ids,
>         },
>  };
> +module_platform_driver(mtk_cec_driver);
> +
> +MODULE_DESCRIPTION("MediaTek HDMI CEC Driver");
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> index ca82bc829cb9..da725182f0db 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> @@ -1805,7 +1805,6 @@ static struct platform_driver mtk_hdmi_driver = {
> 
>  static struct platform_driver * const mtk_hdmi_drivers[] = {
>         &mtk_hdmi_ddc_driver,
> -       &mtk_cec_driver,
>         &mtk_hdmi_driver,
>  };
> 
> @@ -1827,3 +1826,4 @@ module_exit(mtk_hdmitx_exit);
>  MODULE_AUTHOR("Jie Qiu <jie.qiu@mediatek.com>");
>  MODULE_DESCRIPTION("MediaTek HDMI Driver");
>  MODULE_LICENSE("GPL v2");
> +MODULE_IMPORT_NS("DRM_MTK_HDMI_V1");
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.h b/drivers/gpu/drm/mediatek/mtk_hdmi.h
> index 472bf141c92b..e40bc4651995 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.h
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.h
> @@ -8,7 +8,6 @@
> 
>  struct platform_driver;
> 
> -extern struct platform_driver mtk_cec_driver;
>  extern struct platform_driver mtk_hdmi_ddc_driver;
> 
>  #endif /* _MTK_HDMI_CTRL_H */
> --
> 2.47.0
> 

Re: [PATCH v5 09/34] drm/mediatek: mtk_cec: Switch to register as module_platform_driver
Posted by AngeloGioacchino Del Regno 10 months, 1 week ago
Il 10/02/25 07:58, CK Hu (胡俊光) ha scritto:
> Hi, Angelo:
> 
> On Mon, 2025-01-13 at 15:52 +0100, AngeloGioacchino Del Regno wrote:
>> External email : Please do not click links or open attachments until you have verified the sender or the content.
>>
>>
>> In preparation for splitting out the common bits from the HDMI
>> driver, change the mtk_cec driver from being registered from the
>> HDMI driver itself to be a module_platform_driver of its own.
> 
> CEC is not the common part, so the reason is not related to splitting out the common bits.
> I think the reason is HDMI v2 driver does not use CEC driver, so you want not to build CEC driver when HDMI v2.
> 

Yeah, that's right, I'll change the commit description to clarify that, thanks!

>>
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> ---
>>   drivers/gpu/drm/mediatek/Makefile   | 4 ++--
>>   drivers/gpu/drm/mediatek/mtk_cec.c  | 7 ++++++-
>>   drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +-
>>   drivers/gpu/drm/mediatek/mtk_hdmi.h | 1 -
>>   4 files changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile
>> index 32a2ed6c0cfe..bdd3a062f797 100644
>> --- a/drivers/gpu/drm/mediatek/Makefile
>> +++ b/drivers/gpu/drm/mediatek/Makefile
>> @@ -21,10 +21,10 @@ mediatek-drm-y := mtk_crtc.o \
>>
>>   obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
>>
>> -mediatek-drm-hdmi-objs := mtk_cec.o \
>> -                         mtk_hdmi.o \
>> +mediatek-drm-hdmi-objs := mtk_hdmi.o \
>>                            mtk_hdmi_ddc.o
> 
> You don't need to separate mtk_cec to a independent module.

Yes, I do need to do that. You cannot compile two platform drivers in one obj.

Try to compile your suggestion and see how spectacularly it fails ;-)

Cheers,
Angelo

> You could include it in v1 and exclude it in v2.
> 
> Regards,
> CK
> 
>>
>> +obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mtk_cec.o
>>   obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o
>>
>>   obj-$(CONFIG_DRM_MEDIATEK_DP) += mtk_dp.o
>> diff --git a/drivers/gpu/drm/mediatek/mtk_cec.c b/drivers/gpu/drm/mediatek/mtk_cec.c
>> index b42c0d87eba3..c7be530ca041 100644
>> --- a/drivers/gpu/drm/mediatek/mtk_cec.c
>> +++ b/drivers/gpu/drm/mediatek/mtk_cec.c
>> @@ -12,7 +12,6 @@
>>   #include <linux/platform_device.h>
>>
>>   #include "mtk_cec.h"
>> -#include "mtk_hdmi.h"
>>   #include "mtk_drm_drv.h"
>>
>>   #define TR_CONFIG              0x00
>> @@ -102,6 +101,7 @@ void mtk_cec_set_hpd_event(struct device *dev,
>>          cec->hpd_event = hpd_event;
>>          spin_unlock_irqrestore(&cec->lock, flags);
>>   }
>> +EXPORT_SYMBOL_NS_GPL(mtk_cec_set_hpd_event, "DRM_MTK_HDMI_V1");
>>
>>   bool mtk_cec_hpd_high(struct device *dev)
>>   {
>> @@ -112,6 +112,7 @@ bool mtk_cec_hpd_high(struct device *dev)
>>
>>          return (status & (HDMI_PORD | HDMI_HTPLG)) == (HDMI_PORD | HDMI_HTPLG);
>>   }
>> +EXPORT_SYMBOL_NS_GPL(mtk_cec_hpd_high, "DRM_MTK_HDMI_V1");
>>
>>   static void mtk_cec_htplg_irq_init(struct mtk_cec *cec)
>>   {
>> @@ -247,3 +248,7 @@ struct platform_driver mtk_cec_driver = {
>>                  .of_match_table = mtk_cec_of_ids,
>>          },
>>   };
>> +module_platform_driver(mtk_cec_driver);
>> +
>> +MODULE_DESCRIPTION("MediaTek HDMI CEC Driver");
>> +MODULE_LICENSE("GPL");
>> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
>> index ca82bc829cb9..da725182f0db 100644
>> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
>> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
>> @@ -1805,7 +1805,6 @@ static struct platform_driver mtk_hdmi_driver = {
>>
>>   static struct platform_driver * const mtk_hdmi_drivers[] = {
>>          &mtk_hdmi_ddc_driver,
>> -       &mtk_cec_driver,
>>          &mtk_hdmi_driver,
>>   };
>>
>> @@ -1827,3 +1826,4 @@ module_exit(mtk_hdmitx_exit);
>>   MODULE_AUTHOR("Jie Qiu <jie.qiu@mediatek.com>");
>>   MODULE_DESCRIPTION("MediaTek HDMI Driver");
>>   MODULE_LICENSE("GPL v2");
>> +MODULE_IMPORT_NS("DRM_MTK_HDMI_V1");
>> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.h b/drivers/gpu/drm/mediatek/mtk_hdmi.h
>> index 472bf141c92b..e40bc4651995 100644
>> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.h
>> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.h
>> @@ -8,7 +8,6 @@
>>
>>   struct platform_driver;
>>
>> -extern struct platform_driver mtk_cec_driver;
>>   extern struct platform_driver mtk_hdmi_ddc_driver;
>>
>>   #endif /* _MTK_HDMI_CTRL_H */
>> --
>> 2.47.0
>>
> 


Re: [PATCH v5 09/34] drm/mediatek: mtk_cec: Switch to register as module_platform_driver
Posted by Alexandre Mergnat 10 months, 1 week ago

On 13/01/2025 15:52, AngeloGioacchino Del Regno wrote:
> In preparation for splitting out the common bits from the HDMI
> driver, change the mtk_cec driver from being registered from the
> HDMI driver itself to be a module_platform_driver of its own.

Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>

-- 
Regards,
Alexandre