[PATCH v3 07/11] drm/rockchip: rk3066: declare supported infoframes

Dmitry Baryshkov posted 11 patches 1 month ago
There is a newer version of this series
[PATCH v3 07/11] drm/rockchip: rk3066: declare supported infoframes
Posted by Dmitry Baryshkov 1 month ago
Declare which infoframes are supported via the .hdmi_write_infoframe()
interface.

Reviewed-by: Liu Ying <victor.liu@nxp.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index ae4a5ac2299a93a49f87df7604752f6b651c839c..330c3e6ecaaca1602aee497c1a1be9599d1f886e 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -164,7 +164,7 @@ static int rk3066_hdmi_bridge_clear_infoframe(struct drm_bridge *bridge,
 
 	if (type != HDMI_INFOFRAME_TYPE_AVI) {
 		drm_err(bridge->dev, "Unsupported infoframe type: %u\n", type);
-		return 0;
+		return -EOPNOTSUPP;
 	}
 
 	hdmi_writeb(hdmi, HDMI_CP_BUF_INDEX, HDMI_INFOFRAME_AVI);
@@ -182,7 +182,7 @@ rk3066_hdmi_bridge_write_infoframe(struct drm_bridge *bridge,
 
 	if (type != HDMI_INFOFRAME_TYPE_AVI) {
 		drm_err(bridge->dev, "Unsupported infoframe type: %u\n", type);
-		return 0;
+		return -EOPNOTSUPP;
 	}
 
 	rk3066_hdmi_bridge_clear_infoframe(bridge, type);
@@ -696,6 +696,7 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
 	hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
 	hdmi->bridge.vendor = "Rockchip";
 	hdmi->bridge.product = "RK3066 HDMI";
+	hdmi->bridge.supported_infoframes = DRM_CONNECTOR_INFOFRAME_AVI;
 
 	hdmi->bridge.ddc = rk3066_hdmi_i2c_adapter(hdmi);
 	if (IS_ERR(hdmi->bridge.ddc))

-- 
2.47.2
Re: [PATCH v3 07/11] drm/rockchip: rk3066: declare supported infoframes
Posted by kernel test robot 1 month ago
Hi Dmitry,

kernel test robot noticed the following build errors:

[auto build test ERROR on f4028ef65dc4fe9010bcc017597fe0fea6479097]

url:    https://github.com/intel-lab-lkp/linux/commits/Dmitry-Baryshkov/drm-connector-let-drivers-declare-infoframes-as-unsupported/20250830-082533
base:   f4028ef65dc4fe9010bcc017597fe0fea6479097
patch link:    https://lore.kernel.org/r/20250830-drm-limit-infoframes-v3-7-32fcbec4634e%40oss.qualcomm.com
patch subject: [PATCH v3 07/11] drm/rockchip: rk3066: declare supported infoframes
config: i386-buildonly-randconfig-002-20250830 (https://download.01.org/0day-ci/archive/20250830/202508301909.DvZIl8j0-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250830/202508301909.DvZIl8j0-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508301909.DvZIl8j0-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/rockchip/rk3066_hdmi.c:699:15: error: no member named 'supported_infoframes' in 'struct drm_bridge'; did you mean 'supported_formats'?
     699 |         hdmi->bridge.supported_infoframes = DRM_CONNECTOR_INFOFRAME_AVI;
         |                      ^~~~~~~~~~~~~~~~~~~~
         |                      supported_formats
   include/drm/drm_bridge.h:1199:15: note: 'supported_formats' declared here
    1199 |         unsigned int supported_formats;
         |                      ^
   1 error generated.


vim +699 drivers/gpu/drm/rockchip/rk3066_hdmi.c

   666	
   667	static int
   668	rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
   669	{
   670		struct drm_encoder *encoder = &hdmi->encoder.encoder;
   671		struct device *dev = hdmi->dev;
   672		int ret;
   673	
   674		encoder->possible_crtcs =
   675			drm_of_find_possible_crtcs(drm, dev->of_node);
   676	
   677		/*
   678		 * If we failed to find the CRTC(s) which this encoder is
   679		 * supposed to be connected to, it's because the CRTC has
   680		 * not been registered yet.  Defer probing, and hope that
   681		 * the required CRTC is added later.
   682		 */
   683		if (encoder->possible_crtcs == 0)
   684			return -EPROBE_DEFER;
   685	
   686		drm_encoder_helper_add(encoder, &rk3066_hdmi_encoder_helper_funcs);
   687		drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
   688	
   689		hdmi->bridge.driver_private = hdmi;
   690		hdmi->bridge.funcs = &rk3066_hdmi_bridge_funcs;
   691		hdmi->bridge.ops = DRM_BRIDGE_OP_DETECT |
   692				   DRM_BRIDGE_OP_EDID |
   693				   DRM_BRIDGE_OP_HDMI |
   694				   DRM_BRIDGE_OP_HPD;
   695		hdmi->bridge.of_node = hdmi->dev->of_node;
   696		hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
   697		hdmi->bridge.vendor = "Rockchip";
   698		hdmi->bridge.product = "RK3066 HDMI";
 > 699		hdmi->bridge.supported_infoframes = DRM_CONNECTOR_INFOFRAME_AVI;
   700	
   701		hdmi->bridge.ddc = rk3066_hdmi_i2c_adapter(hdmi);
   702		if (IS_ERR(hdmi->bridge.ddc))
   703			return PTR_ERR(hdmi->bridge.ddc);
   704	
   705		if (IS_ERR(hdmi->bridge.ddc))
   706			return PTR_ERR(hdmi->bridge.ddc);
   707	
   708		ret = devm_drm_bridge_add(dev, &hdmi->bridge);
   709		if (ret)
   710			return ret;
   711	
   712		ret = drm_bridge_attach(encoder, &hdmi->bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
   713		if (ret)
   714			return ret;
   715	
   716		hdmi->connector = drm_bridge_connector_init(drm, encoder);
   717		if (IS_ERR(hdmi->connector)) {
   718			ret = PTR_ERR(hdmi->connector);
   719			dev_err(hdmi->dev, "failed to init bridge connector: %d\n", ret);
   720			return ret;
   721		}
   722	
   723		drm_connector_attach_encoder(hdmi->connector, encoder);
   724	
   725		return 0;
   726	}
   727	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki