[v2,01/11] drm: Add __drm_atomic_helper_crtc_state_reset() & co.
diff mbox series

Message ID 20191211020858.423049-1-jose.souza@intel.com
State New
Headers show
Series
  • [v2,01/11] drm: Add __drm_atomic_helper_crtc_state_reset() & co.
Related show

Commit Message

Souza, Jose Dec. 11, 2019, 2:08 a.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Annoyingly __drm_atomic_helper_crtc_reset() does two
totally separate things:
a) reset the state to defaults values
b) assign the crtc->state pointer

I just want a) without the b) so let's split out part
a) into __drm_atomic_helper_crtc_state_reset(). And
of course we'll do the same thing for planes and connectors.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_atomic_state_helper.c | 70 ++++++++++++++++++++---
 include/drm/drm_atomic_state_helper.h     |  6 ++
 2 files changed, 67 insertions(+), 9 deletions(-)

Comments

kbuild test robot Dec. 16, 2019, 10:38 p.m. UTC | #1
Hi "José,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[cannot apply to drm-tip/drm-tip linus/master v5.5-rc2 next-20191213]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Jos-Roberto-de-Souza/drm-Add-__drm_atomic_helper_crtc_state_reset-co/20191211-182413
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
reproduce: make htmldocs

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   WARNING: dot(1) not found, for better output quality install graphviz from http://www.graphviz.org
   WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
   include/linux/w1.h:277: warning: Function parameter or member 'of_match_table' not described in 'w1_family'
   include/linux/spi/spi.h:190: warning: Function parameter or member 'driver_override' not described in 'spi_device'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'quotactl' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'quota_on' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_free_mnt_opts' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_eat_lsm_opts' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_kern_mount' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_show_options' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_add_mnt_opt' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'd_instantiate' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'getprocattr' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'setprocattr' not described in 'security_list_options'
   include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'locked_down' not described in 'security_list_options'
   drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:1: warning: no structured comments found
   drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:1: warning: no structured comments found
   drivers/gpio/gpiolib-of.c:92: warning: Excess function parameter 'dev' description in 'of_gpio_need_valid_mask'
   include/linux/i2c.h:337: warning: Function parameter or member 'init_irq' not described in 'i2c_client'
   include/linux/regulator/machine.h:196: warning: Function parameter or member 'max_uV_step' not described in 'regulation_constraints'
   include/linux/regulator/driver.h:223: warning: Function parameter or member 'resume' not described in 'regulator_ops'
   drivers/usb/typec/bus.c:1: warning: 'typec_altmode_register_driver' not found
   drivers/usb/typec/bus.c:1: warning: 'typec_altmode_unregister_driver' not found
   drivers/usb/typec/class.c:1: warning: 'typec_altmode_unregister_notifier' not found
   drivers/usb/typec/class.c:1: warning: 'typec_altmode_register_notifier' not found
   fs/posix_acl.c:647: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode'
   fs/posix_acl.c:647: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode'
   fs/posix_acl.c:647: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode'
   kernel/dma/coherent.c:1: warning: no structured comments found
   include/linux/input/sparse-keymap.h:43: warning: Function parameter or member 'sw' not described in 'key_entry'
   include/linux/skbuff.h:888: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'list' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'skb_mstamp_ns' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member '__pkt_vlan_present_offset' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'vlan_present' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
   include/linux/skbuff.h:888: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
   include/net/sock.h:233: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
   include/net/sock.h:233: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
   include/net/sock.h:515: warning: Function parameter or member 'sk_rx_skb_cache' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'sk_tx_skb_cache' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock'
   include/net/sock.h:515: warning: Function parameter or member 'sk_bpf_storage' not described in 'sock'
   include/net/sock.h:2455: warning: Function parameter or member 'tcp_rx_skb_cache_key' not described in 'DECLARE_STATIC_KEY_FALSE'
   include/net/sock.h:2455: warning: Excess function parameter 'sk' description in 'DECLARE_STATIC_KEY_FALSE'
   include/net/sock.h:2455: warning: Excess function parameter 'skb' description in 'DECLARE_STATIC_KEY_FALSE'
   include/linux/netdevice.h:1765: warning: bad line:                                 spinlock
   include/linux/netdevice.h:2063: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'tlsdev_ops' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'xps_cpus_map' not described in 'net_device'
   include/linux/netdevice.h:2063: warning: Function parameter or member 'xps_rxqs_map' not described in 'net_device'
   include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state'
   include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state'
   lib/genalloc.c:1: warning: 'gen_pool_add_virt' not found
   lib/genalloc.c:1: warning: 'gen_pool_alloc' not found
   lib/genalloc.c:1: warning: 'gen_pool_free' not found
   lib/genalloc.c:1: warning: 'gen_pool_alloc_algo' not found
   include/linux/rculist.h:374: warning: Excess function parameter 'cond' description in 'list_for_each_entry_rcu'
   include/linux/rculist.h:651: warning: Excess function parameter 'cond' description in 'hlist_for_each_entry_rcu'
   mm/util.c:1: warning: 'get_user_pages_fast' not found
   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:254: warning: Function parameter or member 'hdcp_workqueue' not described in 'amdgpu_display_manager'
   include/drm/drm_modeset_helper_vtables.h:1052: warning: Function parameter or member 'prepare_writeback_job' not described in 'drm_connector_helper_funcs'
   include/drm/drm_modeset_helper_vtables.h:1052: warning: Function parameter or member 'cleanup_writeback_job' not described in 'drm_connector_helper_funcs'
   drivers/gpu/drm/drm_atomic_state_helper.c:240: warning: Excess function parameter 'plane_state' description in '__drm_atomic_helper_plane_state_reset'
   drivers/gpu/drm/drm_atomic_state_helper.c:385: warning: Excess function parameter 'conn__state' description in '__drm_atomic_helper_connector_state_reset'
>> drivers/gpu/drm/drm_atomic_state_helper.c:241: warning: Function parameter or member 'state' not described in '__drm_atomic_helper_plane_state_reset'
   drivers/gpu/drm/drm_atomic_state_helper.c:241: warning: Excess function parameter 'plane_state' description in '__drm_atomic_helper_plane_state_reset'
>> drivers/gpu/drm/drm_atomic_state_helper.c:386: warning: Function parameter or member 'conn_state' not described in '__drm_atomic_helper_connector_state_reset'
   drivers/gpu/drm/drm_atomic_state_helper.c:386: warning: Excess function parameter 'conn__state' description in '__drm_atomic_helper_connector_state_reset'
   include/net/cfg80211.h:1185: warning: Function parameter or member 'txpwr' not described in 'station_parameters'
   include/net/mac80211.h:4056: warning: Function parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops'
   include/net/mac80211.h:2018: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta'
   Documentation/admin-guide/perf/imx-ddr.rst:21: WARNING: Unexpected indentation.
   Documentation/admin-guide/perf/imx-ddr.rst:34: WARNING: Unexpected indentation.
   Documentation/admin-guide/perf/imx-ddr.rst:40: WARNING: Unexpected indentation.
   Documentation/admin-guide/perf/imx-ddr.rst:45: WARNING: Unexpected indentation.
   Documentation/admin-guide/perf/imx-ddr.rst:52: WARNING: Unexpected indentation.
   Documentation/admin-guide/xfs.rst:257: WARNING: Block quote ends without a blank line; unexpected unindent.
   Documentation/trace/kprobetrace.rst:100: WARNING: Explicit markup ends without a blank line; unexpected unindent.
   drivers/message/fusion/mptbase.c:5057: WARNING: Definition list ends without a blank line; unexpected unindent.
   Documentation/filesystems/ubifs-authentication.rst:94: WARNING: Inline interpreted text or phrase reference start-string without end-string.
   include/uapi/linux/firewire-cdev.h:312: WARNING: Inline literal start-string without end-string.
   drivers/firewire/core-transaction.c:606: WARNING: Inline strong start-string without end-string.
   Documentation/usb/index.rst:5: WARNING: toctree contains reference to nonexisting document 'usb/rio'
   Documentation/usb/index.rst:5: WARNING: toctree contains reference to nonexisting document 'usb/wusb-design-overview'
   Documentation/usb/text_files.rst:22: WARNING: Include file 'Documentation/usb/wusb-cbaf' not found or reading it failed
   Documentation/translations/it_IT/process/maintainer-pgp-guide.rst:458: WARNING: Unknown target name: "nitrokey pro".
   include/linux/spi/spi.h:382: WARNING: Unexpected indentation.
   Documentation/security/keys/core.rst:1110: WARNING: Inline emphasis start-string without end-string.
   Documentation/security/keys/core.rst:1110: WARNING: Inline emphasis start-string without end-string.
   Documentation/security/keys/core.rst:1108: WARNING: Inline emphasis start-string without end-string.
   Documentation/security/keys/core.rst:1108: WARNING: Inline emphasis start-string without end-string.
   Documentation/security/keys/core.rst:1108: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:420: WARNING: Unexpected indentation.
   Documentation/driver-api/gpio/driver.rst:418: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:422: WARNING: Block quote ends without a blank line; unexpected unindent.
   Documentation/driver-api/gpio/driver.rst:424: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:424: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:424: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:428: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:441: WARNING: Unexpected indentation.
   Documentation/driver-api/gpio/driver.rst:435: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:435: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:442: WARNING: Block quote ends without a blank line; unexpected unindent.
   Documentation/driver-api/gpio/driver.rst:444: WARNING: Definition list ends without a blank line; unexpected unindent.
   Documentation/driver-api/gpio/driver.rst:455: WARNING: Unexpected indentation.
   Documentation/driver-api/gpio/driver.rst:453: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:455: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:458: WARNING: Block quote ends without a blank line; unexpected unindent.
   Documentation/driver-api/gpio/driver.rst:460: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:460: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:460: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:464: WARNING: Inline emphasis start-string without end-string.
   Documentation/driver-api/gpio/driver.rst:471: WARNING: Inline emphasis start-string without end-string.
   include/linux/i2c.h:522: WARNING: Inline strong start-string without end-string.
   Documentation/misc-devices/index.rst:14: WARNING: toctree contains reference to nonexisting document 'misc-devices/xilinx_sdfec'
   include/linux/regulator/driver.h:284: WARNING: Unknown target name: "regulator_regmap_x_voltage".
   fs/seq_file.c:40: WARNING: Inline strong start-string without end-string.
   fs/seq_file.c:40: WARNING: Inline strong start-string without end-string.
   fs/seq_file.c:40: WARNING: Inline strong start-string without end-string.
   fs/seq_file.c:40: WARNING: Inline strong start-string without end-string.
   fs/posix_acl.c:636: WARNING: Inline emphasis start-string without end-string.
   fs/debugfs/inode.c:427: WARNING: Inline literal start-string without end-string.
   fs/debugfs/inode.c:506: WARNING: Inline literal start-string without end-string.
   fs/debugfs/inode.c:538: WARNING: Inline literal start-string without end-string.
   fs/debugfs/inode.c:631: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:424: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:430: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:469: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:475: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:514: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:520: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:560: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:566: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:608: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:614: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:875: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:881: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:928: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:934: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:1120: WARNING: Inline literal start-string without end-string.
   fs/debugfs/file.c:1126: WARNING: Inline literal start-string without end-string.
   Documentation/driver-api/index.rst:14: WARNING: toctree contains reference to nonexisting document 'driver-api/sgi-ioc4'
   drivers/base/platform.c:160: WARNING: Unexpected indentation.
   drivers/base/platform.c:189: WARNING: Unexpected indentation.
   drivers/ata/libata-core.c:5945: WARNING: Unknown target name: "hw".
   include/linux/netdevice.h:3489: WARNING: Inline emphasis start-string without end-string.
   include/linux/netdevice.h:3489: WARNING: Inline emphasis start-string without end-string.
   net/core/dev.c:4938: WARNING: Unknown target name: "page_is".
   kernel/rcu/update.c:66: WARNING: Inline emphasis start-string without end-string.
   kernel/rcu/update.c:66: WARNING: Inline emphasis start-string without end-string.
   kernel/rcu/update.c:71: WARNING: Inline emphasis start-string without end-string.
   kernel/rcu/update.c:83: WARNING: Inline emphasis start-string without end-string.
   drivers/gpu/drm/mcde/mcde_drv.c:47: WARNING: Unexpected indentation.
   drivers/gpu/drm/mcde/mcde_drv.c:49: WARNING: Block quote ends without a blank line; unexpected unindent.
   Documentation/admin-guide/device-mapper/dm-clone.rst: WARNING: document isn't included in any toctree
   Documentation/admin-guide/perf/imx-ddr.rst: WARNING: document isn't included in any toctree
   include/linux/slab.h:504: WARNING: undefined label: memory-allocation (if the link has no caption the label must precede a section header)
   WARNING: LaTeX command 'latex' cannot be run (needed for math display), check the imgmath_latex setting
   WARNING: LaTeX command 'latex' cannot be run (needed for math display), check the imgmath_latex setting
   Documentation/networking/devlink-trap.rst:175: WARNING: unknown document: /devlink-trap-netdevsim
   Documentation/trace/kprobetrace.rst:69: WARNING: undefined label: user_mem_access (if the link has no caption the label must precede a section header)
   WARNING: LaTeX command 'latex' cannot be run (needed for math display), check the imgmath_latex setting

