[PATCH] drm/msm: add missing MODULE_DEVICE_ID definitions

Dmitry Baryshkov posted 1 patch 1 month, 3 weeks ago
There is a newer version of this series
drivers/gpu/drm/msm/adreno/adreno_device.c | 1 +
drivers/gpu/drm/msm/dp/dp_display.c        | 1 +
drivers/gpu/drm/msm/dsi/dsi.c              | 1 +
drivers/gpu/drm/msm/dsi/phy/dsi_phy.c      | 1 +
drivers/gpu/drm/msm/hdmi/hdmi.c            | 1 +
drivers/gpu/drm/msm/hdmi/hdmi_phy.c        | 1 +
6 files changed, 6 insertions(+)
[PATCH] drm/msm: add missing MODULE_DEVICE_ID definitions
Posted by Dmitry Baryshkov 1 month, 3 weeks ago
The drm/msm module bundles several drivers, each of them having a
separate OF match table, however only MDSS (subsystem) and KMS devices
had corresponding MODULE_DEVICE_ID tables. Thus, if the platform has
enabled only the GPU device (without enabling display counterparts), the
module will not be picked up and loaded by userspace.

Add MODULE_DEVICE_ID to the GPU driver and to all other drivers in this
module.

Fixes: 55459968176f ("drm/msm: add a330/apq8x74")
Reported-by: Loïc Minier <loic.minier@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
The Fixes tag points to the first commit introducing OF-based GPU
matching (and thus possibility for the headless GPU binding). Other
are not usable without the main MDP4 / MDP5 / DPU drivers, so they
didn't get the Fixes tags of their own.
---
 drivers/gpu/drm/msm/adreno/adreno_device.c | 1 +
 drivers/gpu/drm/msm/dp/dp_display.c        | 1 +
 drivers/gpu/drm/msm/dsi/dsi.c              | 1 +
 drivers/gpu/drm/msm/dsi/phy/dsi_phy.c      | 1 +
 drivers/gpu/drm/msm/hdmi/hdmi.c            | 1 +
 drivers/gpu/drm/msm/hdmi/hdmi_phy.c        | 1 +
 6 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c
index 554d746f115b..4edfe80c5be7 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_device.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
@@ -302,6 +302,7 @@ static const struct of_device_id dt_match[] = {
 	{ .compatible = "qcom,kgsl-3d0" },
 	{}
 };
