Chen Jiahao
2021-Jun-15  03:16 UTC
[Nouveau] [PATCH] drm: nouveau: fix nouveau_backlight compiling error
There is a compiling error in disp.c while not selecting
CONFIG_DRM_NOUVEAU_BACKLIGHT:
drivers/gpu/drm/nouveau/dispnv50/disp.c: In function ?nv50_sor_atomic_disable?:
drivers/gpu/drm/nouveau/dispnv50/disp.c:1665:52: error:
?struct nouveau_connector? has no member named ?backlight?
 1665 |  struct nouveau_backlight *backlight = nv_connector->backlight;
      |                                                    ^~
drivers/gpu/drm/nouveau/dispnv50/disp.c:1670:28: error: dereferencing pointer
to incomplete type ?struct nouveau_backlight?
 1670 |  if (backlight && backlight->uses_dpcd) {
      |                            ^~
The problem is solved by adding the CONFIG_DRM_NOUVEAU_BACKLIGHT dependency
where struct nouveau_backlight is used.
Signed-off-by: Chen Jiahao <chenjiahao16 at huawei.com>
---
 drivers/gpu/drm/nouveau/dispnv50/disp.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c
b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 093e1f7163b3..d266b7721e29 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -1662,17 +1662,21 @@ nv50_sor_atomic_disable(struct drm_encoder *encoder,
struct drm_atomic_state *st
 	struct nouveau_drm *drm = nouveau_drm(nv_encoder->base.base.dev);
 	struct nouveau_crtc *nv_crtc = nouveau_crtc(nv_encoder->crtc);
 	struct nouveau_connector *nv_connector = nv50_outp_get_old_connector(state,
nv_encoder);
+#ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
 	struct nouveau_backlight *backlight = nv_connector->backlight;
+#endif
 	struct drm_dp_aux *aux = &nv_connector->aux;
 	int ret;
 	u8 pwr;
 
+#ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
 	if (backlight && backlight->uses_dpcd) {
 		ret = drm_edp_backlight_disable(aux, &backlight->edp_info);
 		if (ret < 0)
 			NV_ERROR(drm, "Failed to disable backlight on [CONNECTOR:%d:%s]:
%d\n",
 				 nv_connector->base.base.id, nv_connector->base.name, ret);
 	}
+#endif
 
 	if (nv_encoder->dcb->type == DCB_OUTPUT_DP) {
 		int ret = drm_dp_dpcd_readb(aux, DP_SET_POWER, &pwr);
-- 
2.31.1
Lyude Paul
2021-Jun-15  03:43 UTC
[Nouveau] [PATCH] drm: nouveau: fix nouveau_backlight compiling error
This needs a fixes tag:
	Fixes: 6eca310e8924 ("drm/nouveau/kms/nv50-: Add basic DPCD backlight
support for nouveau")
with that fixed:
Reviewed-by: Lyude Paul <lyude at redhat.com>
On Tue, 2021-06-15 at 11:16 +0800, Chen Jiahao wrote:> There is a compiling error in disp.c while not selecting
> CONFIG_DRM_NOUVEAU_BACKLIGHT:
> 
> drivers/gpu/drm/nouveau/dispnv50/disp.c: In function
> ?nv50_sor_atomic_disable?:
> drivers/gpu/drm/nouveau/dispnv50/disp.c:1665:52: error:
> ?struct nouveau_connector? has no member named ?backlight?
> ?1665 |? struct nouveau_backlight *backlight = nv_connector->backlight;
> ????? |??????????????????????????????????????????????????? ^~
> drivers/gpu/drm/nouveau/dispnv50/disp.c:1670:28: error: dereferencing
> pointer
> to incomplete type ?struct nouveau_backlight?
> ?1670 |? if (backlight && backlight->uses_dpcd) {
> ????? |??????????????????????????? ^~
> 
> The problem is solved by adding the CONFIG_DRM_NOUVEAU_BACKLIGHT dependency
> where struct nouveau_backlight is used.
> 
> Signed-off-by: Chen Jiahao <chenjiahao16 at huawei.com>
> ---
> ?drivers/gpu/drm/nouveau/dispnv50/disp.c | 4 ++++
> ?1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index 093e1f7163b3..d266b7721e29 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -1662,17 +1662,21 @@ nv50_sor_atomic_disable(struct drm_encoder
*encoder,
> struct drm_atomic_state *st
> ????????struct nouveau_drm *drm =
nouveau_drm(nv_encoder->base.base.dev);
> ????????struct nouveau_crtc *nv_crtc = nouveau_crtc(nv_encoder->crtc);
> ????????struct nouveau_connector *nv_connector >
nv50_outp_get_old_connector(state, nv_encoder);
> +#ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
> ????????struct nouveau_backlight *backlight = nv_connector->backlight;
> +#endif
> ????????struct drm_dp_aux *aux = &nv_connector->aux;
> ????????int ret;
> ????????u8 pwr;
> ?
> +#ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
> ????????if (backlight && backlight->uses_dpcd) {
> ????????????????ret = drm_edp_backlight_disable(aux,
&backlight->edp_info);
> ????????????????if (ret < 0)
> ????????????????????????NV_ERROR(drm, "Failed to disable backlight on
> [CONNECTOR:%d:%s]: %d\n",
> ???????????????????????????????? nv_connector->base.base.id,
nv_connector-
> >base.name, ret);
> ????????}
> +#endif
> ?
> ????????if (nv_encoder->dcb->type == DCB_OUTPUT_DP) {
> ????????????????int ret = drm_dp_dpcd_readb(aux, DP_SET_POWER, &pwr);
-- 
Cheers,
 Lyude Paul (she/her)
 Software Engineer at Red Hat