Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/bridge: do not pass drm_bridge_funcs to drm_bridge_init

Assign the pointer to bridge ops structure(drm_bridge_funcs) in
the bridge driver itself, instead of passing it to drm_bridge_init.

This will allow bridge driver developer to pack bridge private
information inside the bridge object and pass only the drm-relevant
information to drm_bridge_init.

Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
Tested-by: Rahul Sharma <rahul.sharma@samsung.com>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Tested-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Signed-off-by: Thierry Reding <treding@nvidia.com>

authored by

Ajay Kumar and committed by
Thierry Reding
b07b90fd 94d50d57

+10 -10
+2 -1
drivers/gpu/drm/bridge/ptn3460.c
··· 313 313 goto err; 314 314 } 315 315 316 - ret = drm_bridge_init(dev, &ptn_bridge->bridge, &ptn3460_bridge_funcs); 316 + ptn_bridge->bridge.funcs = &ptn3460_bridge_funcs; 317 + ret = drm_bridge_init(dev, &ptn_bridge->bridge); 317 318 if (ret) { 318 319 DRM_ERROR("Failed to initialize bridge with drm\n"); 319 320 goto err;
+1 -4
drivers/gpu/drm/drm_crtc.c
··· 1069 1069 * drm_bridge_init - initialize a drm transcoder/bridge 1070 1070 * @dev: drm device 1071 1071 * @bridge: transcoder/bridge to set up 1072 - * @funcs: bridge function table 1073 1072 * 1074 1073 * Initialises a preallocated bridge. Bridges should be 1075 1074 * subclassed as part of driver connector objects. ··· 1076 1077 * Returns: 1077 1078 * Zero on success, error code on failure. 1078 1079 */ 1079 - int drm_bridge_init(struct drm_device *dev, struct drm_bridge *bridge, 1080 - const struct drm_bridge_funcs *funcs) 1080 + int drm_bridge_init(struct drm_device *dev, struct drm_bridge *bridge) 1081 1081 { 1082 1082 int ret; 1083 1083 ··· 1087 1089 goto out; 1088 1090 1089 1091 bridge->dev = dev; 1090 - bridge->funcs = funcs; 1091 1092 1092 1093 list_add_tail(&bridge->head, &dev->mode_config.bridge_list); 1093 1094 dev->mode_config.num_bridge++;
+2 -1
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
··· 220 220 hdmi_bridge->hdmi = hdmi; 221 221 222 222 bridge = &hdmi_bridge->base; 223 + bridge->funcs = &hdmi_bridge_funcs; 223 224 224 - drm_bridge_init(hdmi->dev, bridge, &hdmi_bridge_funcs); 225 + drm_bridge_init(hdmi->dev, bridge); 225 226 226 227 return bridge; 227 228
+2 -1
drivers/gpu/drm/sti/sti_hda.c
··· 664 664 return -ENOMEM; 665 665 666 666 bridge->driver_private = hda; 667 - drm_bridge_init(drm_dev, bridge, &sti_hda_bridge_funcs); 667 + bridge->funcs = &sti_hda_bridge_funcs; 668 + drm_bridge_init(drm_dev, bridge); 668 669 669 670 encoder->bridge = bridge; 670 671 connector->encoder = encoder;
+2 -1
drivers/gpu/drm/sti/sti_hdmi.c
··· 635 635 goto err_adapt; 636 636 637 637 bridge->driver_private = hdmi; 638 - drm_bridge_init(drm_dev, bridge, &sti_hdmi_bridge_funcs); 638 + bridge->funcs = &sti_hdmi_bridge_funcs; 639 + drm_bridge_init(drm_dev, bridge); 639 640 640 641 encoder->bridge = bridge; 641 642 connector->encoder = encoder;
+1 -2
include/drm/drm_crtc.h
··· 1222 1222 /* helper to unplug all connectors from sysfs for device */ 1223 1223 extern void drm_connector_unplug_all(struct drm_device *dev); 1224 1224 1225 - extern int drm_bridge_init(struct drm_device *dev, struct drm_bridge *bridge, 1226 - const struct drm_bridge_funcs *funcs); 1225 + extern int drm_bridge_init(struct drm_device *dev, struct drm_bridge *bridge); 1227 1226 extern void drm_bridge_cleanup(struct drm_bridge *bridge); 1228 1227 1229 1228 extern int drm_encoder_init(struct drm_device *dev,