vim +241 drivers/gpu/drm/drm_atomic_state_helper.c

9ef8a9dc4b2182 Daniel Vetter 2018-10-04  229  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  230  /**
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  231   * __drm_atomic_helper_plane_state_reset - resets plane state to default values
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  232   * @plane_state: atomic plane state, must not be NULL
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  233   * @plane: plane object, must not be NULL
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  234   *
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  235   * Initializes the newly allocated @plane_state with default
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  236   * values. This is useful for drivers that subclass the CRTC state.
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  237   */
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  238  void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *state,
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  239  					   struct drm_plane *plane)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04 @240  {
9ef8a9dc4b2182 Daniel Vetter 2018-10-04 @241  	state->plane = plane;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  242  	state->rotation = DRM_MODE_ROTATE_0;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  243  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  244  	state->alpha = DRM_BLEND_ALPHA_OPAQUE;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  245  	state->pixel_blend_mode = DRM_MODE_BLEND_PREMULTI;
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  246  }
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  247  EXPORT_SYMBOL(__drm_atomic_helper_plane_state_reset);
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  248  
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  249  /**
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  250   * __drm_atomic_helper_plane_reset - reset state on plane
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  251   * @plane: drm plane
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  252   * @plane_state: plane state to assign
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  253   *
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  254   * Initializes the newly allocated @plane_state and assigns it to
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  255   * the &drm_crtc->state pointer of @plane, usually required when
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  256   * initializing the drivers or when called from the &drm_plane_funcs.reset
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  257   * hook.
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  258   *
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  259   * This is useful for drivers that subclass the plane state.
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  260   */
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  261  void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  262  				     struct drm_plane_state *plane_state)
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  263  {
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  264  	if (plane_state)
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  265  		__drm_atomic_helper_plane_state_reset(plane_state, plane);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  266  
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  267  	plane->state = plane_state;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  268  }
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  269  EXPORT_SYMBOL(__drm_atomic_helper_plane_reset);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  270  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  271  /**
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  272   * drm_atomic_helper_plane_reset - default &drm_plane_funcs.reset hook for planes
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  273   * @plane: drm plane
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  274   *
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  275   * Resets the atomic state for @plane by freeing the state pointer (which might
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  276   * be NULL, e.g. at driver load time) and allocating a new empty state object.
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  277   */
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  278  void drm_atomic_helper_plane_reset(struct drm_plane *plane)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  279  {
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  280  	if (plane->state)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  281  		__drm_atomic_helper_plane_destroy_state(plane->state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  282  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  283  	kfree(plane->state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  284  	plane->state = kzalloc(sizeof(*plane->state), GFP_KERNEL);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  285  	if (plane->state)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  286  		__drm_atomic_helper_plane_reset(plane, plane->state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  287  }
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  288  EXPORT_SYMBOL(drm_atomic_helper_plane_reset);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  289  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  290  /**
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  291   * __drm_atomic_helper_plane_duplicate_state - copy atomic plane state
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  292   * @plane: plane object
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  293   * @state: atomic plane state
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  294   *
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  295   * Copies atomic state from a plane's current state. This is useful for
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  296   * drivers that subclass the plane state.
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  297   */
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  298  void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  299  					       struct drm_plane_state *state)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  300  {
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  301  	memcpy(state, plane->state, sizeof(*state));
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  302  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  303  	if (state->fb)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  304  		drm_framebuffer_get(state->fb);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  305  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  306  	state->fence = NULL;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  307  	state->commit = NULL;
c75ff001f4fe21 Deepak Rawat  2018-12-21  308  	state->fb_damage_clips = NULL;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  309  }
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  310  EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  311  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  312  /**
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  313   * drm_atomic_helper_plane_duplicate_state - default state duplicate hook
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  314   * @plane: drm plane
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  315   *
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  316   * Default plane state duplicate hook for drivers which don't have their own
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  317   * subclassed plane state structure.
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  318   */
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  319  struct drm_plane_state *
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  320  drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  321  {
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  322  	struct drm_plane_state *state;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  323  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  324  	if (WARN_ON(!plane->state))
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  325  		return NULL;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  326  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  327  	state = kmalloc(sizeof(*state), GFP_KERNEL);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  328  	if (state)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  329  		__drm_atomic_helper_plane_duplicate_state(plane, state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  330  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  331  	return state;
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  332  }
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  333  EXPORT_SYMBOL(drm_atomic_helper_plane_duplicate_state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  334  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  335  /**
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  336   * __drm_atomic_helper_plane_destroy_state - release plane state
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  337   * @state: plane state object to release
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  338   *
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  339   * Releases all resources stored in the plane state without actually freeing
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  340   * the memory of the plane state. This is useful for drivers that subclass the
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  341   * plane state.
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  342   */
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  343  void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  344  {
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  345  	if (state->fb)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  346  		drm_framebuffer_put(state->fb);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  347  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  348  	if (state->fence)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  349  		dma_fence_put(state->fence);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  350  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  351  	if (state->commit)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  352  		drm_crtc_commit_put(state->commit);
c75ff001f4fe21 Deepak Rawat  2018-12-21  353  
c75ff001f4fe21 Deepak Rawat  2018-12-21  354  	drm_property_blob_put(state->fb_damage_clips);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  355  }
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  356  EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  357  
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  358  /**
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  359   * drm_atomic_helper_plane_destroy_state - default state destroy hook
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  360   * @plane: drm plane
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  361   * @state: plane state object to release
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  362   *
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  363   * Default plane state destroy hook for drivers which don't have their own
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  364   * subclassed plane state structure.
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  365   */
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  366  void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  367  					   struct drm_plane_state *state)
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  368  {
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  369  	__drm_atomic_helper_plane_destroy_state(state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  370  	kfree(state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  371  }
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  372  EXPORT_SYMBOL(drm_atomic_helper_plane_destroy_state);
9ef8a9dc4b2182 Daniel Vetter 2018-10-04  373  
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  374  /**
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  375   * __drm_atomic_helper_connector_state_reset - reset the connector state
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  376   * @conn__state: atomic connector state, must not be NULL
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  377   * @connector: connectotr object, must not be NULL
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  378   *
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  379   * Initializes the newly allocated @conn_state with default
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  380   * values. This is useful for drivers that subclass the connector state.
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  381   */
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  382  void
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  383  __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state,
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  384  					  struct drm_connector *connector)
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  385  {
2b3ff8c804f9ee Ville Syrjälä 2019-12-10 @386  	conn_state->connector = connector;
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  387  }
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  388  EXPORT_SYMBOL(__drm_atomic_helper_connector_state_reset);
2b3ff8c804f9ee Ville Syrjälä 2019-12-10  389  

:::::: The code at line 241 was first introduced by commit
:::::: 9ef8a9dc4b21821d6c397186462fb5e571786b0a drm: Extract drm_atomic_state_helper.[hc]

:::::: TO: Daniel Vetter <daniel.vetter@ffwll.ch>
:::::: CC: Daniel Vetter <daniel.vetter@ffwll.ch>

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

Patch
diff mbox series

diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index d0a937fb0c56..a972068d58cf 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -57,6 +57,22 @@ 
  * for these functions.
  */
 
+/**
+ * __drm_atomic_helper_crtc_state_reset - reset the CRTC state
+ * @crtc_state: atomic CRTC state, must not be NULL
+ * @crtc: CRTC object, must not be NULL
+ *
+ * Initializes the newly allocated @crtc_state with default
+ * values. This is useful for drivers that subclass the CRTC state.
+ */
+void
+__drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *crtc_state,
+				     struct drm_crtc *crtc)
+{
+	crtc_state->crtc = crtc;
+}
+EXPORT_SYMBOL(__drm_atomic_helper_crtc_state_reset);
+
 /**
  * __drm_atomic_helper_crtc_reset - reset state on CRTC
  * @crtc: drm CRTC
@@ -74,7 +90,7 @@  __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc,
 			       struct drm_crtc_state *crtc_state)
 {
 	if (crtc_state)
-		crtc_state->crtc = crtc;
+		__drm_atomic_helper_crtc_state_reset(crtc_state, crtc);
 
 	crtc->state = crtc_state;
 }
@@ -212,23 +228,43 @@  void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
 EXPORT_SYMBOL(drm_atomic_helper_crtc_destroy_state);
 
 /**
- * __drm_atomic_helper_plane_reset - resets planes state to default values
+ * __drm_atomic_helper_plane_state_reset - resets plane state to default values
+ * @plane_state: atomic plane state, must not be NULL
  * @plane: plane object, must not be NULL
- * @state: atomic plane state, must not be NULL
  *
- * Initializes plane state to default. This is useful for drivers that subclass
- * the plane state.
+ * Initializes the newly allocated @plane_state with default
+ * values. This is useful for drivers that subclass the CRTC state.
  */
-void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
-				     struct drm_plane_state *state)
+void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *state,
+					   struct drm_plane *plane)
 {
 	state->plane = plane;
 	state->rotation = DRM_MODE_ROTATE_0;
 
 	state->alpha = DRM_BLEND_ALPHA_OPAQUE;
 	state->pixel_blend_mode = DRM_MODE_BLEND_PREMULTI;
+}
+EXPORT_SYMBOL(__drm_atomic_helper_plane_state_reset);
 
-	plane->state = state;
+/**
+ * __drm_atomic_helper_plane_reset - reset state on plane
+ * @plane: drm plane
+ * @plane_state: plane state to assign
+ *
+ * Initializes the newly allocated @plane_state and assigns it to
+ * the &drm_crtc->state pointer of @plane, usually required when
+ * initializing the drivers or when called from the &drm_plane_funcs.reset
+ * hook.
+ *
+ * This is useful for drivers that subclass the plane state.
+ */
+void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
+				     struct drm_plane_state *plane_state)
+{
+	if (plane_state)
+		__drm_atomic_helper_plane_state_reset(plane_state, plane);
+
+	plane->state = plane_state;
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_reset);
 