+MODULE_DEVICE_TABLE(of, dt_match);
 
 static int adreno_runtime_resume(struct device *dev)
 {
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index 476848bf8cd1..d2124d625485 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -210,6 +210,7 @@ static const struct of_device_id msm_dp_dt_match[] = {
 	{ .compatible = "qcom,x1e80100-dp", .data = &msm_dp_desc_x1e80100 },
 	{}
 };
+MODULE_DEVICE_TABLE(of, msm_dp_dt_match);
 
 static struct msm_dp_display_private *dev_get_dp_display_private(struct device *dev)
 {
diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
index d8bb40ef820e..3c9f01ed6271 100644
--- a/drivers/gpu/drm/msm/dsi/dsi.c
+++ b/drivers/gpu/drm/msm/dsi/dsi.c
@@ -198,6 +198,7 @@ static const struct of_device_id dt_match[] = {
 	{ .compatible = "qcom,dsi-ctrl-6g-qcm2290" },
 	{}
 };
+MODULE_DEVICE_TABLE(of, dt_match);
 
 static const struct dev_pm_ops dsi_pm_ops = {
 	SET_RUNTIME_PM_OPS(msm_dsi_runtime_suspend, msm_dsi_runtime_resume, NULL)
diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
index 7937266de1d2..c59375aaae19 100644
--- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
+++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
@@ -582,6 +582,7 @@ static const struct of_device_id dsi_phy_dt_match[] = {
 #endif
 	{}
 };
+MODULE_DEVICE_TABLE(of, dsi_phy_dt_match);
 
 /*
  * Currently, we only support one SoC for each PHY type. When we have multiple
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c
index 5afac09c0d33..d5ef5089c9e9 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
@@ -441,6 +441,7 @@ static const struct of_device_id msm_hdmi_dt_match[] = {
 	{ .compatible = "qcom,hdmi-tx-8660", .data = &hdmi_tx_8960_config },
 	{}
 };
+MODULE_DEVICE_TABLE(of, msm_hdmi_dt_match);
 
 static struct platform_driver msm_hdmi_driver = {
 	.probe = msm_hdmi_dev_probe,
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
index 667573f1db7c..f726555bb681 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
@@ -204,6 +204,7 @@ static const struct of_device_id msm_hdmi_phy_dt_match[] = {
 	  .data = &msm_hdmi_phy_8998_cfg },
 	{}
 };
+MODULE_DEVICE_TABLE(of, msm_hdmi_phy_dt_match);
 
 static struct platform_driver msm_hdmi_phy_platform_driver = {
 	.probe      = msm_hdmi_phy_probe,

---
base-commit: fe9e3edb6a215515d1148d32a5c445c5bdd7916f
change-id: 20260219-msm-device-id-84b95d22c0b0

Best regards,
-- 
With best wishes
Dmitry

Re: [PATCH] drm/msm: add missing MODULE_DEVICE_ID definitions
Posted by Akhil P Oommen 1 month, 3 weeks ago
On 2/19/2026 5:49 PM, Dmitry Baryshkov wrote:
> The drm/msm module bundles several drivers, each of them having a
> separate OF match table, however only MDSS (subsystem) and KMS devices
> had corresponding MODULE_DEVICE_ID tables. Thus, if the platform has
> enabled only the GPU device (without enabling display counterparts), the
> module will not be picked up and loaded by userspace.
> 
> Add MODULE_DEVICE_ID to the GPU driver and to all other drivers in this
> module.
> 
> Fixes: 55459968176f ("drm/msm: add a330/apq8x74")
> Reported-by: Loïc Minier <loic.minier@oss.qualcomm.com>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
> The Fixes tag points to the first commit introducing OF-based GPU
> matching (and thus possibility for the headless GPU binding). Other
> are not usable without the main MDP4 / MDP5 / DPU drivers, so they
> didn't get the Fixes tags of their own.
> ---
>  drivers/gpu/drm/msm/adreno/adreno_device.c | 1 +
>  drivers/gpu/drm/msm/dp/dp_display.c        | 1 +
>  drivers/gpu/drm/msm/dsi/dsi.c              | 1 +
>  drivers/gpu/drm/msm/dsi/phy/dsi_phy.c      | 1 +
>  drivers/gpu/drm/msm/hdmi/hdmi.c            | 1 +
>  drivers/gpu/drm/msm/hdmi/hdmi_phy.c        | 1 +
>  6 files changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c
> index 554d746f115b..4edfe80c5be7 100644
> --- a/drivers/gpu/drm/msm/adreno/adreno_device.c
> +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
> @@ -302,6 +302,7 @@ static const struct of_device_id dt_match[] = {
>  	{ .compatible = "qcom,kgsl-3d0" },
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, dt_match);
>  
>  static int adreno_runtime_resume(struct device *dev)
>  {
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 476848bf8cd1..d2124d625485 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -210,6 +210,7 @@ static const struct of_device_id msm_dp_dt_match[] = {
>  	{ .compatible = "qcom,x1e80100-dp", .data = &msm_dp_desc_x1e80100 },
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, msm_dp_dt_match);
>  
>  static struct msm_dp_display_private *dev_get_dp_display_private(struct device *dev)
>  {
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
> index d8bb40ef820e..3c9f01ed6271 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi.c
> @@ -198,6 +198,7 @@ static const struct of_device_id dt_match[] = {
>  	{ .compatible = "qcom,dsi-ctrl-6g-qcm2290" },
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, dt_match);
>  
>  static const struct dev_pm_ops dsi_pm_ops = {
>  	SET_RUNTIME_PM_OPS(msm_dsi_runtime_suspend, msm_dsi_runtime_resume, NULL)
> diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
> index 7937266de1d2..c59375aaae19 100644
> --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
> +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
> @@ -582,6 +582,7 @@ static const struct of_device_id dsi_phy_dt_match[] = {
>  #endif
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, dsi_phy_dt_match);
>  
>  /*
>   * Currently, we only support one SoC for each PHY type. When we have multiple
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c
> index 5afac09c0d33..d5ef5089c9e9 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> @@ -441,6 +441,7 @@ static const struct of_device_id msm_hdmi_dt_match[] = {
>  	{ .compatible = "qcom,hdmi-tx-8660", .data = &hdmi_tx_8960_config },
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, msm_hdmi_dt_match);
>  
>  static struct platform_driver msm_hdmi_driver = {
>  	.probe = msm_hdmi_dev_probe,
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
> index 667573f1db7c..f726555bb681 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
> @@ -204,6 +204,7 @@ static const struct of_device_id msm_hdmi_phy_dt_match[] = {
>  	  .data = &msm_hdmi_phy_8998_cfg },
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, msm_hdmi_phy_dt_match);
>  
>  static struct platform_driver msm_hdmi_phy_platform_driver = {
>  	.probe      = msm_hdmi_phy_probe,
> 

https://lore.kernel.org/lkml/20260124-adreno-module-table-v1-1-9c2dbb2638b4@oss.qualcomm.com/
fwiw, there was a related patch that I posted recently. We can drop that.

Reviewed-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>

-Akhil.

> ---
> base-commit: fe9e3edb6a215515d1148d32a5c445c5bdd7916f
> change-id: 20260219-msm-device-id-84b95d22c0b0
> 
> Best regards,

Re: [PATCH] drm/msm: add missing MODULE_DEVICE_ID definitions
Posted by Dmitry Baryshkov 1 month, 3 weeks ago
On Fri, Feb 20, 2026 at 01:12:15AM +0530, Akhil P Oommen wrote:
> On 2/19/2026 5:49 PM, Dmitry Baryshkov wrote:
> > The drm/msm module bundles several drivers, each of them having a
> > separate OF match table, however only MDSS (subsystem) and KMS devices
> > had corresponding MODULE_DEVICE_ID tables. Thus, if the platform has
> > enabled only the GPU device (without enabling display counterparts), the
> > module will not be picked up and loaded by userspace.
> > 
> > Add MODULE_DEVICE_ID to the GPU driver and to all other drivers in this
> > module.
> > 
> > Fixes: 55459968176f ("drm/msm: add a330/apq8x74")
> > Reported-by: Loïc Minier <loic.minier@oss.qualcomm.com>
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > ---
> > The Fixes tag points to the first commit introducing OF-based GPU
> > matching (and thus possibility for the headless GPU binding). Other
> > are not usable without the main MDP4 / MDP5 / DPU drivers, so they
> > didn't get the Fixes tags of their own.
> > ---
> >  drivers/gpu/drm/msm/adreno/adreno_device.c | 1 +
> >  drivers/gpu/drm/msm/dp/dp_display.c        | 1 +
> >  drivers/gpu/drm/msm/dsi/dsi.c              | 1 +
> >  drivers/gpu/drm/msm/dsi/phy/dsi_phy.c      | 1 +
> >  drivers/gpu/drm/msm/hdmi/hdmi.c            | 1 +
> >  drivers/gpu/drm/msm/hdmi/hdmi_phy.c        | 1 +
> >  6 files changed, 6 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c
> > index 554d746f115b..4edfe80c5be7 100644
> > --- a/drivers/gpu/drm/msm/adreno/adreno_device.c
> > +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
> > @@ -302,6 +302,7 @@ static const struct of_device_id dt_match[] = {
> >  	{ .compatible = "qcom,kgsl-3d0" },
> >  	{}
> >  };
> > +MODULE_DEVICE_TABLE(of, dt_match);
> >  
> >  static int adreno_runtime_resume(struct device *dev)
> >  {
> > diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> > index 476848bf8cd1..d2124d625485 100644
> > --- a/drivers/gpu/drm/msm/dp/dp_display.c
> > +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> > @@ -210,6 +210,7 @@ static const struct of_device_id msm_dp_dt_match[] = {
> >  	{ .compatible = "qcom,x1e80100-dp", .data = &msm_dp_desc_x1e80100 },
> >  	{}
> >  };
> > +MODULE_DEVICE_TABLE(of, msm_dp_dt_match);
> >  
> >  static struct msm_dp_display_private *dev_get_dp_display_private(struct device *dev)
> >  {
> > diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
> > index d8bb40ef820e..3c9f01ed6271 100644
> > --- a/drivers/gpu/drm/msm/dsi/dsi.c
> > +++ b/drivers/gpu/drm/msm/dsi/dsi.c
> > @@ -198,6 +198,7 @@ static const struct of_device_id dt_match[] = {
> >  	{ .compatible = "qcom,dsi-ctrl-6g-qcm2290" },
> >  	{}
> >  };
> > +MODULE_DEVICE_TABLE(of, dt_match);
> >  
> >  static const struct dev_pm_ops dsi_pm_ops = {
> >  	SET_RUNTIME_PM_OPS(msm_dsi_runtime_suspend, msm_dsi_runtime_resume, NULL)
> > diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
> > index 7937266de1d2..c59375aaae19 100644
> > --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
> > +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
> > @@ -582,6 +582,7 @@ static const struct of_device_id dsi_phy_dt_match[] = {
> >  #endif
> >  	{}
> >  };
> > +MODULE_DEVICE_TABLE(of, dsi_phy_dt_match);
> >  
> >  /*
> >   * Currently, we only support one SoC for each PHY type. When we have multiple
> > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c
> > index 5afac09c0d33..d5ef5089c9e9 100644
> > --- a/drivers/gpu/drm/msm/hdmi/hdmi.c
> > +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
> > @@ -441,6 +441,7 @@ static const struct of_device_id msm_hdmi_dt_match[] = {
> >  	{ .compatible = "qcom,hdmi-tx-8660", .data = &hdmi_tx_8960_config },
> >  	{}
> >  };
> > +MODULE_DEVICE_TABLE(of, msm_hdmi_dt_match);
> >  
> >  static struct platform_driver msm_hdmi_driver = {
> >  	.probe = msm_hdmi_dev_probe,
> > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
> > index 667573f1db7c..f726555bb681 100644
> > --- a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
> > +++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c
> > @@ -204,6 +204,7 @@ static const struct of_device_id msm_hdmi_phy_dt_match[] = {
> >  	  .data = &msm_hdmi_phy_8998_cfg },
> >  	{}
> >  };
> > +MODULE_DEVICE_TABLE(of, msm_hdmi_phy_dt_match);
> >  
> >  static struct platform_driver msm_hdmi_phy_platform_driver = {
> >  	.probe      = msm_hdmi_phy_probe,
> > 
> 
> https://lore.kernel.org/lkml/20260124-adreno-module-table-v1-1-9c2dbb2638b4@oss.qualcomm.com/
> fwiw, there was a related patch that I posted recently. We can drop that.

Ouch, sorry, I forgot about it. I'll pick it up and then apply the rest
of this patch on top, adjusting the Fixes and commit message.

> 
> Reviewed-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> 
> -Akhil.
> 
> > ---
> > base-commit: fe9e3edb6a215515d1148d32a5c445c5bdd7916f
> > change-id: 20260219-msm-device-id-84b95d22c0b0
> > 
> > Best regards,
> 

-- 
With best wishes
Dmitry