@@ -335,6 +371,22 @@  void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
 }
 EXPORT_SYMBOL(drm_atomic_helper_plane_destroy_state);
 
+/**
+ * __drm_atomic_helper_connector_state_reset - reset the connector state
+ * @conn__state: atomic connector state, must not be NULL
+ * @connector: connectotr object, must not be NULL
+ *
+ * Initializes the newly allocated @conn_state with default
+ * values. This is useful for drivers that subclass the connector state.
+ */
+void
+__drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state,
+					  struct drm_connector *connector)
+{
+	conn_state->connector = connector;
+}
+EXPORT_SYMBOL(__drm_atomic_helper_connector_state_reset);
+
 /**
  * __drm_atomic_helper_connector_reset - reset state on connector
  * @connector: drm connector
@@ -352,7 +404,7 @@  __drm_atomic_helper_connector_reset(struct drm_connector *connector,
 				    struct drm_connector_state *conn_state)
 {
 	if (conn_state)
-		conn_state->connector = connector;
+		__drm_atomic_helper_connector_state_reset(conn_state, connector);
 
 	connector->state = conn_state;
 }
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index e4577cc11689..8171dea4cc22 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -37,6 +37,8 @@  struct drm_private_state;
 struct drm_modeset_acquire_ctx;
 struct drm_device;
 
+void __drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *state,
+					  struct drm_crtc *crtc);
 void __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc,
 				    struct drm_crtc_state *state);
 void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc);
@@ -48,6 +50,8 @@  void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state);
 void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
 					  struct drm_crtc_state *state);
 
+void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *state,
+					   struct drm_plane *plane);
 void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
 				     struct drm_plane_state *state);
 void drm_atomic_helper_plane_reset(struct drm_plane *plane);
@@ -59,6 +63,8 @@  void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state);
 void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
 					  struct drm_plane_state *state);
 
+void __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state,
+					       struct drm_connector *connector);
 void __drm_atomic_helper_connector_reset(struct drm_connector *connector,
 					 struct drm_connector_state *conn_state);
 void drm_atomic_helper_connector_reset(struct drm_connector *connector);