diff options
author | Dave Airlie <airlied@redhat.com> | 2015-12-18 20:45:31 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2015-12-18 20:45:31 -0500 |
commit | 45ad5ccfa9c72da35905dab4603df0d0f383af8f (patch) | |
tree | dd226fc3d0d4e619bccd90e52ac6418730d8a684 | |
parent | 544a14fd222b5dedfa32e9e69c0da9345b996e15 (diff) | |
parent | e112e593b215c394c0303dbf0534db0928e87967 (diff) |
Merge tag 'topic/drm-misc-2015-12-18' of git://anongit.freedesktop.org/drm-intel into drm-next
Seems I lied in my last drm-misc pull request and suddenly there's a big
pile of random stuff. Boris dug out Thierry's drm-trivial branch and
resubmitted everything since that branch didn't really work out.
On top of that Nicolas' changes to drm_dev_set_unique - this might
conflict with new driver pulls (I double checked and current drm-next
should be fine), so please beware. The -next/-fixes conflict in vmwgfx
will change slightly with this here too.
* tag 'topic/drm-misc-2015-12-18' of git://anongit.freedesktop.org/drm-intel: (36 commits)
drm: use dev_name as default unique name in drm_dev_alloc()
drm: make drm_dev_set_unique() not use a format string
drm/vmwgfx: Constify function pointer structs
drm/udl: Constify function pointer structs
drm/tegra: Constify function pointer structs
drm/rockchip: Constify function pointer structs
drm/nouveau: Constify function pointer structs
drm/mgag200: Constify function pointer structs
drm/imx: Constify function pointer structs
drm/i2c/sil164: Constify function pointer structs
drm/i2c/adv7511: Constify function pointer structs
drm/exynos: Constify function pointer structs
drm/cirrus: Constify function pointer structs
drm/i2c/ch7006: Constify function pointer structs
drm/bridge/nxp-ptn3460: Constify function pointer structs
drm/bridge/dw_hdmi: Constify function pointer structs
drm/bochs: Constify function pointer structs
drm/atmel-hlcdc: Constify function pointer structs
drm/armada: Constify function pointer structs
drm: Constify drm_encoder_slave_funcs
...
63 files changed, 208 insertions, 363 deletions
diff --git a/Documentation/DocBook/gpu.tmpl b/Documentation/DocBook/gpu.tmpl index c66d6412f573..6c6e81a9eaf4 100644 --- a/Documentation/DocBook/gpu.tmpl +++ b/Documentation/DocBook/gpu.tmpl | |||
@@ -986,10 +986,7 @@ int max_width, max_height;</synopsis> | |||
986 | !Idrivers/gpu/drm/drm_atomic.c | 986 | !Idrivers/gpu/drm/drm_atomic.c |
987 | </sect2> | 987 | </sect2> |
988 | <sect2> | 988 | <sect2> |
989 | <title>Frame Buffer Creation</title> | 989 | <title>Frame Buffer Abstraction</title> |
990 | <synopsis>struct drm_framebuffer *(*fb_create)(struct drm_device *dev, | ||
991 | struct drm_file *file_priv, | ||
992 | struct drm_mode_fb_cmd2 *mode_cmd);</synopsis> | ||
993 | <para> | 990 | <para> |
994 | Frame buffers are abstract memory objects that provide a source of | 991 | Frame buffers are abstract memory objects that provide a source of |
995 | pixels to scanout to a CRTC. Applications explicitly request the | 992 | pixels to scanout to a CRTC. Applications explicitly request the |
@@ -1008,73 +1005,6 @@ int max_width, max_height;</synopsis> | |||
1008 | and so expects TTM handles in the create ioctl and not GEM handles. | 1005 | and so expects TTM handles in the create ioctl and not GEM handles. |
1009 | </para> | 1006 | </para> |
1010 | <para> | 1007 | <para> |
1011 | Drivers must first validate the requested frame buffer parameters passed | ||
1012 | through the mode_cmd argument. In particular this is where invalid | ||
1013 | sizes, pixel formats or pitches can be caught. | ||
1014 | </para> | ||
1015 | <para> | ||
1016 | If the parameters are deemed valid, drivers then create, initialize and | ||
1017 | return an instance of struct <structname>drm_framebuffer</structname>. | ||
1018 | If desired the instance can be embedded in a larger driver-specific | ||
1019 | structure. Drivers must fill its <structfield>width</structfield>, | ||
1020 | <structfield>height</structfield>, <structfield>pitches</structfield>, | ||
1021 | <structfield>offsets</structfield>, <structfield>depth</structfield>, | ||
1022 | <structfield>bits_per_pixel</structfield> and | ||
1023 | <structfield>pixel_format</structfield> fields from the values passed | ||
1024 | through the <parameter>drm_mode_fb_cmd2</parameter> argument. They | ||
1025 | should call the <function>drm_helper_mode_fill_fb_struct</function> | ||
1026 | helper function to do so. | ||
1027 | </para> | ||
1028 | |||
1029 | <para> | ||
1030 | The initialization of the new framebuffer instance is finalized with a | ||
1031 | call to <function>drm_framebuffer_init</function> which takes a pointer | ||
1032 | to DRM frame buffer operations (struct | ||
1033 | <structname>drm_framebuffer_funcs</structname>). Note that this function | ||
1034 | publishes the framebuffer and so from this point on it can be accessed | ||
1035 | concurrently from other threads. Hence it must be the last step in the | ||
1036 | driver's framebuffer initialization sequence. Frame buffer operations | ||
1037 | are | ||
1038 | <itemizedlist> | ||
1039 | <listitem> | ||
1040 | <synopsis>int (*create_handle)(struct drm_framebuffer *fb, | ||
1041 | struct drm_file *file_priv, unsigned int *handle);</synopsis> | ||
1042 | <para> | ||
1043 | Create a handle to the frame buffer underlying memory object. If | ||
1044 | the frame buffer uses a multi-plane format, the handle will | ||
1045 | reference the memory object associated with the first plane. | ||
1046 | </para> | ||
1047 | <para> | ||
1048 | Drivers call <function>drm_gem_handle_create</function> to create | ||
1049 | the handle. | ||
1050 | </para> | ||
1051 | </listitem> | ||
1052 | <listitem> | ||
1053 | <synopsis>void (*destroy)(struct drm_framebuffer *framebuffer);</synopsis> | ||
1054 | <para> | ||
1055 | Destroy the frame buffer object and frees all associated | ||
1056 | resources. Drivers must call | ||
1057 | <function>drm_framebuffer_cleanup</function> to free resources | ||
1058 | allocated by the DRM core for the frame buffer object, and must | ||
1059 | make sure to unreference all memory objects associated with the | ||
1060 | frame buffer. Handles created by the | ||
1061 | <methodname>create_handle</methodname> operation are released by | ||
1062 | the DRM core. | ||
1063 | </para> | ||
1064 | </listitem> | ||
1065 | <listitem> | ||
1066 | <synopsis>int (*dirty)(struct drm_framebuffer *framebuffer, | ||
1067 | struct drm_file *file_priv, unsigned flags, unsigned color, | ||
1068 | struct drm_clip_rect *clips, unsigned num_clips);</synopsis> | ||
1069 | <para> | ||
1070 | This optional operation notifies the driver that a region of the | ||
1071 | frame buffer has changed in response to a DRM_IOCTL_MODE_DIRTYFB | ||
1072 | ioctl call. | ||
1073 | </para> | ||
1074 | </listitem> | ||
1075 | </itemizedlist> | ||
1076 | </para> | ||
1077 | <para> | ||
1078 | The lifetime of a drm framebuffer is controlled with a reference count, | 1008 | The lifetime of a drm framebuffer is controlled with a reference count, |
1079 | drivers can grab additional references with | 1009 | drivers can grab additional references with |
1080 | <function>drm_framebuffer_reference</function>and drop them | 1010 | <function>drm_framebuffer_reference</function>and drop them |
@@ -3570,92 +3500,6 @@ int num_ioctls;</synopsis> | |||
3570 | <sect2> | 3500 | <sect2> |
3571 | <title>DPIO</title> | 3501 | <title>DPIO</title> |
3572 | !Pdrivers/gpu/drm/i915/i915_reg.h DPIO | 3502 | !Pdrivers/gpu/drm/i915/i915_reg.h DPIO |
3573 | <table id="dpiox2"> | ||
3574 | <title>Dual channel PHY (VLV/CHV/BXT)</title> | ||
3575 | <tgroup cols="8"> | ||
3576 | <colspec colname="c0" /> | ||
3577 | <colspec colname="c1" /> | ||
3578 | <colspec colname="c2" /> | ||
3579 | <colspec colname="c3" /> | ||
3580 | <colspec colname="c4" /> | ||
3581 | <colspec colname="c5" /> | ||
3582 | <colspec colname="c6" /> | ||
3583 | <colspec colname="c7" /> | ||
3584 | <spanspec spanname="ch0" namest="c0" nameend="c3" /> | ||
3585 | <spanspec spanname="ch1" namest="c4" nameend="c7" /> | ||
3586 | <spanspec spanname="ch0pcs01" namest="c0" nameend="c1" /> | ||
3587 | <spanspec spanname="ch0pcs23" namest="c2" nameend="c3" /> | ||
3588 | <spanspec spanname="ch1pcs01" namest="c4" nameend="c5" /> | ||
3589 | <spanspec spanname="ch1pcs23" namest="c6" nameend="c7" /> | ||
3590 | <thead> | ||
3591 | <row> | ||
3592 | <entry spanname="ch0">CH0</entry> | ||
3593 | <entry spanname="ch1">CH1</entry> | ||
3594 | </row> | ||
3595 | </thead> | ||
3596 | <tbody valign="top" align="center"> | ||
3597 | <row> | ||
3598 | <entry spanname="ch0">CMN/PLL/REF</entry> | ||
3599 | <entry spanname="ch1">CMN/PLL/REF</entry> | ||
3600 | </row> | ||
3601 | <row> | ||
3602 | <entry spanname="ch0pcs01">PCS01</entry> | ||
3603 | <entry spanname="ch0pcs23">PCS23</entry> | ||
3604 | <entry spanname="ch1pcs01">PCS01</entry> | ||
3605 | <entry spanname="ch1pcs23">PCS23</entry> | ||
3606 | </row> | ||
3607 | <row> | ||
3608 | <entry>TX0</entry> | ||
3609 | <entry>TX1</entry> | ||
3610 | <entry>TX2</entry> | ||
3611 | <entry>TX3</entry> | ||
3612 | <entry>TX0</entry> | ||
3613 | <entry>TX1</entry> | ||
3614 | <entry>TX2</entry> | ||
3615 | <entry>TX3</entry> | ||
3616 | </row> | ||
3617 | <row> | ||
3618 | <entry spanname="ch0">DDI0</entry> | ||
3619 | <entry spanname="ch1">DDI1</entry> | ||
3620 | </row> | ||
3621 | </tbody> | ||
3622 | </tgroup> | ||
3623 | </table> | ||
3624 | <table id="dpiox1"> | ||
3625 | <title>Single channel PHY (CHV/BXT)</title> | ||
3626 | <tgroup cols="4"> | ||
3627 | <colspec colname="c0" /> | ||
3628 | <colspec colname="c1" /> | ||
3629 | <colspec colname="c2" /> | ||
3630 | <colspec colname="c3" /> | ||
3631 | <spanspec spanname="ch0" namest="c0" nameend="c3" /> | ||
3632 | <spanspec spanname="ch0pcs01" namest="c0" nameend="c1" /> | ||
3633 | <spanspec spanname="ch0pcs23" namest="c2" nameend="c3" /> | ||
3634 | <thead> | ||
3635 | <row> | ||
3636 | <entry spanname="ch0">CH0</entry> | ||
3637 | </row> | ||
3638 | </thead> | ||
3639 | <tbody valign="top" align="center"> | ||
3640 | <row> | ||
3641 | <entry spanname="ch0">CMN/PLL/REF</entry> | ||
3642 | </row> | ||
3643 | <row> | ||
3644 | <entry spanname="ch0pcs01">PCS01</entry> | ||
3645 | <entry spanname="ch0pcs23">PCS23</entry> | ||
3646 | </row> | ||
3647 | <row> | ||
3648 | <entry>TX0</entry> | ||
3649 | <entry>TX1</entry> | ||
3650 | <entry>TX2</entry> | ||
3651 | <entry>TX3</entry> | ||
3652 | </row> | ||
3653 | <row> | ||
3654 | <entry spanname="ch0">DDI2</entry> | ||
3655 | </row> | ||
3656 | </tbody> | ||
3657 | </tgroup> | ||
3658 | </table> | ||
3659 | </sect2> | 3503 | </sect2> |
3660 | 3504 | ||
3661 | <sect2> | 3505 | <sect2> |
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c index 9bdc28cf927e..4123680933a6 100644 --- a/drivers/gpu/drm/armada/armada_crtc.c +++ b/drivers/gpu/drm/armada/armada_crtc.c | |||
@@ -1074,7 +1074,7 @@ armada_drm_crtc_set_property(struct drm_crtc *crtc, | |||
1074 | return 0; | 1074 | return 0; |
1075 | } | 1075 | } |
1076 | 1076 | ||
1077 | static struct drm_crtc_funcs armada_crtc_funcs = { | 1077 | static const struct drm_crtc_funcs armada_crtc_funcs = { |
1078 | .cursor_set = armada_drm_crtc_cursor_set, | 1078 | .cursor_set = armada_drm_crtc_cursor_set, |
1079 | .cursor_move = armada_drm_crtc_cursor_move, | 1079 | .cursor_move = armada_drm_crtc_cursor_move, |
1080 | .destroy = armada_drm_crtc_destroy, | 1080 | .destroy = armada_drm_crtc_destroy, |
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c index 816895447155..a45b32ba029e 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | |||
@@ -333,6 +333,10 @@ static const struct of_device_id atmel_hlcdc_of_match[] = { | |||
333 | .data = &atmel_hlcdc_dc_at91sam9x5, | 333 | .data = &atmel_hlcdc_dc_at91sam9x5, |
334 | }, | 334 | }, |
335 | { | 335 | { |
336 | .compatible = "atmel,sama5d2-hlcdc", | ||
337 | .data = &atmel_hlcdc_dc_sama5d4, | ||
338 | }, | ||
339 | { | ||
336 | .compatible = "atmel,sama5d3-hlcdc", | 340 | .compatible = "atmel,sama5d3-hlcdc", |
337 | .data = &atmel_hlcdc_dc_sama5d3, | 341 | .data = &atmel_hlcdc_dc_sama5d3, |
338 | }, | 342 | }, |
@@ -342,6 +346,7 @@ static const struct of_device_id atmel_hlcdc_of_match[] = { | |||
342 | }, | 346 | }, |
343 | { /* sentinel */ }, | 347 | { /* sentinel */ }, |
344 | }; | 348 | }; |
349 | MODULE_DEVICE_TABLE(of, atmel_hlcdc_of_match); | ||
345 | 350 | ||
346 | int atmel_hlcdc_dc_mode_valid(struct atmel_hlcdc_dc *dc, | 351 | int atmel_hlcdc_dc_mode_valid(struct atmel_hlcdc_dc *dc, |
347 | struct drm_display_mode *mode) | 352 | struct drm_display_mode *mode) |
@@ -733,10 +738,6 @@ static int atmel_hlcdc_dc_drm_probe(struct platform_device *pdev) | |||
733 | if (!ddev) | 738 | if (!ddev) |
734 | return -ENOMEM; | 739 | return -ENOMEM; |
735 | 740 | ||
736 | ret = drm_dev_set_unique(ddev, dev_name(ddev->dev)); | ||
737 | if (ret) | ||
738 | goto err_unref; | ||
739 | |||
740 | ret = atmel_hlcdc_dc_load(ddev); | 741 | ret = atmel_hlcdc_dc_load(ddev); |
741 | if (ret) | 742 | if (ret) |
742 | goto err_unref; | 743 | goto err_unref; |
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c index d1129000c5cf..0f7ec016e7a9 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | |||
@@ -146,7 +146,7 @@ atmel_hlcdc_rgb_encoder_mode_set(struct drm_encoder *encoder, | |||
146 | cfg); | 146 | cfg); |
147 | } | 147 | } |
148 | 148 | ||
149 | static struct drm_encoder_helper_funcs atmel_hlcdc_panel_encoder_helper_funcs = { | 149 | static const struct drm_encoder_helper_funcs atmel_hlcdc_panel_encoder_helper_funcs = { |
150 | .mode_fixup = atmel_hlcdc_panel_encoder_mode_fixup, | 150 | .mode_fixup = atmel_hlcdc_panel_encoder_mode_fixup, |
151 | .mode_set = atmel_hlcdc_rgb_encoder_mode_set, | 151 | .mode_set = atmel_hlcdc_rgb_encoder_mode_set, |
152 | .disable = atmel_hlcdc_panel_encoder_disable, | 152 | .disable = atmel_hlcdc_panel_encoder_disable, |
@@ -192,7 +192,7 @@ atmel_hlcdc_rgb_best_encoder(struct drm_connector *connector) | |||
192 | return &rgb->encoder; | 192 | return &rgb->encoder; |
193 | } | 193 | } |
194 | 194 | ||
195 | static struct drm_connector_helper_funcs atmel_hlcdc_panel_connector_helper_funcs = { | 195 | static const struct drm_connector_helper_funcs atmel_hlcdc_panel_connector_helper_funcs = { |
196 | .get_modes = atmel_hlcdc_panel_get_modes, | 196 | .get_modes = atmel_hlcdc_panel_get_modes, |
197 | .mode_valid = atmel_hlcdc_rgb_mode_valid, | 197 | .mode_valid = atmel_hlcdc_rgb_mode_valid, |
198 | .best_encoder = atmel_hlcdc_rgb_best_encoder, | 198 | .best_encoder = atmel_hlcdc_rgb_best_encoder, |
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c index a88be6dd34a4..2849f1b95eec 100644 --- a/drivers/gpu/drm/bochs/bochs_kms.c +++ b/drivers/gpu/drm/bochs/bochs_kms.c | |||
@@ -119,7 +119,7 @@ static int bochs_crtc_page_flip(struct drm_crtc *crtc, | |||
119 | bochs_crtc_mode_set_base(crtc, 0, 0, old_fb); | 119 | bochs_crtc_mode_set_base(crtc, 0, 0, old_fb); |
120 | if (event) { | 120 | if (event) { |
121 | spin_lock_irqsave(&bochs->dev->event_lock, irqflags); | 121 | spin_lock_irqsave(&bochs->dev->event_lock, irqflags); |
122 | drm_send_vblank_event(bochs->dev, -1, event); | 122 | drm_crtc_send_vblank_event(crtc, event); |
123 | spin_unlock_irqrestore(&bochs->dev->event_lock, irqflags); | 123 | spin_unlock_irqrestore(&bochs->dev->event_lock, irqflags); |
124 | } | 124 | } |
125 | return 0; | 125 | return 0; |
@@ -245,13 +245,13 @@ static enum drm_connector_status bochs_connector_detect(struct drm_connector | |||
245 | return connector_status_connected; | 245 | return connector_status_connected; |
246 | } | 246 | } |
247 | 247 | ||
248 | struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = { | 248 | static const struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = { |
249 | .get_modes = bochs_connector_get_modes, | 249 | .get_modes = bochs_connector_get_modes, |
250 | .mode_valid = bochs_connector_mode_valid, | 250 | .mode_valid = bochs_connector_mode_valid, |
251 | .best_encoder = bochs_connector_best_encoder, | 251 | .best_encoder = bochs_connector_best_encoder, |
252 | }; | 252 | }; |
253 | 253 | ||
254 | struct drm_connector_funcs bochs_connector_connector_funcs = { | 254 | static const struct drm_connector_funcs bochs_connector_connector_funcs = { |
255 | .dpms = drm_helper_connector_dpms, | 255 | .dpms = drm_helper_connector_dpms, |
256 | .detect = bochs_connector_detect, | 256 | .detect = bochs_connector_detect, |
257 | .fill_modes = drm_helper_probe_single_connector_modes, | 257 | .fill_modes = drm_helper_probe_single_connector_modes, |
@@ -283,7 +283,7 @@ int bochs_kms_init(struct bochs_device *bochs) | |||
283 | bochs->dev->mode_config.preferred_depth = 24; | 283 | bochs->dev->mode_config.preferred_depth = 24; |
284 | bochs->dev->mode_config.prefer_shadow = 0; | 284 | bochs->dev->mode_config.prefer_shadow = 0; |
285 | 285 | ||
286 | bochs->dev->mode_config.funcs = (void *)&bochs_mode_funcs; | 286 | bochs->dev->mode_config.funcs = &bochs_mode_funcs; |
287 | 287 | ||
288 | bochs_crtc_init(bochs->dev); | 288 | bochs_crtc_init(bochs->dev); |
289 | bochs_encoder_init(bochs->dev); | 289 | bochs_encoder_init(bochs->dev); |
diff --git a/drivers/gpu/drm/bridge/dw-hdmi.c b/drivers/gpu/drm/bridge/dw-hdmi.c index 298018a8562e..77cafa9aa41c 100644 --- a/drivers/gpu/drm/bridge/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/dw-hdmi.c | |||
@@ -1514,7 +1514,7 @@ static void dw_hdmi_connector_force(struct drm_connector *connector) | |||
1514 | mutex_unlock(&hdmi->mutex); | 1514 | mutex_unlock(&hdmi->mutex); |
1515 | } | 1515 | } |
1516 | 1516 | ||
1517 | static struct drm_connector_funcs dw_hdmi_connector_funcs = { | 1517 | static const struct drm_connector_funcs dw_hdmi_connector_funcs = { |
1518 | .dpms = drm_helper_connector_dpms, | 1518 | .dpms = drm_helper_connector_dpms, |
1519 | .fill_modes = drm_helper_probe_single_connector_modes, | 1519 | .fill_modes = drm_helper_probe_single_connector_modes, |
1520 | .detect = dw_hdmi_connector_detect, | 1520 | .detect = dw_hdmi_connector_detect, |
@@ -1522,13 +1522,13 @@ static struct drm_connector_funcs dw_hdmi_connector_funcs = { | |||
1522 | .force = dw_hdmi_connector_force, | 1522 | .force = dw_hdmi_connector_force, |
1523 | }; | 1523 | }; |
1524 | 1524 | ||
1525 | static struct drm_connector_helper_funcs dw_hdmi_connector_helper_funcs = { | 1525 | static const struct drm_connector_helper_funcs dw_hdmi_connector_helper_funcs = { |
1526 | .get_modes = dw_hdmi_connector_get_modes, | 1526 | .get_modes = dw_hdmi_connector_get_modes, |
1527 | .mode_valid = dw_hdmi_connector_mode_valid, | 1527 | .mode_valid = dw_hdmi_connector_mode_valid, |
1528 | .best_encoder = dw_hdmi_connector_best_encoder, | 1528 | .best_encoder = dw_hdmi_connector_best_encoder, |
1529 | }; | 1529 | }; |
1530 | 1530 | ||
1531 | static struct drm_bridge_funcs dw_hdmi_bridge_funcs = { | 1531 | static const struct drm_bridge_funcs dw_hdmi_bridge_funcs = { |
1532 | .enable = dw_hdmi_bridge_enable, | 1532 | .enable = dw_hdmi_bridge_enable, |
1533 | .disable = dw_hdmi_bridge_disable, | 1533 | .disable = dw_hdmi_bridge_disable, |
1534 | .pre_enable = dw_hdmi_bridge_nop, | 1534 | .pre_enable = dw_hdmi_bridge_nop, |
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c index 0ffa3a6a206a..7ecd59f70b8e 100644 --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c | |||
@@ -242,7 +242,7 @@ static struct drm_encoder *ptn3460_best_encoder(struct drm_connector *connector) | |||
242 | return ptn_bridge->bridge.encoder; | 242 | return ptn_bridge->bridge.encoder; |
243 | } | 243 | } |
244 | 244 | ||
245 | static struct drm_connector_helper_funcs ptn3460_connector_helper_funcs = { | 245 | static const struct drm_connector_helper_funcs ptn3460_connector_helper_funcs = { |
246 | .get_modes = ptn3460_get_modes, | 246 | .get_modes = ptn3460_get_modes, |
247 | .best_encoder = ptn3460_best_encoder, | 247 | .best_encoder = ptn3460_best_encoder, |
248 | }; | 248 | }; |
@@ -258,7 +258,7 @@ static void ptn3460_connector_destroy(struct drm_connector *connector) | |||
258 | drm_connector_cleanup(connector); | 258 | drm_connector_cleanup(connector); |
259 | } | 259 | } |
260 | 260 | ||
261 | static struct drm_connector_funcs ptn3460_connector_funcs = { | 261 | static const struct drm_connector_funcs ptn3460_connector_funcs = { |
262 | .dpms = drm_atomic_helper_connector_dpms, | 262 | .dpms = drm_atomic_helper_connector_dpms, |
263 | .fill_modes = drm_helper_probe_single_connector_modes, | 263 | .fill_modes = drm_helper_probe_single_connector_modes, |
264 | .detect = ptn3460_detect, | 264 | .detect = ptn3460_detect, |
@@ -299,7 +299,7 @@ static int ptn3460_bridge_attach(struct drm_bridge *bridge) | |||
299 | return ret; | 299 | return ret; |
300 | } | 300 | } |
301 | 301 | ||
302 | static struct drm_bridge_funcs ptn3460_bridge_funcs = { | 302 | static const struct drm_bridge_funcs ptn3460_bridge_funcs = { |
303 | .pre_enable = ptn3460_pre_enable, | 303 | .pre_enable = ptn3460_pre_enable, |
304 | .enable = ptn3460_enable, | 304 | .enable = ptn3460_enable, |
305 | .disable = ptn3460_disable, | 305 | .disable = ptn3460_disable, |
diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c index 276719e52153..4a02854a6963 100644 --- a/drivers/gpu/drm/cirrus/cirrus_mode.c +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c | |||
@@ -533,12 +533,12 @@ static void cirrus_connector_destroy(struct drm_connector *connector) | |||
533 | kfree(connector); | 533 | kfree(connector); |
534 | } | 534 | } |
535 | 535 | ||
536 | struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs = { | 536 | static const struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs = { |
537 | .get_modes = cirrus_vga_get_modes, | 537 | .get_modes = cirrus_vga_get_modes, |
538 | .best_encoder = cirrus_connector_best_encoder, | 538 | .best_encoder = cirrus_connector_best_encoder, |
539 | }; | 539 | }; |
540 | 540 | ||
541 | struct drm_connector_funcs cirrus_vga_connector_funcs = { | 541 | static const struct drm_connector_funcs cirrus_vga_connector_funcs = { |
542 | .dpms = drm_helper_connector_dpms, | 542 | .dpms = drm_helper_connector_dpms, |
543 | .detect = cirrus_vga_detect, | 543 | .detect = cirrus_vga_detect, |
544 | .fill_modes = drm_helper_probe_single_connector_modes, | 544 | .fill_modes = drm_helper_probe_single_connector_modes, |
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 63f925b75357..268d37f26960 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c | |||
@@ -88,8 +88,7 @@ drm_atomic_helper_plane_changed(struct drm_atomic_state *state, | |||
88 | 88 | ||
89 | static bool | 89 | static bool |
90 | check_pending_encoder_assignment(struct drm_atomic_state *state, | 90 | check_pending_encoder_assignment(struct drm_atomic_state *state, |
91 | struct drm_encoder *new_encoder, | 91 | struct drm_encoder *new_encoder) |
92 | struct drm_connector *new_connector) | ||
93 | { | 92 | { |
94 | struct drm_connector *connector; | 93 | struct drm_connector *connector; |
95 | struct drm_connector_state *conn_state; | 94 | struct drm_connector_state *conn_state; |
@@ -257,7 +256,7 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx) | |||
257 | return 0; | 256 | return 0; |
258 | } | 257 | } |
259 | 258 | ||
260 | if (!check_pending_encoder_assignment(state, new_encoder, connector)) { | 259 | if (!check_pending_encoder_assignment(state, new_encoder)) { |
261 | DRM_DEBUG_ATOMIC("Encoder for [CONNECTOR:%d:%s] already assigned\n", | 260 | DRM_DEBUG_ATOMIC("Encoder for [CONNECTOR:%d:%s] already assigned\n", |
262 | connector->base.id, | 261 | connector->base.id, |
263 | connector->name); | 262 | connector->name); |
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index 809959d56d78..3b6627dde9ff 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c | |||
@@ -1673,6 +1673,7 @@ int drm_dp_update_payload_part1(struct drm_dp_mst_topology_mgr *mgr) | |||
1673 | if (mgr->proposed_vcpis[i]) { | 1673 | if (mgr->proposed_vcpis[i]) { |
1674 | port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi); | 1674 | port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi); |
1675 | req_payload.num_slots = mgr->proposed_vcpis[i]->num_slots; | 1675 | req_payload.num_slots = mgr->proposed_vcpis[i]->num_slots; |
1676 | req_payload.vcpi = mgr->proposed_vcpis[i]->vcpi; | ||
1676 | } else { | 1677 | } else { |
1677 | port = NULL; | 1678 | port = NULL; |
1678 | req_payload.num_slots = 0; | 1679 | req_payload.num_slots = 0; |
@@ -1688,6 +1689,7 @@ int drm_dp_update_payload_part1(struct drm_dp_mst_topology_mgr *mgr) | |||
1688 | if (req_payload.num_slots) { | 1689 | if (req_payload.num_slots) { |
1689 | drm_dp_create_payload_step1(mgr, mgr->proposed_vcpis[i]->vcpi, &req_payload); | 1690 | drm_dp_create_payload_step1(mgr, mgr->proposed_vcpis[i]->vcpi, &req_payload); |
1690 | mgr->payloads[i].num_slots = req_payload.num_slots; | 1691 | mgr->payloads[i].num_slots = req_payload.num_slots; |
1692 | mgr->payloads[i].vcpi = req_payload.vcpi; | ||
1691 | } else if (mgr->payloads[i].num_slots) { | 1693 | } else if (mgr->payloads[i].num_slots) { |
1692 | mgr->payloads[i].num_slots = 0; | 1694 | mgr->payloads[i].num_slots = 0; |
1693 | drm_dp_destroy_payload_step1(mgr, port, port->vcpi.vcpi, &mgr->payloads[i]); | 1695 | drm_dp_destroy_payload_step1(mgr, port, port->vcpi.vcpi, &mgr->payloads[i]); |
@@ -1823,7 +1825,7 @@ static int drm_dp_encode_up_ack_reply(struct drm_dp_sideband_msg_tx *msg, u8 req | |||
1823 | { | 1825 | { |
1824 | struct drm_dp_sideband_msg_reply_body reply; | 1826 | struct drm_dp_sideband_msg_reply_body reply; |
1825 | 1827 | ||
1826 | reply.reply_type = 1; | 1828 | reply.reply_type = 0; |
1827 | reply.req_type = req_type; | 1829 | reply.req_type = req_type; |
1828 | drm_dp_encode_sideband_reply(&reply, msg); | 1830 | drm_dp_encode_sideband_reply(&reply, msg); |
1829 | return 0; | 1831 | return 0; |
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 7dd6728dd092..bf934cdea21c 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c | |||
@@ -633,8 +633,17 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver, | |||
633 | } | 633 | } |
634 | } | 634 | } |
635 | 635 | ||
636 | if (parent) { | ||
637 | ret = drm_dev_set_unique(dev, dev_name(parent)); | ||
638 | if (ret) | ||
639 | goto err_setunique; | ||
640 | } | ||
641 | |||
636 | return dev; | 642 | return dev; |
637 | 643 | ||
644 | err_setunique: | ||
645 | if (drm_core_check_feature(dev, DRIVER_GEM)) | ||
646 | drm_gem_destroy(dev); | ||
638 | err_ctxbitmap: | 647 | err_ctxbitmap: |
639 | drm_legacy_ctxbitmap_cleanup(dev); | 648 | drm_legacy_ctxbitmap_cleanup(dev); |
640 | drm_ht_remove(&dev->map_hash); | 649 | drm_ht_remove(&dev->map_hash); |
@@ -797,23 +806,18 @@ EXPORT_SYMBOL(drm_dev_unregister); | |||
797 | /** | 806 | /** |
798 | * drm_dev_set_unique - Set the unique name of a DRM device | 807 | * drm_dev_set_unique - Set the unique name of a DRM device |
799 | * @dev: device of which to set the unique name | 808 | * @dev: device of which to set the unique name |
800 | * @fmt: format string for unique name | 809 | * @name: unique name |
801 | * | 810 | * |
802 | * Sets the unique name of a DRM device using the specified format string and | 811 | * Sets the unique name of a DRM device using the specified string. Drivers |
803 | * a variable list of arguments. Drivers can use this at driver probe time if | 812 | * can use this at driver probe time if the unique name of the devices they |
804 | * the unique name of the devices they drive is static. | 813 | * drive is static. |
805 | * | 814 | * |
806 | * Return: 0 on success or a negative error code on failure. | 815 | * Return: 0 on success or a negative error code on failure. |
807 | */ | 816 | */ |
808 | int drm_dev_set_unique(struct drm_device *dev, const char *fmt, ...) | 817 | int drm_dev_set_unique(struct drm_device *dev, const char *name) |
809 | { | 818 | { |
810 | va_list ap; | ||
811 | |||
812 | kfree(dev->unique); | 819 | kfree(dev->unique); |
813 | 820 | dev->unique = kstrdup(name, GFP_KERNEL); | |
814 | va_start(ap, fmt); | ||
815 | dev->unique = kvasprintf(GFP_KERNEL, fmt, ap); | ||
816 | va_end(ap); | ||
817 | 821 | ||
818 | return dev->unique ? 0 : -ENOMEM; | 822 | return dev->unique ? 0 : -ENOMEM; |
819 | } | 823 | } |
diff --git a/drivers/gpu/drm/drm_encoder_slave.c b/drivers/gpu/drm/drm_encoder_slave.c index d18b88b755c3..e8629076de32 100644 --- a/drivers/gpu/drm/drm_encoder_slave.c +++ b/drivers/gpu/drm/drm_encoder_slave.c | |||
@@ -124,7 +124,7 @@ EXPORT_SYMBOL(drm_i2c_encoder_destroy); | |||
124 | * Wrapper fxns which can be plugged in to drm_encoder_helper_funcs: | 124 | * Wrapper fxns which can be plugged in to drm_encoder_helper_funcs: |
125 | */ | 125 | */ |
126 | 126 | ||
127 | static inline struct drm_encoder_slave_funcs * | 127 | static inline const struct drm_encoder_slave_funcs * |
128 | get_slave_funcs(struct drm_encoder *enc) | 128 | get_slave_funcs(struct drm_encoder *enc) |
129 | { | 129 | { |
130 | return to_encoder_slave(enc)->slave_funcs; | 130 | return to_encoder_slave(enc)->slave_funcs; |
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c index b7d5b848d2f8..5543fa806aec 100644 --- a/drivers/gpu/drm/drm_fb_cma_helper.c +++ b/drivers/gpu/drm/drm_fb_cma_helper.c | |||
@@ -266,7 +266,7 @@ static int drm_fbdev_cma_create(struct drm_fb_helper *helper, | |||
266 | fbi = drm_fb_helper_alloc_fbi(helper); | 266 | fbi = drm_fb_helper_alloc_fbi(helper); |
267 | if (IS_ERR(fbi)) { | 267 | if (IS_ERR(fbi)) { |
268 | ret = PTR_ERR(fbi); | 268 | ret = PTR_ERR(fbi); |
269 | goto err_drm_gem_cma_free_object; | 269 | goto err_gem_free_object; |
270 | } | 270 | } |
271 | 271 | ||
272 | fbdev_cma->fb = drm_fb_cma_alloc(dev, &mode_cmd, &obj, 1); | 272 | fbdev_cma->fb = drm_fb_cma_alloc(dev, &mode_cmd, &obj, 1); |
@@ -299,8 +299,8 @@ static int drm_fbdev_cma_create(struct drm_fb_helper *helper, | |||
299 | 299 | ||
300 | err_fb_info_destroy: | 300 | err_fb_info_destroy: |
301 | drm_fb_helper_release_fbi(helper); | 301 | drm_fb_helper_release_fbi(helper); |
302 | err_drm_gem_cma_free_object: | 302 | err_gem_free_object: |
303 | drm_gem_cma_free_object(&obj->base); | 303 | dev->driver->gem_free_object(&obj->base); |
304 | return ret; | 304 | return ret; |
305 | } | 305 | } |
306 | 306 | ||
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c index 0f7b00ba57da..e5df53b6e229 100644 --- a/drivers/gpu/drm/drm_gem_cma_helper.c +++ b/drivers/gpu/drm/drm_gem_cma_helper.c | |||
@@ -121,7 +121,7 @@ struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, | |||
121 | return cma_obj; | 121 | return cma_obj; |
122 | 122 | ||
123 | error: | 123 | error: |
124 | drm_gem_cma_free_object(&cma_obj->base); | 124 | drm->driver->gem_free_object(&cma_obj->base); |
125 | return ERR_PTR(ret); | 125 | return ERR_PTR(ret); |
126 | } | 126 | } |
127 | EXPORT_SYMBOL_GPL(drm_gem_cma_create); | 127 | EXPORT_SYMBOL_GPL(drm_gem_cma_create); |
@@ -171,7 +171,7 @@ drm_gem_cma_create_with_handle(struct drm_file *file_priv, | |||
171 | return cma_obj; | 171 | return cma_obj; |
172 | 172 | ||
173 | err_handle_create: | 173 | err_handle_create: |
174 | drm_gem_cma_free_object(gem_obj); | 174 | drm->driver->gem_free_object(gem_obj); |
175 | 175 | ||
176 | return ERR_PTR(ret); | 176 | return ERR_PTR(ret); |
177 | } | 177 | } |
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 5a8a78d5e960..20775c05235a 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c | |||
@@ -553,10 +553,10 @@ EXPORT_SYMBOL(drm_gtf_mode_complex); | |||
553 | * drivers/video/fbmon.c | 553 | * drivers/video/fbmon.c |
554 | * | 554 | * |
555 | * Standard GTF parameters: | 555 | * Standard GTF parameters: |
556 | * M = 600 | 556 | * M = 600 |
557 | * C = 40 | 557 | * C = 40 |
558 | * K = 128 | 558 | * K = 128 |
559 | * J = 20 | 559 | * J = 20 |
560 | * | 560 | * |
561 | * Returns: | 561 | * Returns: |
562 | * The modeline based on the GTF algorithm stored in a drm_display_mode object. | 562 | * The modeline based on the GTF algorithm stored in a drm_display_mode object. |
@@ -1244,7 +1244,7 @@ EXPORT_SYMBOL(drm_mode_connector_list_update); | |||
1244 | * This uses the same parameters as the fb modedb.c, except for an extra | 1244 | * This uses the same parameters as the fb modedb.c, except for an extra |
1245 | * force-enable, force-enable-digital and force-disable bit at the end: | 1245 | * force-enable, force-enable-digital and force-disable bit at the end: |
1246 | * | 1246 | * |
1247 | * <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd] | 1247 | * <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd] |
1248 | * | 1248 | * |
1249 | * The intermediate drm_cmdline_mode structure is required to store additional | 1249 | * The intermediate drm_cmdline_mode structure is required to store additional |
1250 | * options from the command line modline like the force-enable/disable flag. | 1250 | * options from the command line modline like the force-enable/disable flag. |
@@ -1523,4 +1523,4 @@ int drm_mode_convert_umode(struct drm_display_mode *out, | |||
1523 | 1523 | ||
1524 | out: | 1524 | out: |
1525 | return ret; | 1525 | return ret; |
1526 | } \ No newline at end of file | 1526 | } |
diff --git a/drivers/gpu/drm/drm_modeset_lock.c b/drivers/gpu/drm/drm_modeset_lock.c index c2f5971146ba..e3a4adf03e7b 100644 --- a/drivers/gpu/drm/drm_modeset_lock.c +++ b/drivers/gpu/drm/drm_modeset_lock.c | |||
@@ -40,17 +40,15 @@ | |||
40 | * The basic usage pattern is to: | 40 | * The basic usage pattern is to: |
41 | * | 41 | * |
42 | * drm_modeset_acquire_init(&ctx) | 42 | * drm_modeset_acquire_init(&ctx) |
43 | * retry: | 43 | * retry: |
44 | * foreach (lock in random_ordered_set_of_locks) { | 44 | * foreach (lock in random_ordered_set_of_locks) { |
45 | * ret = drm_modeset_lock(lock, &ctx) | 45 | * ret = drm_modeset_lock(lock, &ctx) |
46 | * if (ret == -EDEADLK) { | 46 | * if (ret == -EDEADLK) { |
47 | * drm_modeset_backoff(&ctx); | 47 | * drm_modeset_backoff(&ctx); |
48 | * goto retry; | 48 | * goto retry; |
49 | * } | 49 | * } |
50 | * } | 50 | * } |
51 | * | ||
52 | * ... do stuff ... | 51 | * ... do stuff ... |
53 | * | ||
54 | * drm_modeset_drop_locks(&ctx); | 52 | * drm_modeset_drop_locks(&ctx); |
55 | * drm_modeset_acquire_fini(&ctx); | 53 | * drm_modeset_acquire_fini(&ctx); |
56 | */ | 54 | */ |
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index 9f935f55d74c..27aa7183b20b 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c | |||
@@ -313,19 +313,15 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = { | |||
313 | * | 313 | * |
314 | * Export callbacks: | 314 | * Export callbacks: |
315 | * | 315 | * |
316 | * - @gem_prime_pin (optional): prepare a GEM object for exporting | 316 | * * @gem_prime_pin (optional): prepare a GEM object for exporting |
317 | * | 317 | * * @gem_prime_get_sg_table: provide a scatter/gather table of pinned pages |
318 | * - @gem_prime_get_sg_table: provide a scatter/gather table of pinned pages | 318 | * * @gem_prime_vmap: vmap a buffer exported by your driver |
319 | * | 319 | * * @gem_prime_vunmap: vunmap a buffer exported by your driver |
320 | * - @gem_prime_vmap: vmap a buffer exported by your driver | 320 | * * @gem_prime_mmap (optional): mmap a buffer exported by your driver |
321 | * | ||
322 | * - @gem_prime_vunmap: vunmap a buffer exported by your driver | ||
323 | * | ||
324 | * - @gem_prime_mmap (optional): mmap a buffer exported by your driver | ||
325 | * | 321 | * |
326 | * Import callback: | 322 | * Import callback: |
327 | * | 323 | * |
328 | * - @gem_prime_import_sg_table (import): produce a GEM object from another | 324 | * * @gem_prime_import_sg_table (import): produce a GEM object from another |
329 | * driver's scatter/gather table | 325 | * driver's scatter/gather table |
330 | */ | 326 | */ |
331 | 327 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 793e4977fcf7..b79c316c2ad2 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c | |||
@@ -953,7 +953,7 @@ static void exynos_dp_connector_destroy(struct drm_connector *connector) | |||
953 | drm_connector_cleanup(connector); | 953 | drm_connector_cleanup(connector); |
954 | } | 954 | } |
955 | 955 | ||
956 | static struct drm_connector_funcs exynos_dp_connector_funcs = { | 956 | static const struct drm_connector_funcs exynos_dp_connector_funcs = { |
957 | .dpms = drm_atomic_helper_connector_dpms, | 957 | .dpms = drm_atomic_helper_connector_dpms, |
958 | .fill_modes = drm_helper_probe_single_connector_modes, | 958 | .fill_modes = drm_helper_probe_single_connector_modes, |
959 | .detect = exynos_dp_detect, | 959 | .detect = exynos_dp_detect, |
@@ -998,7 +998,7 @@ static struct drm_encoder *exynos_dp_best_encoder( | |||
998 | return &dp->encoder; | 998 | return &dp->encoder; |
999 | } | 999 | } |
1000 | 1000 | ||
1001 | static struct drm_connector_helper_funcs exynos_dp_connector_helper_funcs = { | 1001 | static const struct drm_connector_helper_funcs exynos_dp_connector_helper_funcs = { |
1002 | .get_modes = exynos_dp_get_modes, | 1002 | .get_modes = exynos_dp_get_modes, |
1003 | .best_encoder = exynos_dp_best_encoder, | 1003 | .best_encoder = exynos_dp_best_encoder, |
1004 | }; | 1004 | }; |
@@ -1176,14 +1176,14 @@ static void exynos_dp_disable(struct drm_encoder *encoder) | |||
1176 | { | 1176 | { |
1177 | } | 1177 | } |
1178 | 1178 | ||
1179 | static struct drm_encoder_helper_funcs exynos_dp_encoder_helper_funcs = { | 1179 | static const struct drm_encoder_helper_funcs exynos_dp_encoder_helper_funcs = { |
1180 | .mode_fixup = exynos_dp_mode_fixup, | 1180 | .mode_fixup = exynos_dp_mode_fixup, |
1181 | .mode_set = exynos_dp_mode_set, | 1181 | .mode_set = exynos_dp_mode_set, |
1182 | .enable = exynos_dp_enable, | 1182 | .enable = exynos_dp_enable, |
1183 | .disable = exynos_dp_disable, | 1183 | .disable = exynos_dp_disable, |
1184 | }; | 1184 | }; |
1185 | 1185 | ||
1186 | static struct drm_encoder_funcs exynos_dp_encoder_funcs = { | 1186 | static const struct drm_encoder_funcs exynos_dp_encoder_funcs = { |
1187 | .destroy = drm_encoder_cleanup, | 1187 | .destroy = drm_encoder_cleanup, |
1188 | }; | 1188 | }; |
1189 | 1189 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index 9d30a0fa3248..80f797414236 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c | |||
@@ -93,7 +93,7 @@ static void exynos_crtc_atomic_flush(struct drm_crtc *crtc, | |||
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
96 | static struct drm_crtc_helper_funcs exynos_crtc_helper_funcs = { | 96 | static const struct drm_crtc_helper_funcs exynos_crtc_helper_funcs = { |
97 | .enable = exynos_drm_crtc_enable, | 97 | .enable = exynos_drm_crtc_enable, |
98 | .disable = exynos_drm_crtc_disable, | 98 | .disable = exynos_drm_crtc_disable, |
99 | .mode_set_nofb = exynos_drm_crtc_mode_set_nofb, | 99 | .mode_set_nofb = exynos_drm_crtc_mode_set_nofb, |
@@ -113,7 +113,7 @@ static void exynos_drm_crtc_destroy(struct drm_crtc *crtc) | |||
113 | kfree(exynos_crtc); | 113 | kfree(exynos_crtc); |
114 | } | 114 | } |
115 | 115 | ||
116 | static struct drm_crtc_funcs exynos_crtc_funcs = { | 116 | static const struct drm_crtc_funcs exynos_crtc_funcs = { |
117 | .set_config = drm_atomic_helper_set_config, | 117 | .set_config = drm_atomic_helper_set_config, |
118 | .page_flip = drm_atomic_helper_page_flip, | 118 | .page_flip = drm_atomic_helper_page_flip, |
119 | .destroy = exynos_drm_crtc_destroy, | 119 | .destroy = exynos_drm_crtc_destroy, |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c index 1dbf8dca2d6b..05350ae0785b 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c | |||
@@ -57,7 +57,7 @@ static void exynos_dpi_connector_destroy(struct drm_connector *connector) | |||
57 | drm_connector_cleanup(connector); | 57 | drm_connector_cleanup(connector); |
58 | } | 58 | } |
59 | 59 | ||
60 | static struct drm_connector_funcs exynos_dpi_connector_funcs = { | 60 | static const struct drm_connector_funcs exynos_dpi_connector_funcs = { |
61 | .dpms = drm_atomic_helper_connector_dpms, | 61 | .dpms = drm_atomic_helper_connector_dpms, |
62 | .detect = exynos_dpi_detect, | 62 | .detect = exynos_dpi_detect, |
63 | .fill_modes = drm_helper_probe_single_connector_modes, | 63 | .fill_modes = drm_helper_probe_single_connector_modes, |
@@ -100,7 +100,7 @@ exynos_dpi_best_encoder(struct drm_connector *connector) | |||
100 | return &ctx->encoder; | 100 | return &ctx->encoder; |
101 | } | 101 | } |
102 | 102 | ||
103 | static struct drm_connector_helper_funcs exynos_dpi_connector_helper_funcs = { | 103 | static const struct drm_connector_helper_funcs exynos_dpi_connector_helper_funcs = { |
104 | .get_modes = exynos_dpi_get_modes, | 104 | .get_modes = exynos_dpi_get_modes, |
105 | .best_encoder = exynos_dpi_best_encoder, | 105 | .best_encoder = exynos_dpi_best_encoder, |
106 | }; | 106 | }; |
@@ -161,14 +161,14 @@ static void exynos_dpi_disable(struct drm_encoder *encoder) | |||
161 | } | 161 | } |
162 | } | 162 | } |
163 | 163 | ||
164 | static struct drm_encoder_helper_funcs exynos_dpi_encoder_helper_funcs = { | 164 | static const struct drm_encoder_helper_funcs exynos_dpi_encoder_helper_funcs = { |
165 | .mode_fixup = exynos_dpi_mode_fixup, | 165 | .mode_fixup = exynos_dpi_mode_fixup, |
166 | .mode_set = exynos_dpi_mode_set, | 166 | .mode_set = exynos_dpi_mode_set, |
167 | .enable = exynos_dpi_enable, | 167 | .enable = exynos_dpi_enable, |
168 | .disable = exynos_dpi_disable, | 168 | .disable = exynos_dpi_disable, |
169 | }; | 169 | }; |
170 | 170 | ||
171 | static struct drm_encoder_funcs exynos_dpi_encoder_funcs = { | 171 | static const struct drm_encoder_funcs exynos_dpi_encoder_funcs = { |
172 | .destroy = drm_encoder_cleanup, | 172 | .destroy = drm_encoder_cleanup, |
173 | }; | 173 | }; |
174 | 174 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index bc09bba3132a..d84a498ef099 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c | |||
@@ -1541,7 +1541,7 @@ static void exynos_dsi_connector_destroy(struct drm_connector *connector) | |||
1541 | connector->dev = NULL; | 1541 | connector->dev = NULL; |
1542 | } | 1542 | } |
1543 | 1543 | ||
1544 | static struct drm_connector_funcs exynos_dsi_connector_funcs = { | 1544 | static const struct drm_connector_funcs exynos_dsi_connector_funcs = { |
1545 | .dpms = drm_atomic_helper_connector_dpms, | 1545 | .dpms = drm_atomic_helper_connector_dpms, |
1546 | .detect = exynos_dsi_detect, | 1546 | .detect = exynos_dsi_detect, |
1547 | .fill_modes = drm_helper_probe_single_connector_modes, | 1547 | .fill_modes = drm_helper_probe_single_connector_modes, |
@@ -1569,7 +1569,7 @@ exynos_dsi_best_encoder(struct drm_connector *connector) | |||
1569 | return &dsi->encoder; | 1569 | return &dsi->encoder; |
1570 | } | 1570 | } |
1571 | 1571 | ||
1572 | static struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = { | 1572 | static const struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = { |
1573 | .get_modes = exynos_dsi_get_modes, | 1573 | .get_modes = exynos_dsi_get_modes, |
1574 | .best_encoder = exynos_dsi_best_encoder, | 1574 | .best_encoder = exynos_dsi_best_encoder, |
1575 | }; | 1575 | }; |
@@ -1622,14 +1622,14 @@ static void exynos_dsi_mode_set(struct drm_encoder *encoder, | |||
1622 | vm->hsync_len = m->hsync_end - m->hsync_start; | 1622 | vm->hsync_len = m->hsync_end - m->hsync_start; |
1623 | } | 1623 | } |
1624 | 1624 | ||
1625 | static struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { | 1625 | static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { |
1626 | .mode_fixup = exynos_dsi_mode_fixup, | 1626 | .mode_fixup = exynos_dsi_mode_fixup, |
1627 | .mode_set = exynos_dsi_mode_set, | 1627 | .mode_set = exynos_dsi_mode_set, |
1628 | .enable = exynos_dsi_enable, | 1628 | .enable = exynos_dsi_enable, |
1629 | .disable = exynos_dsi_disable, | 1629 | .disable = exynos_dsi_disable, |
1630 | }; | 1630 | }; |
1631 | 1631 | ||
1632 | static struct drm_encoder_funcs exynos_dsi_encoder_funcs = { | 1632 | static const struct drm_encoder_funcs exynos_dsi_encoder_funcs = { |
1633 | .destroy = drm_encoder_cleanup, | 1633 | .destroy = drm_encoder_cleanup, |
1634 | }; | 1634 | }; |
1635 | 1635 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c index f6bdb0d6f142..cbbb1a86e70a 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c | |||
@@ -110,7 +110,7 @@ static int exynos_drm_fb_dirty(struct drm_framebuffer *fb, | |||
110 | return 0; | 110 | return 0; |
111 | } | 111 | } |
112 | 112 | ||
113 | static struct drm_framebuffer_funcs exynos_drm_fb_funcs = { | 113 | static const struct drm_framebuffer_funcs exynos_drm_fb_funcs = { |
114 | .destroy = exynos_drm_fb_destroy, | 114 | .destroy = exynos_drm_fb_destroy, |
115 | .create_handle = exynos_drm_fb_create_handle, | 115 | .create_handle = exynos_drm_fb_create_handle, |
116 | .dirty = exynos_drm_fb_dirty, | 116 | .dirty = exynos_drm_fb_dirty, |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_mic.c b/drivers/gpu/drm/exynos/exynos_drm_mic.c index 8994eab56ba8..4eaef36aec5a 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_mic.c +++ b/drivers/gpu/drm/exynos/exynos_drm_mic.c | |||
@@ -389,7 +389,7 @@ already_disabled: | |||
389 | mutex_unlock(&mic_mutex); | 389 | mutex_unlock(&mic_mutex); |
390 | } | 390 | } |
391 | 391 | ||
392 | struct drm_bridge_funcs mic_bridge_funcs = { | 392 | static const struct drm_bridge_funcs mic_bridge_funcs = { |
393 | .disable = mic_disable, | 393 | .disable = mic_disable, |
394 | .post_disable = mic_post_disable, | 394 | .post_disable = mic_post_disable, |
395 | .pre_enable = mic_pre_enable, | 395 | .pre_enable = mic_pre_enable, |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c index 319aa31954d1..0be29c1b2c05 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c | |||
@@ -339,7 +339,7 @@ static void vidi_connector_destroy(struct drm_connector *connector) | |||
339 | { | 339 | { |
340 | } | 340 | } |
341 | 341 | ||
342 | static struct drm_connector_funcs vidi_connector_funcs = { | 342 | static const struct drm_connector_funcs vidi_connector_funcs = { |
343 | .dpms = drm_atomic_helper_connector_dpms, | 343 | .dpms = drm_atomic_helper_connector_dpms, |
344 | .fill_modes = drm_helper_probe_single_connector_modes, | 344 | .fill_modes = drm_helper_probe_single_connector_modes, |
345 | .detect = vidi_detect, | 345 | .detect = vidi_detect, |
@@ -383,7 +383,7 @@ static struct drm_encoder *vidi_best_encoder(struct drm_connector *connector) | |||
383 | return &ctx->encoder; | 383 | return &ctx->encoder; |
384 | } | 384 | } |
385 | 385 | ||
386 | static struct drm_connector_helper_funcs vidi_connector_helper_funcs = { | 386 | static const struct drm_connector_helper_funcs vidi_connector_helper_funcs = { |
387 | .get_modes = vidi_get_modes, | 387 | .get_modes = vidi_get_modes, |
388 | .best_encoder = vidi_best_encoder, | 388 | .best_encoder = vidi_best_encoder, |
389 | }; | 389 | }; |
@@ -431,14 +431,14 @@ static void exynos_vidi_disable(struct drm_encoder *encoder) | |||
431 | { | 431 | { |
432 | } | 432 | } |
433 | 433 | ||
434 | static struct drm_encoder_helper_funcs exynos_vidi_encoder_helper_funcs = { | 434 | static const struct drm_encoder_helper_funcs exynos_vidi_encoder_helper_funcs = { |
435 | .mode_fixup = exynos_vidi_mode_fixup, | 435 | .mode_fixup = exynos_vidi_mode_fixup, |
436 | .mode_set = exynos_vidi_mode_set, | 436 | .mode_set = exynos_vidi_mode_set, |
437 | .enable = exynos_vidi_enable, | 437 | .enable = exynos_vidi_enable, |
438 | .disable = exynos_vidi_disable, | 438 | .disable = exynos_vidi_disable, |
439 | }; | 439 | }; |
440 | 440 | ||
441 | static struct drm_encoder_funcs exynos_vidi_encoder_funcs = { | 441 | static const struct drm_encoder_funcs exynos_vidi_encoder_funcs = { |
442 | .destroy = drm_encoder_cleanup, | 442 | .destroy = drm_encoder_cleanup, |
443 | }; | 443 | }; |
444 | 444 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 7d5ca6ca4efe..21a29dbce18c 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c | |||
@@ -956,7 +956,7 @@ static void hdmi_connector_destroy(struct drm_connector *connector) | |||
956 | drm_connector_cleanup(connector); | 956 | drm_connector_cleanup(connector); |
957 | } | 957 | } |
958 | 958 | ||
959 | static struct drm_connector_funcs hdmi_connector_funcs = { | 959 | static const struct drm_connector_funcs hdmi_connector_funcs = { |
960 | .dpms = drm_atomic_helper_connector_dpms, | 960 | .dpms = drm_atomic_helper_connector_dpms, |
961 | .fill_modes = drm_helper_probe_single_connector_modes, | 961 | .fill_modes = drm_helper_probe_single_connector_modes, |
962 | .detect = hdmi_detect, | 962 | .detect = hdmi_detect, |
@@ -1030,7 +1030,7 @@ static struct drm_encoder *hdmi_best_encoder(struct drm_connector *connector) | |||
1030 | return &hdata->encoder; | 1030 | return &hdata->encoder; |
1031 | } | 1031 | } |
1032 | 1032 | ||
1033 | static struct drm_connector_helper_funcs hdmi_connector_helper_funcs = { | 1033 | static const struct drm_connector_helper_funcs hdmi_connector_helper_funcs = { |
1034 | .get_modes = hdmi_get_modes, | 1034 | .get_modes = hdmi_get_modes, |
1035 | .mode_valid = hdmi_mode_valid, | 1035 | .mode_valid = hdmi_mode_valid, |
1036 | .best_encoder = hdmi_best_encoder, | 1036 | .best_encoder = hdmi_best_encoder, |
@@ -1641,14 +1641,14 @@ static void hdmi_disable(struct drm_encoder *encoder) | |||
1641 | hdata->powered = false; | 1641 | hdata->powered = false; |
1642 | } | 1642 | } |
1643 | 1643 | ||
1644 | static struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs = { | 1644 | static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs = { |
1645 | .mode_fixup = hdmi_mode_fixup, | 1645 | .mode_fixup = hdmi_mode_fixup, |
1646 | .mode_set = hdmi_mode_set, | 1646 | .mode_set = hdmi_mode_set, |
1647 | .enable = hdmi_enable, | 1647 | .enable = hdmi_enable, |
1648 | .disable = hdmi_disable, | 1648 | .disable = hdmi_disable, |
1649 | }; | 1649 | }; |
1650 | 1650 | ||
1651 | static struct drm_encoder_funcs exynos_hdmi_encoder_funcs = { | 1651 | static const struct drm_encoder_funcs exynos_hdmi_encoder_funcs = { |
1652 | .destroy = drm_encoder_cleanup, | 1652 | .destroy = drm_encoder_cleanup, |
1653 | }; | 1653 | }; |
1654 | 1654 | ||
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c index 1930234ba5f1..fca97d3fc846 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | |||
@@ -363,7 +363,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev) | |||
363 | fsl_dev->np = dev->of_node; | 363 | fsl_dev->np = dev->of_node; |
364 | drm->dev_private = fsl_dev; | 364 | drm->dev_private = fsl_dev; |
365 | dev_set_drvdata(dev, fsl_dev); | 365 | dev_set_drvdata(dev, fsl_dev); |
366 | drm_dev_set_unique(drm, dev_name(dev)); | ||
367 | 366 | ||
368 | ret = drm_dev_register(drm, 0); | 367 | ret = drm_dev_register(drm, 0); |
369 | if (ret < 0) | 368 | if (ret < 0) |
diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c index 1a1acd3cb049..7cd87a0c2385 100644 --- a/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c +++ b/drivers/gpu/drm/gma500/mdfld_dsi_dpi.c | |||
@@ -821,14 +821,18 @@ void mdfld_dsi_dpi_mode_set(struct drm_encoder *encoder, | |||
821 | struct drm_device *dev = dsi_config->dev; | 821 | struct drm_device *dev = dsi_config->dev; |
822 | struct drm_psb_private *dev_priv = dev->dev_private; | 822 | struct drm_psb_private *dev_priv = dev->dev_private; |
823 | int pipe = mdfld_dsi_encoder_get_pipe(dsi_encoder); | 823 | int pipe = mdfld_dsi_encoder_get_pipe(dsi_encoder); |
824 | |||
825 | u32 pipeconf_reg = PIPEACONF; | 824 | u32 pipeconf_reg = PIPEACONF; |
826 | u32 dspcntr_reg = DSPACNTR; | 825 | u32 dspcntr_reg = DSPACNTR; |
826 | u32 pipeconf, dspcntr; | ||
827 | 827 | ||
828 | u32 pipeconf = dev_priv->pipeconf[pipe]; | ||
829 | u32 dspcntr = dev_priv->dspcntr[pipe]; | ||
830 | u32 mipi = MIPI_PORT_EN | PASS_FROM_SPHY_TO_AFE | SEL_FLOPPED_HSTX; | 828 | u32 mipi = MIPI_PORT_EN | PASS_FROM_SPHY_TO_AFE | SEL_FLOPPED_HSTX; |
831 | 829 | ||
830 | if (WARN_ON(pipe < 0)) | ||
831 | return; | ||
832 | |||
833 | pipeconf = dev_priv->pipeconf[pipe]; | ||
834 | dspcntr = dev_priv->dspcntr[pipe]; | ||
835 | |||
832 | if (pipe) { | 836 | if (pipe) { |
833 | pipeconf_reg = PIPECCONF; | 837 | pipeconf_reg = PIPECCONF; |
834 | dspcntr_reg = DSPCCNTR; | 838 | dspcntr_reg = DSPCCNTR; |
diff --git a/drivers/gpu/drm/i2c/adv7511.c b/drivers/gpu/drm/i2c/adv7511.c index 00416f23b5cb..533d1e3d4a99 100644 --- a/drivers/gpu/drm/i2c/adv7511.c +++ b/drivers/gpu/drm/i2c/adv7511.c | |||
@@ -752,7 +752,7 @@ static void adv7511_encoder_mode_set(struct drm_encoder *encoder, | |||
752 | adv7511->f_tmds = mode->clock; | 752 | adv7511->f_tmds = mode->clock; |
753 | } | 753 | } |
754 | 754 | ||
755 | static struct drm_encoder_slave_funcs adv7511_encoder_funcs = { | 755 | static const struct drm_encoder_slave_funcs adv7511_encoder_funcs = { |
756 | .dpms = adv7511_encoder_dpms, | 756 | .dpms = adv7511_encoder_dpms, |
757 | .mode_valid = adv7511_encoder_mode_valid, | 757 | .mode_valid = adv7511_encoder_mode_valid, |
758 | .mode_set = adv7511_encoder_mode_set, | 758 | .mode_set = adv7511_encoder_mode_set, |
diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c b/drivers/gpu/drm/i2c/ch7006_drv.c index d9a72c96e56c..90db5f4dcce5 100644 --- a/drivers/gpu/drm/i2c/ch7006_drv.c +++ b/drivers/gpu/drm/i2c/ch7006_drv.c | |||
@@ -371,7 +371,7 @@ static int ch7006_encoder_set_property(struct drm_encoder *encoder, | |||
371 | return 0; | 371 | return 0; |
372 | } | 372 | } |
373 | 373 | ||
374 | static struct drm_encoder_slave_funcs ch7006_encoder_funcs = { | 374 | static const struct drm_encoder_slave_funcs ch7006_encoder_funcs = { |
375 | .set_config = ch7006_encoder_set_config, | 375 | .set_config = ch7006_encoder_set_config, |
376 | .destroy = ch7006_encoder_destroy, | 376 | .destroy = ch7006_encoder_destroy, |
377 | .dpms = ch7006_encoder_dpms, | 377 | .dpms = ch7006_encoder_dpms, |
diff --git a/drivers/gpu/drm/i2c/sil164_drv.c b/drivers/gpu/drm/i2c/sil164_drv.c index 002ce7874332..c400428f6c8c 100644 --- a/drivers/gpu/drm/i2c/sil164_drv.c +++ b/drivers/gpu/drm/i2c/sil164_drv.c | |||
@@ -341,7 +341,7 @@ sil164_encoder_destroy(struct drm_encoder *encoder) | |||
341 | drm_i2c_encoder_destroy(encoder); | 341 | drm_i2c_encoder_destroy(encoder); |
342 | } | 342 | } |
343 | 343 | ||
344 | static struct drm_encoder_slave_funcs sil164_encoder_funcs = { | 344 | static const struct drm_encoder_slave_funcs sil164_encoder_funcs = { |
345 | .set_config = sil164_encoder_set_config, | 345 | .set_config = sil164_encoder_set_config, |
346 | .destroy = sil164_encoder_destroy, | 346 | .destroy = sil164_encoder_destroy, |
347 | .dpms = sil164_encoder_dpms, | 347 | .dpms = sil164_encoder_dpms, |
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 206b213a74e1..1dae5ac3e0b1 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
@@ -855,31 +855,31 @@ enum skl_disp_power_wells { | |||
855 | * | 855 | * |
856 | * Note: DDI0 is digital port B, DD1 is digital port C, and DDI2 is | 856 | * Note: DDI0 is digital port B, DD1 is digital port C, and DDI2 is |
857 | * digital port D (CHV) or port A (BXT). | 857 | * digital port D (CHV) or port A (BXT). |
858 | */ | ||
859 | /* | ||
860 | * Dual channel PHY (VLV/CHV/BXT) | ||
861 | * --------------------------------- | ||
862 | * | CH0 | CH1 | | ||
863 | * | CMN/PLL/REF | CMN/PLL/REF | | ||
864 | * |---------------|---------------| Display PHY | ||
865 | * | PCS01 | PCS23 | PCS01 | PCS23 | | ||
866 | * |-------|-------|-------|-------| | ||
867 | * |TX0|TX1|TX2|TX3|TX0|TX1|TX2|TX3| | ||
868 | * --------------------------------- | ||
869 | * | DDI0 | DDI1 | DP/HDMI ports | ||
870 | * --------------------------------- | ||
871 | * | 858 | * |
872 | * Single channel PHY (CHV/BXT) | 859 | * |
873 | * ----------------- | 860 | * Dual channel PHY (VLV/CHV/BXT) |
874 | * | CH0 | | 861 | * --------------------------------- |
875 | * | CMN/PLL/REF | | 862 | * | CH0 | CH1 | |
876 | * |---------------| Display PHY | 863 | * | CMN/PLL/REF | CMN/PLL/REF | |
877 | * | PCS01 | PCS23 | | 864 | * |---------------|---------------| Display PHY |
878 | * |-------|-------| | 865 | * | PCS01 | PCS23 | PCS01 | PCS23 | |
879 | * |TX0|TX1|TX2|TX3| | 866 | * |-------|-------|-------|-------| |
880 | * ----------------- | 867 | * |TX0|TX1|TX2|TX3|TX0|TX1|TX2|TX3| |
881 | * | DDI2 | DP/HDMI port | 868 | * --------------------------------- |
882 | * ----------------- | 869 | * | DDI0 | DDI1 | DP/HDMI ports |
870 | * --------------------------------- | ||
871 | * | ||
872 | * Single channel PHY (CHV/BXT) | ||
873 | * ----------------- | ||
874 | * | CH0 | | ||
875 | * | CMN/PLL/REF | | ||
876 | * |---------------| Display PHY | ||
877 | * | PCS01 | PCS23 | | ||
878 | * |-------|-------| | ||
879 | * |TX0|TX1|TX2|TX3| | ||
880 | * ----------------- | ||
881 | * | DDI2 | DP/HDMI port | ||
882 | * ----------------- | ||
883 | */ | 883 | */ |
884 | #define DPIO_DEVFN 0 | 884 | #define DPIO_DEVFN 0 |
885 | 885 | ||
diff --git a/drivers/gpu/drm/imx/dw_hdmi-imx.c b/drivers/gpu/drm/imx/dw_hdmi-imx.c index 35fcf6b84537..063825fecbe2 100644 --- a/drivers/gpu/drm/imx/dw_hdmi-imx.c +++ b/drivers/gpu/drm/imx/dw_hdmi-imx.c | |||
@@ -137,7 +137,7 @@ static void dw_hdmi_imx_encoder_prepare(struct drm_encoder *encoder) | |||
137 | imx_drm_set_bus_format(encoder, MEDIA_BUS_FMT_RGB888_1X24); | 137 | imx_drm_set_bus_format(encoder, MEDIA_BUS_FMT_RGB888_1X24); |
138 | } | 138 | } |
139 | 139 | ||
140 | static struct drm_encoder_helper_funcs dw_hdmi_imx_encoder_helper_funcs = { | 140 | static const struct drm_encoder_helper_funcs dw_hdmi_imx_encoder_helper_funcs = { |
141 | .mode_fixup = dw_hdmi_imx_encoder_mode_fixup, | 141 | .mode_fixup = dw_hdmi_imx_encoder_mode_fixup, |
142 | .mode_set = dw_hdmi_imx_encoder_mode_set, | 142 | .mode_set = dw_hdmi_imx_encoder_mode_set, |
143 | .prepare = dw_hdmi_imx_encoder_prepare, | 143 | .prepare = dw_hdmi_imx_encoder_prepare, |
@@ -145,7 +145,7 @@ static struct drm_encoder_helper_funcs dw_hdmi_imx_encoder_helper_funcs = { | |||
145 | .disable = dw_hdmi_imx_encoder_disable, | 145 | .disable = dw_hdmi_imx_encoder_disable, |
146 | }; | 146 | }; |
147 | 147 | ||
148 | static struct drm_encoder_funcs dw_hdmi_imx_encoder_funcs = { | 148 | static const struct drm_encoder_funcs dw_hdmi_imx_encoder_funcs = { |
149 | .destroy = drm_encoder_cleanup, | 149 | .destroy = drm_encoder_cleanup, |
150 | }; | 150 | }; |
151 | 151 | ||
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c index 09e20ea69419..7be7ac808304 100644 --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c | |||
@@ -39,13 +39,12 @@ struct imx_drm_component { | |||
39 | struct imx_drm_device { | 39 | struct imx_drm_device { |
40 | struct drm_device *drm; | 40 | struct drm_device *drm; |
41 | struct imx_drm_crtc *crtc[MAX_CRTC]; | 41 | struct imx_drm_crtc *crtc[MAX_CRTC]; |
42 | int pipes; | 42 | unsigned int pipes; |
43 | struct drm_fbdev_cma *fbhelper; | 43 | struct drm_fbdev_cma *fbhelper; |
44 | }; | 44 | }; |
45 | 45 | ||
46 | struct imx_drm_crtc { | 46 | struct imx_drm_crtc { |
47 | struct drm_crtc *crtc; | 47 | struct drm_crtc *crtc; |
48 | int pipe; | ||
49 | struct imx_drm_crtc_helper_funcs imx_drm_helper_funcs; | 48 | struct imx_drm_crtc_helper_funcs imx_drm_helper_funcs; |
50 | }; | 49 | }; |
51 | 50 | ||
@@ -54,9 +53,9 @@ static int legacyfb_depth = 16; | |||
54 | module_param(legacyfb_depth, int, 0444); | 53 | module_param(legacyfb_depth, int, 0444); |
55 | #endif | 54 | #endif |
56 | 55 | ||
57 | int imx_drm_crtc_id(struct imx_drm_crtc *crtc) | 56 | unsigned int imx_drm_crtc_id(struct imx_drm_crtc *crtc) |
58 | { | 57 | { |
59 | return crtc->pipe; | 58 | return drm_crtc_index(crtc->crtc); |
60 | } | 59 | } |
61 | EXPORT_SYMBOL_GPL(imx_drm_crtc_id); | 60 | EXPORT_SYMBOL_GPL(imx_drm_crtc_id); |
62 | 61 | ||
@@ -124,19 +123,19 @@ EXPORT_SYMBOL_GPL(imx_drm_set_bus_format); | |||
124 | 123 | ||
125 | int imx_drm_crtc_vblank_get(struct imx_drm_crtc *imx_drm_crtc) | 124 | int imx_drm_crtc_vblank_get(struct imx_drm_crtc *imx_drm_crtc) |
126 | { | 125 | { |
127 | return drm_vblank_get(imx_drm_crtc->crtc->dev, imx_drm_crtc->pipe); | 126 | return drm_crtc_vblank_get(imx_drm_crtc->crtc); |
128 | } | 127 | } |
129 | EXPORT_SYMBOL_GPL(imx_drm_crtc_vblank_get); | 128 | EXPORT_SYMBOL_GPL(imx_drm_crtc_vblank_get); |
130 | 129 | ||
131 | void imx_drm_crtc_vblank_put(struct imx_drm_crtc *imx_drm_crtc) | 130 | void imx_drm_crtc_vblank_put(struct imx_drm_crtc *imx_drm_crtc) |
132 | { | 131 | { |
133 | drm_vblank_put(imx_drm_crtc->crtc->dev, imx_drm_crtc->pipe); | 132 | drm_crtc_vblank_put(imx_drm_crtc->crtc); |
134 | } | 133 | } |
135 | EXPORT_SYMBOL_GPL(imx_drm_crtc_vblank_put); | 134 | EXPORT_SYMBOL_GPL(imx_drm_crtc_vblank_put); |
136 | 135 | ||
137 | void imx_drm_handle_vblank(struct imx_drm_crtc *imx_drm_crtc) | 136 | void imx_drm_handle_vblank(struct imx_drm_crtc *imx_drm_crtc) |
138 | { | 137 | { |
139 | drm_handle_vblank(imx_drm_crtc->crtc->dev, imx_drm_crtc->pipe); | 138 | drm_crtc_handle_vblank(imx_drm_crtc->crtc); |
140 | } | 139 | } |
141 | EXPORT_SYMBOL_GPL(imx_drm_handle_vblank); | 140 | EXPORT_SYMBOL_GPL(imx_drm_handle_vblank); |
142 | 141 | ||
@@ -215,7 +214,7 @@ static void imx_drm_output_poll_changed(struct drm_device *drm) | |||
215 | drm_fbdev_cma_hotplug_event(imxdrm->fbhelper); | 214 | drm_fbdev_cma_hotplug_event(imxdrm->fbhelper); |
216 | } | 215 | } |
217 | 216 | ||
218 | static struct drm_mode_config_funcs imx_drm_mode_config_funcs = { | 217 | static const struct drm_mode_config_funcs imx_drm_mode_config_funcs = { |
219 | .fb_create = drm_fb_cma_create, | 218 | .fb_create = drm_fb_cma_create, |
220 | .output_poll_changed = imx_drm_output_poll_changed, | 219 | .output_poll_changed = imx_drm_output_poll_changed, |
221 | }; | 220 | }; |
@@ -356,12 +355,11 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc, | |||
356 | return -ENOMEM; | 355 | return -ENOMEM; |
357 | 356 | ||
358 | imx_drm_crtc->imx_drm_helper_funcs = *imx_drm_helper_funcs; | 357 | imx_drm_crtc->imx_drm_helper_funcs = *imx_drm_helper_funcs; |
359 | imx_drm_crtc->pipe = imxdrm->pipes++; | ||
360 | imx_drm_crtc->crtc = crtc; | 358 | imx_drm_crtc->crtc = crtc; |
361 | 359 | ||
362 | crtc->port = port; | 360 | crtc->port = port; |
363 | 361 | ||
364 | imxdrm->crtc[imx_drm_crtc->pipe] = imx_drm_crtc; | 362 | imxdrm->crtc[imxdrm->pipes++] = imx_drm_crtc; |
365 | 363 | ||
366 | *new_crtc = imx_drm_crtc; | 364 | *new_crtc = imx_drm_crtc; |
367 | 365 | ||
@@ -378,7 +376,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc, | |||
378 | return 0; | 376 | return 0; |
379 | 377 | ||
380 | err_register: | 378 | err_register: |
381 | imxdrm->crtc[imx_drm_crtc->pipe] = NULL; | 379 | imxdrm->crtc[--imxdrm->pipes] = NULL; |
382 | kfree(imx_drm_crtc); | 380 | kfree(imx_drm_crtc); |
383 | return ret; | 381 | return ret; |
384 | } | 382 | } |
@@ -390,10 +388,11 @@ EXPORT_SYMBOL_GPL(imx_drm_add_crtc); | |||
390 | int imx_drm_remove_crtc(struct imx_drm_crtc *imx_drm_crtc) | 388 | int imx_drm_remove_crtc(struct imx_drm_crtc *imx_drm_crtc) |
391 | { | 389 | { |
392 | struct imx_drm_device *imxdrm = imx_drm_crtc->crtc->dev->dev_private; | 390 | struct imx_drm_device *imxdrm = imx_drm_crtc->crtc->dev->dev_private; |
391 | unsigned int pipe = drm_crtc_index(imx_drm_crtc->crtc); | ||
393 | 392 | ||
394 | drm_crtc_cleanup(imx_drm_crtc->crtc); | 393 | drm_crtc_cleanup(imx_drm_crtc->crtc); |
395 | 394 | ||
396 | imxdrm->crtc[imx_drm_crtc->pipe] = NULL; | 395 | imxdrm->crtc[pipe] = NULL; |
397 | 396 | ||
398 | kfree(imx_drm_crtc); | 397 | kfree(imx_drm_crtc); |
399 | 398 | ||
diff --git a/drivers/gpu/drm/imx/imx-drm.h b/drivers/gpu/drm/imx/imx-drm.h index 83284b4d4be1..71cf6d9c714f 100644 --- a/drivers/gpu/drm/imx/imx-drm.h +++ b/drivers/gpu/drm/imx/imx-drm.h | |||
@@ -13,7 +13,7 @@ struct drm_plane; | |||
13 | struct imx_drm_crtc; | 13 | struct imx_drm_crtc; |
14 | struct platform_device; | 14 | struct platform_device; |
15 | 15 | ||
16 | int imx_drm_crtc_id(struct imx_drm_crtc *crtc); | 16 | unsigned int imx_drm_crtc_id(struct imx_drm_crtc *crtc); |
17 | 17 | ||
18 | struct imx_drm_crtc_helper_funcs { | 18 | struct imx_drm_crtc_helper_funcs { |
19 | int (*enable_vblank)(struct drm_crtc *crtc); | 19 | int (*enable_vblank)(struct drm_crtc *crtc); |
diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c index c79a61b67ded..22ac482231ed 100644 --- a/drivers/gpu/drm/imx/imx-ldb.c +++ b/drivers/gpu/drm/imx/imx-ldb.c | |||
@@ -358,23 +358,23 @@ static void imx_ldb_encoder_disable(struct drm_encoder *encoder) | |||
358 | drm_panel_unprepare(imx_ldb_ch->panel); | 358 | drm_panel_unprepare(imx_ldb_ch->panel); |
359 | } | 359 | } |
360 | 360 | ||
361 | static struct drm_connector_funcs imx_ldb_connector_funcs = { | 361 | static const struct drm_connector_funcs imx_ldb_connector_funcs = { |
362 | .dpms = drm_helper_connector_dpms, | 362 | .dpms = drm_helper_connector_dpms, |
363 | .fill_modes = drm_helper_probe_single_connector_modes, | 363 | .fill_modes = drm_helper_probe_single_connector_modes, |
364 | .detect = imx_ldb_connector_detect, | 364 | .detect = imx_ldb_connector_detect, |
365 | .destroy = imx_drm_connector_destroy, | 365 | .destroy = imx_drm_connector_destroy, |
366 | }; | 366 | }; |
367 | 367 | ||
368 | static struct drm_connector_helper_funcs imx_ldb_connector_helper_funcs = { | 368 | static const struct drm_connector_helper_funcs imx_ldb_connector_helper_funcs = { |
369 | .get_modes = imx_ldb_connector_get_modes, | 369 | .get_modes = imx_ldb_connector_get_modes, |
370 | .best_encoder = imx_ldb_connector_best_encoder, | 370 | .best_encoder = imx_ldb_connector_best_encoder, |
371 | }; | 371 | }; |
372 | 372 | ||
373 | static struct drm_encoder_funcs imx_ldb_encoder_funcs = { | 373 | static const struct drm_encoder_funcs imx_ldb_encoder_funcs = { |
374 | .destroy = imx_drm_encoder_destroy, | 374 | .destroy = imx_drm_encoder_destroy, |
375 | }; | 375 | }; |
376 | 376 | ||
377 | static struct drm_encoder_helper_funcs imx_ldb_encoder_helper_funcs = { | 377 | static const struct drm_encoder_helper_funcs imx_ldb_encoder_helper_funcs = { |
378 | .dpms = imx_ldb_encoder_dpms, | 378 | .dpms = imx_ldb_encoder_dpms, |
379 | .mode_fixup = imx_ldb_encoder_mode_fixup, | 379 | .mode_fixup = imx_ldb_encoder_mode_fixup, |
380 | .prepare = imx_ldb_encoder_prepare, | 380 | .prepare = imx_ldb_encoder_prepare, |
diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c index e61a8fca77cd..292349f0b132 100644 --- a/drivers/gpu/drm/imx/imx-tve.c +++ b/drivers/gpu/drm/imx/imx-tve.c | |||
@@ -360,24 +360,24 @@ static void imx_tve_encoder_disable(struct drm_encoder *encoder) | |||
360 | tve_disable(tve); | 360 | tve_disable(tve); |
361 | } | 361 | } |
362 | 362 | ||
363 | static struct drm_connector_funcs imx_tve_connector_funcs = { | 363 | static const struct drm_connector_funcs imx_tve_connector_funcs = { |
364 | .dpms = drm_helper_connector_dpms, | 364 | .dpms = drm_helper_connector_dpms, |
365 | .fill_modes = drm_helper_probe_single_connector_modes, | 365 | .fill_modes = drm_helper_probe_single_connector_modes, |
366 | .detect = imx_tve_connector_detect, | 366 | .detect = imx_tve_connector_detect, |
367 | .destroy = imx_drm_connector_destroy, | 367 | .destroy = imx_drm_connector_destroy, |
368 | }; | 368 | }; |
369 | 369 | ||
370 | static struct drm_connector_helper_funcs imx_tve_connector_helper_funcs = { | 370 | static const struct drm_connector_helper_funcs imx_tve_connector_helper_funcs = { |
371 | .get_modes = imx_tve_connector_get_modes, | 371 | .get_modes = imx_tve_connector_get_modes, |
372 | .best_encoder = imx_tve_connector_best_encoder, | 372 | .best_encoder = imx_tve_connector_best_encoder, |
373 | .mode_valid = imx_tve_connector_mode_valid, | 373 | .mode_valid = imx_tve_connector_mode_valid, |
374 | }; | 374 | }; |
375 | 375 | ||
376 | static struct drm_encoder_funcs imx_tve_encoder_funcs = { | 376 | static const struct drm_encoder_funcs imx_tve_encoder_funcs = { |
377 | .destroy = imx_drm_encoder_destroy, | 377 | .destroy = imx_drm_encoder_destroy, |
378 | }; | 378 | }; |
379 | 379 | ||
380 | static struct drm_encoder_helper_funcs imx_tve_encoder_helper_funcs = { | 380 | static const struct drm_encoder_helper_funcs imx_tve_encoder_helper_funcs = { |
381 | .dpms = imx_tve_encoder_dpms, | 381 | .dpms = imx_tve_encoder_dpms, |
382 | .mode_fixup = imx_tve_encoder_mode_fixup, | 382 | .mode_fixup = imx_tve_encoder_mode_fixup, |
383 | .prepare = imx_tve_encoder_prepare, | 383 | .prepare = imx_tve_encoder_prepare, |
diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c index 4ab841eebee1..30a57185bdb4 100644 --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c | |||
@@ -270,7 +270,7 @@ static void ipu_crtc_commit(struct drm_crtc *crtc) | |||
270 | ipu_fb_enable(ipu_crtc); | 270 | ipu_fb_enable(ipu_crtc); |
271 | } | 271 | } |
272 | 272 | ||
273 | static struct drm_crtc_helper_funcs ipu_helper_funcs = { | 273 | static const struct drm_crtc_helper_funcs ipu_helper_funcs = { |
274 | .dpms = ipu_crtc_dpms, | 274 | .dpms = ipu_crtc_dpms, |
275 | .mode_fixup = ipu_crtc_mode_fixup, | 275 | .mode_fixup = ipu_crtc_mode_fixup, |
276 | .mode_set = ipu_crtc_mode_set, | 276 | .mode_set = ipu_crtc_mode_set, |
diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c index fcbe4d2eeabf..b74bf8e334f5 100644 --- a/drivers/gpu/drm/imx/parallel-display.c +++ b/drivers/gpu/drm/imx/parallel-display.c | |||
@@ -148,23 +148,23 @@ static void imx_pd_encoder_disable(struct drm_encoder *encoder) | |||
148 | drm_panel_unprepare(imxpd->panel); | 148 | drm_panel_unprepare(imxpd->panel); |
149 | } | 149 | } |
150 | 150 | ||
151 | static struct drm_connector_funcs imx_pd_connector_funcs = { | 151 | static const struct drm_connector_funcs imx_pd_connector_funcs = { |
152 | .dpms = drm_helper_connector_dpms, | 152 | .dpms = drm_helper_connector_dpms, |
153 | .fill_modes = drm_helper_probe_single_connector_modes, | 153 | .fill_modes = drm_helper_probe_single_connector_modes, |
154 | .detect = imx_pd_connector_detect, | 154 | .detect = imx_pd_connector_detect, |
155 | .destroy = imx_drm_connector_destroy, | 155 | .destroy = imx_drm_connector_destroy, |
156 | }; | 156 | }; |
157 | 157 | ||
158 | static struct drm_connector_helper_funcs imx_pd_connector_helper_funcs = { | 158 | static const struct drm_connector_helper_funcs imx_pd_connector_helper_funcs = { |
159 | .get_modes = imx_pd_connector_get_modes, | 159 | .get_modes = imx_pd_connector_get_modes, |
160 | .best_encoder = imx_pd_connector_best_encoder, | 160 | .best_encoder = imx_pd_connector_best_encoder, |
161 | }; | 161 | }; |
162 | 162 | ||
163 | static struct drm_encoder_funcs imx_pd_encoder_funcs = { | 163 | static const struct drm_encoder_funcs imx_pd_encoder_funcs = { |
164 | .destroy = imx_drm_encoder_destroy, | 164 | .destroy = imx_drm_encoder_destroy, |
165 | }; | 165 | }; |
166 | 166 | ||
167 | static struct drm_encoder_helper_funcs imx_pd_encoder_helper_funcs = { | 167 | static const struct drm_encoder_helper_funcs imx_pd_encoder_helper_funcs = { |
168 | .dpms = imx_pd_encoder_dpms, | 168 | .dpms = imx_pd_encoder_dpms, |
169 | .mode_fixup = imx_pd_encoder_mode_fixup, | 169 | .mode_fixup = imx_pd_encoder_mode_fixup, |
170 | .prepare = imx_pd_encoder_prepare, | 170 | .prepare = imx_pd_encoder_prepare, |
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c index 31802128dfbb..19c18b7af28a 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c | |||
@@ -1684,13 +1684,13 @@ static void mga_connector_destroy(struct drm_connector *connector) | |||
1684 | kfree(connector); | 1684 | kfree(connector); |
1685 | } | 1685 | } |
1686 | 1686 | ||
1687 | struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = { | 1687 | static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = { |
1688 | .get_modes = mga_vga_get_modes, | 1688 | .get_modes = mga_vga_get_modes, |
1689 | .mode_valid = mga_vga_mode_valid, | 1689 | .mode_valid = mga_vga_mode_valid, |
1690 | .best_encoder = mga_connector_best_encoder, | 1690 | .best_encoder = mga_connector_best_encoder, |
1691 | }; | 1691 | }; |
1692 | 1692 | ||
1693 | struct drm_connector_funcs mga_vga_connector_funcs = { | 1693 | static const struct drm_connector_funcs mga_vga_connector_funcs = { |
1694 | .dpms = drm_helper_connector_dpms, | 1694 | .dpms = drm_helper_connector_dpms, |
1695 | .detect = mga_vga_detect, | 1695 | .detect = mga_vga_detect, |
1696 | .fill_modes = drm_helper_probe_single_connector_modes, | 1696 | .fill_modes = drm_helper_probe_single_connector_modes, |
diff --git a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c index d9644c0c5a83..163317d26de9 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c +++ b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | |||
@@ -769,7 +769,7 @@ static void nv17_tv_destroy(struct drm_encoder *encoder) | |||
769 | kfree(tv_enc); | 769 | kfree(tv_enc); |
770 | } | 770 | } |
771 | 771 | ||
772 | static struct drm_encoder_helper_funcs nv17_tv_helper_funcs = { | 772 | static const struct drm_encoder_helper_funcs nv17_tv_helper_funcs = { |
773 | .dpms = nv17_tv_dpms, | 773 | .dpms = nv17_tv_dpms, |
774 | .mode_fixup = nv17_tv_mode_fixup, | 774 | .mode_fixup = nv17_tv_mode_fixup, |
775 | .prepare = nv17_tv_prepare, | 775 | .prepare = nv17_tv_prepare, |
@@ -778,14 +778,14 @@ static struct drm_encoder_helper_funcs nv17_tv_helper_funcs = { | |||
778 | .detect = nv17_tv_detect, | 778 | .detect = nv17_tv_detect, |
779 | }; | 779 | }; |
780 | 780 | ||
781 | static struct drm_encoder_slave_funcs nv17_tv_slave_funcs = { | 781 | static const struct drm_encoder_slave_funcs nv17_tv_slave_funcs = { |
782 | .get_modes = nv17_tv_get_modes, | 782 | .get_modes = nv17_tv_get_modes, |
783 | .mode_valid = nv17_tv_mode_valid, | 783 | .mode_valid = nv17_tv_mode_valid, |
784 | .create_resources = nv17_tv_create_resources, | 784 | .create_resources = nv17_tv_create_resources, |
785 | .set_property = nv17_tv_set_property, | 785 | .set_property = nv17_tv_set_property, |
786 | }; | 786 | }; |
787 | 787 | ||
788 | static struct drm_encoder_funcs nv17_tv_funcs = { | 788 | static const struct drm_encoder_funcs nv17_tv_funcs = { |
789 | .destroy = nv17_tv_destroy, | 789 | .destroy = nv17_tv_destroy, |
790 | }; | 790 | }; |
791 | 791 | ||
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 1d3ee5179ab8..b3a563c44bcd 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c | |||
@@ -1046,10 +1046,6 @@ nouveau_platform_device_create(const struct nvkm_device_tegra_func *func, | |||
1046 | goto err_free; | 1046 | goto err_free; |
1047 | } | 1047 | } |
1048 | 1048 | ||
1049 | err = drm_dev_set_unique(drm, "%s", dev_name(&pdev->dev)); | ||
1050 | if (err < 0) | ||
1051 | goto err_free; | ||
1052 | |||
1053 | drm->platformdev = pdev; | 1049 | drm->platformdev = pdev; |
1054 | platform_set_drvdata(pdev, drm); | 1050 | platform_set_drvdata(pdev, drm); |
1055 | 1051 | ||
diff --git a/drivers/gpu/drm/nouveau/nouveau_encoder.h b/drivers/gpu/drm/nouveau/nouveau_encoder.h index c38a86408363..ee6a6d3fc80f 100644 --- a/drivers/gpu/drm/nouveau/nouveau_encoder.h +++ b/drivers/gpu/drm/nouveau/nouveau_encoder.h | |||
@@ -83,7 +83,7 @@ static inline struct drm_encoder *to_drm_encoder(struct nouveau_encoder *enc) | |||
83 | return &enc->base.base; | 83 | return &enc->base.base; |
84 | } | 84 | } |
85 | 85 | ||
86 | static inline struct drm_encoder_slave_funcs * | 86 | static inline const struct drm_encoder_slave_funcs * |
87 | get_slave_funcs(struct drm_encoder *enc) | 87 | get_slave_funcs(struct drm_encoder *enc) |
88 | { | 88 | { |
89 | return to_encoder_slave(enc)->slave_funcs; | 89 | return to_encoder_slave(enc)->slave_funcs; |
diff --git a/drivers/gpu/drm/omapdrm/tcm-sita.c b/drivers/gpu/drm/omapdrm/tcm-sita.c index efb609510540..6df1f2a1bc52 100644 --- a/drivers/gpu/drm/omapdrm/tcm-sita.c +++ b/drivers/gpu/drm/omapdrm/tcm-sita.c | |||
@@ -87,14 +87,11 @@ struct tcm *sita_init(u16 width, u16 height, struct tcm_pt *attr) | |||
87 | if (width == 0 || height == 0) | 87 | if (width == 0 || height == 0) |
88 | return NULL; | 88 | return NULL; |
89 | 89 | ||
90 | tcm = kmalloc(sizeof(*tcm), GFP_KERNEL); | 90 | tcm = kzalloc(sizeof(*tcm), GFP_KERNEL); |
91 | pvt = kmalloc(sizeof(*pvt), GFP_KERNEL); | 91 | pvt = kzalloc(sizeof(*pvt), GFP_KERNEL); |
92 | if (!tcm || !pvt) | 92 | if (!tcm || !pvt) |
93 | goto error; | 93 | goto error; |
94 | 94 | ||
95 | memset(tcm, 0, sizeof(*tcm)); | ||
96 | memset(pvt, 0, sizeof(*pvt)); | ||
97 | |||
98 | /* Updating the pointers to SiTA implementation APIs */ | 95 | /* Updating the pointers to SiTA implementation APIs */ |
99 | tcm->height = height; | 96 | tcm->height = height; |
100 | tcm->width = width; | 97 | tcm->width = width; |
diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c index b28370e014c6..5e1d7899dd72 100644 --- a/drivers/gpu/drm/qxl/qxl_object.c +++ b/drivers/gpu/drm/qxl/qxl_object.c | |||
@@ -32,7 +32,7 @@ static void qxl_ttm_bo_destroy(struct ttm_buffer_object *tbo) | |||
32 | struct qxl_bo *bo; | 32 | struct qxl_bo *bo; |
33 | struct qxl_device *qdev; | 33 | struct qxl_device *qdev; |
34 | 34 | ||
35 | bo = container_of(tbo, struct qxl_bo, tbo); | 35 | bo = to_qxl_bo(tbo); |
36 | qdev = (struct qxl_device *)bo->gem_base.dev->dev_private; | 36 | qdev = (struct qxl_device *)bo->gem_base.dev->dev_private; |
37 | 37 | ||
38 | qxl_surface_evict(qdev, bo, false); | 38 | qxl_surface_evict(qdev, bo, false); |
diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c index 0cbc4c987164..953412766416 100644 --- a/drivers/gpu/drm/qxl/qxl_ttm.c +++ b/drivers/gpu/drm/qxl/qxl_ttm.c | |||
@@ -201,7 +201,7 @@ static void qxl_evict_flags(struct ttm_buffer_object *bo, | |||
201 | placement->num_busy_placement = 1; | 201 | placement->num_busy_placement = 1; |
202 | return; | 202 | return; |
203 | } | 203 | } |
204 | qbo = container_of(bo, struct qxl_bo, tbo); | 204 | qbo = to_qxl_bo(bo); |
205 | qxl_ttm_placement_from_domain(qbo, QXL_GEM_DOMAIN_CPU, false); | 205 | qxl_ttm_placement_from_domain(qbo, QXL_GEM_DOMAIN_CPU, false); |
206 | *placement = qbo->placement; | 206 | *placement = qbo->placement; |
207 | } | 207 | } |
@@ -365,7 +365,7 @@ static void qxl_bo_move_notify(struct ttm_buffer_object *bo, | |||
365 | 365 | ||
366 | if (!qxl_ttm_bo_is_qxl_bo(bo)) | 366 | if (!qxl_ttm_bo_is_qxl_bo(bo)) |
367 | return; | 367 | return; |
368 | qbo = container_of(bo, struct qxl_bo, tbo); | 368 | qbo = to_qxl_bo(bo); |
369 | qdev = qbo->gem_base.dev->dev_private; | 369 | qdev = qbo->gem_base.dev->dev_private; |
370 | 370 | ||
371 | if (bo->mem.mem_type == TTM_PL_PRIV0 && qbo->surface_id) | 371 | if (bo->mem.mem_type == TTM_PL_PRIV0 && qbo->surface_id) |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_hdmicon.c b/drivers/gpu/drm/rcar-du/rcar_du_hdmicon.c index 96f2eb43713c..a37b6e2fe51a 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_hdmicon.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_hdmicon.c | |||
@@ -28,7 +28,7 @@ static int rcar_du_hdmi_connector_get_modes(struct drm_connector *connector) | |||
28 | { | 28 | { |
29 | struct rcar_du_connector *con = to_rcar_connector(connector); | 29 | struct rcar_du_connector *con = to_rcar_connector(connector); |
30 | struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder); | 30 | struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder); |
31 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 31 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
32 | 32 | ||
33 | if (sfuncs->get_modes == NULL) | 33 | if (sfuncs->get_modes == NULL) |
34 | return 0; | 34 | return 0; |
@@ -41,7 +41,7 @@ static int rcar_du_hdmi_connector_mode_valid(struct drm_connector *connector, | |||
41 | { | 41 | { |
42 | struct rcar_du_connector *con = to_rcar_connector(connector); | 42 | struct rcar_du_connector *con = to_rcar_connector(connector); |
43 | struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder); | 43 | struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder); |
44 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 44 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
45 | 45 | ||
46 | if (sfuncs->mode_valid == NULL) | 46 | if (sfuncs->mode_valid == NULL) |
47 | return MODE_OK; | 47 | return MODE_OK; |
@@ -66,7 +66,7 @@ rcar_du_hdmi_connector_detect(struct drm_connector *connector, bool force) | |||
66 | { | 66 | { |
67 | struct rcar_du_connector *con = to_rcar_connector(connector); | 67 | struct rcar_du_connector *con = to_rcar_connector(connector); |
68 | struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder); | 68 | struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder); |
69 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 69 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
70 | 70 | ||
71 | if (sfuncs->detect == NULL) | 71 | if (sfuncs->detect == NULL) |
72 | return connector_status_unknown; | 72 | return connector_status_unknown; |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c b/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c index 11267de26a51..2567efcbee36 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c | |||
@@ -35,7 +35,7 @@ struct rcar_du_hdmienc { | |||
35 | static void rcar_du_hdmienc_disable(struct drm_encoder *encoder) | 35 | static void rcar_du_hdmienc_disable(struct drm_encoder *encoder) |
36 | { | 36 | { |
37 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); | 37 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); |
38 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 38 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
39 | 39 | ||
40 | if (sfuncs->dpms) | 40 | if (sfuncs->dpms) |
41 | sfuncs->dpms(encoder, DRM_MODE_DPMS_OFF); | 41 | sfuncs->dpms(encoder, DRM_MODE_DPMS_OFF); |
@@ -50,7 +50,7 @@ static void rcar_du_hdmienc_disable(struct drm_encoder *encoder) | |||
50 | static void rcar_du_hdmienc_enable(struct drm_encoder *encoder) | 50 | static void rcar_du_hdmienc_enable(struct drm_encoder *encoder) |
51 | { | 51 | { |
52 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); | 52 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); |
53 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 53 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
54 | 54 | ||
55 | if (hdmienc->renc->lvds) | 55 | if (hdmienc->renc->lvds) |
56 | rcar_du_lvdsenc_enable(hdmienc->renc->lvds, encoder->crtc, | 56 | rcar_du_lvdsenc_enable(hdmienc->renc->lvds, encoder->crtc, |
@@ -67,7 +67,7 @@ static int rcar_du_hdmienc_atomic_check(struct drm_encoder *encoder, | |||
67 | struct drm_connector_state *conn_state) | 67 | struct drm_connector_state *conn_state) |
68 | { | 68 | { |
69 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); | 69 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); |
70 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 70 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
71 | struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; | 71 | struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; |
72 | const struct drm_display_mode *mode = &crtc_state->mode; | 72 | const struct drm_display_mode *mode = &crtc_state->mode; |
73 | 73 | ||
@@ -89,7 +89,7 @@ static void rcar_du_hdmienc_mode_set(struct drm_encoder *encoder, | |||
89 | struct drm_display_mode *adjusted_mode) | 89 | struct drm_display_mode *adjusted_mode) |
90 | { | 90 | { |
91 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); | 91 | struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder); |
92 | struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); | 92 | const struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder); |
93 | 93 | ||
94 | if (sfuncs->mode_set) | 94 | if (sfuncs->mode_set) |
95 | sfuncs->mode_set(encoder, mode, adjusted_mode); | 95 | sfuncs->mode_set(encoder, mode, adjusted_mode); |
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 525b5a81e96e..bddcabd7a370 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | |||
@@ -173,7 +173,7 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector, | |||
173 | return (valid) ? MODE_OK : MODE_BAD; | 173 | return (valid) ? MODE_OK : MODE_BAD; |
174 | } | 174 | } |
175 | 175 | ||
176 | static struct drm_encoder_funcs dw_hdmi_rockchip_encoder_funcs = { | 176 | static const struct drm_encoder_funcs dw_hdmi_rockchip_encoder_funcs = { |
177 | .destroy = drm_encoder_cleanup, | 177 | .destroy = drm_encoder_cleanup, |
178 | }; | 178 | }; |
179 | 179 | ||
@@ -218,7 +218,7 @@ static void dw_hdmi_rockchip_encoder_prepare(struct drm_encoder *encoder) | |||
218 | ROCKCHIP_OUT_MODE_AAAA); | 218 | ROCKCHIP_OUT_MODE_AAAA); |
219 | } | 219 | } |
220 | 220 | ||
221 | static struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_helper_funcs = { | 221 | static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_helper_funcs = { |
222 | .mode_fixup = dw_hdmi_rockchip_encoder_mode_fixup, | 222 | .mode_fixup = dw_hdmi_rockchip_encoder_mode_fixup, |
223 | .mode_set = dw_hdmi_rockchip_encoder_mode_set, | 223 | .mode_set = dw_hdmi_rockchip_encoder_mode_set, |
224 | .prepare = dw_hdmi_rockchip_encoder_prepare, | 224 | .prepare = dw_hdmi_rockchip_encoder_prepare, |
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index f22e1e1ee64a..afbb7407c44f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c | |||
@@ -450,10 +450,6 @@ static int rockchip_drm_bind(struct device *dev) | |||
450 | if (!drm) | 450 | if (!drm) |
451 | return -ENOMEM; | 451 | return -ENOMEM; |
452 | 452 | ||
453 | ret = drm_dev_set_unique(drm, "%s", dev_name(dev)); | ||
454 | if (ret) | ||
455 | goto err_free; | ||
456 | |||
457 | ret = drm_dev_register(drm, 0); | 453 | ret = drm_dev_register(drm, 0); |
458 | if (ret) | 454 | if (ret) |
459 | goto err_free; | 455 | goto err_free; |
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c index b8ac5911c102..621f25c463bd 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c | |||
@@ -66,7 +66,7 @@ static int rockchip_drm_fb_create_handle(struct drm_framebuffer *fb, | |||
66 | rockchip_fb->obj[0], handle); | 66 | rockchip_fb->obj[0], handle); |
67 | } | 67 | } |
68 | 68 | ||
69 | static struct drm_framebuffer_funcs rockchip_drm_fb_funcs = { | 69 | static const struct drm_framebuffer_funcs rockchip_drm_fb_funcs = { |
70 | .destroy = rockchip_drm_fb_destroy, | 70 | .destroy = rockchip_drm_fb_destroy, |
71 | .create_handle = rockchip_drm_fb_create_handle, | 71 | .create_handle = rockchip_drm_fb_create_handle, |
72 | }; | 72 | }; |
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 50d7160c667b..c5c856a0879d 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c | |||
@@ -990,7 +990,6 @@ static int host1x_drm_probe(struct host1x_device *dev) | |||
990 | if (!drm) | 990 | if (!drm) |
991 | return -ENOMEM; | 991 | return -ENOMEM; |
992 | 992 | ||
993 | drm_dev_set_unique(drm, dev_name(&dev->dev)); | ||
994 | dev_set_drvdata(&dev->dev, drm); | 993 | dev_set_drvdata(&dev->dev, drm); |
995 | 994 | ||
996 | err = drm_dev_register(drm, 0); | 995 | err = drm_dev_register(drm, 0); |
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index a7213f30fb20..ca84de9ccb51 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c | |||
@@ -88,7 +88,7 @@ static int tegra_fb_create_handle(struct drm_framebuffer *framebuffer, | |||
88 | return drm_gem_handle_create(file, &fb->planes[0]->gem, handle); | 88 | return drm_gem_handle_create(file, &fb->planes[0]->gem, handle); |
89 | } | 89 | } |
90 | 90 | ||
91 | static struct drm_framebuffer_funcs tegra_fb_funcs = { | 91 | static const struct drm_framebuffer_funcs tegra_fb_funcs = { |
92 | .destroy = tegra_fb_destroy, | 92 | .destroy = tegra_fb_destroy, |
93 | .create_handle = tegra_fb_create_handle, | 93 | .create_handle = tegra_fb_create_handle, |
94 | }; | 94 | }; |
diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c index 0110d95522f3..4709b54c204c 100644 --- a/drivers/gpu/drm/udl/udl_connector.c +++ b/drivers/gpu/drm/udl/udl_connector.c | |||
@@ -122,13 +122,13 @@ static void udl_connector_destroy(struct drm_connector *connector) | |||
122 | kfree(connector); | 122 | kfree(connector); |
123 | } | 123 | } |
124 | 124 | ||
125 | static struct drm_connector_helper_funcs udl_connector_helper_funcs = { | 125 | static const struct drm_connector_helper_funcs udl_connector_helper_funcs = { |
126 | .get_modes = udl_get_modes, | 126 | .get_modes = udl_get_modes, |
127 | .mode_valid = udl_mode_valid, | 127 | .mode_valid = udl_mode_valid, |
128 | .best_encoder = udl_best_single_encoder, | 128 | .best_encoder = udl_best_single_encoder, |
129 | }; | 129 | }; |
130 | 130 | ||
131 | static struct drm_connector_funcs udl_connector_funcs = { | 131 | static const struct drm_connector_funcs udl_connector_funcs = { |
132 | .dpms = drm_helper_connector_dpms, | 132 | .dpms = drm_helper_connector_dpms, |
133 | .detect = udl_detect, | 133 | .detect = udl_detect, |
134 | .fill_modes = drm_helper_probe_single_connector_modes, | 134 | .fill_modes = drm_helper_probe_single_connector_modes, |
diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c index 677190a65e82..160ef2a08b89 100644 --- a/drivers/gpu/drm/udl/udl_modeset.c +++ b/drivers/gpu/drm/udl/udl_modeset.c | |||
@@ -400,7 +400,7 @@ static void udl_crtc_commit(struct drm_crtc *crtc) | |||
400 | udl_crtc_dpms(crtc, DRM_MODE_DPMS_ON); | 400 | udl_crtc_dpms(crtc, DRM_MODE_DPMS_ON); |
401 | } | 401 | } |
402 | 402 | ||
403 | static struct drm_crtc_helper_funcs udl_helper_funcs = { | 403 | static const struct drm_crtc_helper_funcs udl_helper_funcs = { |
404 | .dpms = udl_crtc_dpms, | 404 | .dpms = udl_crtc_dpms, |
405 | .mode_fixup = udl_crtc_mode_fixup, | 405 | .mode_fixup = udl_crtc_mode_fixup, |
406 | .mode_set = udl_crtc_mode_set, | 406 | .mode_set = udl_crtc_mode_set, |
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c index cbcbbb83500e..f1655fff8425 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c | |||
@@ -184,8 +184,6 @@ static int vc4_drm_bind(struct device *dev) | |||
184 | vc4->dev = drm; | 184 | vc4->dev = drm; |
185 | drm->dev_private = vc4; | 185 | drm->dev_private = vc4; |
186 | 186 | ||
187 | drm_dev_set_unique(drm, dev_name(dev)); | ||
188 | |||
189 | vc4_bo_cache_init(drm); | 187 | vc4_bo_cache_init(drm); |
190 | 188 | ||
191 | drm_mode_config_init(drm); | 189 | drm_mode_config_init(drm); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 9394c3535e85..162f188969a7 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | |||
@@ -470,7 +470,7 @@ int vmw_kms_readback(struct vmw_private *dev_priv, | |||
470 | } | 470 | } |
471 | 471 | ||
472 | 472 | ||
473 | static struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = { | 473 | static const struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = { |
474 | .destroy = vmw_framebuffer_surface_destroy, | 474 | .destroy = vmw_framebuffer_surface_destroy, |
475 | .dirty = vmw_framebuffer_surface_dirty, | 475 | .dirty = vmw_framebuffer_surface_dirty, |
476 | }; | 476 | }; |
@@ -647,7 +647,7 @@ static int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, | |||
647 | return ret; | 647 | return ret; |
648 | } | 648 | } |
649 | 649 | ||
650 | static struct drm_framebuffer_funcs vmw_framebuffer_dmabuf_funcs = { | 650 | static const struct drm_framebuffer_funcs vmw_framebuffer_dmabuf_funcs = { |
651 | .destroy = vmw_framebuffer_dmabuf_destroy, | 651 | .destroy = vmw_framebuffer_dmabuf_destroy, |
652 | .dirty = vmw_framebuffer_dmabuf_dirty, | 652 | .dirty = vmw_framebuffer_dmabuf_dirty, |
653 | }; | 653 | }; |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c index 2aff5e51d926..2def684e61a4 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | |||
@@ -294,7 +294,7 @@ static int vmw_ldu_crtc_set_config(struct drm_mode_set *set) | |||
294 | return vmw_ldu_commit_list(dev_priv); | 294 | return vmw_ldu_commit_list(dev_priv); |
295 | } | 295 | } |
296 | 296 | ||
297 | static struct drm_crtc_funcs vmw_legacy_crtc_funcs = { | 297 | static const struct drm_crtc_funcs vmw_legacy_crtc_funcs = { |
298 | .cursor_set = vmw_du_crtc_cursor_set, | 298 | .cursor_set = vmw_du_crtc_cursor_set, |
299 | .cursor_move = vmw_du_crtc_cursor_move, | 299 | .cursor_move = vmw_du_crtc_cursor_move, |
300 | .gamma_set = vmw_du_crtc_gamma_set, | 300 | .gamma_set = vmw_du_crtc_gamma_set, |
@@ -312,7 +312,7 @@ static void vmw_ldu_encoder_destroy(struct drm_encoder *encoder) | |||
312 | vmw_ldu_destroy(vmw_encoder_to_ldu(encoder)); | 312 | vmw_ldu_destroy(vmw_encoder_to_ldu(encoder)); |
313 | } | 313 | } |
314 | 314 | ||
315 | static struct drm_encoder_funcs vmw_legacy_encoder_funcs = { | 315 | static const struct drm_encoder_funcs vmw_legacy_encoder_funcs = { |
316 | .destroy = vmw_ldu_encoder_destroy, | 316 | .destroy = vmw_ldu_encoder_destroy, |
317 | }; | 317 | }; |
318 | 318 | ||
@@ -325,7 +325,7 @@ static void vmw_ldu_connector_destroy(struct drm_connector *connector) | |||
325 | vmw_ldu_destroy(vmw_connector_to_ldu(connector)); | 325 | vmw_ldu_destroy(vmw_connector_to_ldu(connector)); |
326 | } | 326 | } |
327 | 327 | ||
328 | static struct drm_connector_funcs vmw_legacy_connector_funcs = { | 328 | static const struct drm_connector_funcs vmw_legacy_connector_funcs = { |
329 | .dpms = vmw_du_connector_dpms, | 329 | .dpms = vmw_du_connector_dpms, |
330 | .detect = vmw_du_connector_detect, | 330 | .detect = vmw_du_connector_detect, |
331 | .fill_modes = vmw_du_connector_fill_modes, | 331 | .fill_modes = vmw_du_connector_fill_modes, |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c index 6bb7af37934a..ecac70af032a 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | |||
@@ -530,7 +530,7 @@ out_no_fence: | |||
530 | return ret; | 530 | return ret; |
531 | } | 531 | } |
532 | 532 | ||
533 | static struct drm_crtc_funcs vmw_screen_object_crtc_funcs = { | 533 | static const struct drm_crtc_funcs vmw_screen_object_crtc_funcs = { |
534 | .cursor_set = vmw_du_crtc_cursor_set, | 534 | .cursor_set = vmw_du_crtc_cursor_set, |
535 | .cursor_move = vmw_du_crtc_cursor_move, | 535 | .cursor_move = vmw_du_crtc_cursor_move, |
536 | .gamma_set = vmw_du_crtc_gamma_set, | 536 | .gamma_set = vmw_du_crtc_gamma_set, |
@@ -548,7 +548,7 @@ static void vmw_sou_encoder_destroy(struct drm_encoder *encoder) | |||
548 | vmw_sou_destroy(vmw_encoder_to_sou(encoder)); | 548 | vmw_sou_destroy(vmw_encoder_to_sou(encoder)); |
549 | } | 549 | } |
550 | 550 | ||
551 | static struct drm_encoder_funcs vmw_screen_object_encoder_funcs = { | 551 | static const struct drm_encoder_funcs vmw_screen_object_encoder_funcs = { |
552 | .destroy = vmw_sou_encoder_destroy, | 552 | .destroy = vmw_sou_encoder_destroy, |
553 | }; | 553 | }; |
554 | 554 | ||
@@ -561,7 +561,7 @@ static void vmw_sou_connector_destroy(struct drm_connector *connector) | |||
561 | vmw_sou_destroy(vmw_connector_to_sou(connector)); | 561 | vmw_sou_destroy(vmw_connector_to_sou(connector)); |
562 | } | 562 | } |
563 | 563 | ||
564 | static struct drm_connector_funcs vmw_sou_connector_funcs = { | 564 | static const struct drm_connector_funcs vmw_sou_connector_funcs = { |
565 | .dpms = vmw_du_connector_dpms, | 565 | .dpms = vmw_du_connector_dpms, |
566 | .set_property = vmw_du_connector_set_property, | 566 | .set_property = vmw_du_connector_set_property, |
567 | .destroy = vmw_sou_connector_destroy, | 567 | .destroy = vmw_sou_connector_destroy, |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c index 45e72c2f15cd..87fc00af8d28 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | |||
@@ -1040,7 +1040,7 @@ out_finish: | |||
1040 | /* | 1040 | /* |
1041 | * Screen Target CRTC dispatch table | 1041 | * Screen Target CRTC dispatch table |
1042 | */ | 1042 | */ |
1043 | static struct drm_crtc_funcs vmw_stdu_crtc_funcs = { | 1043 | static const struct drm_crtc_funcs vmw_stdu_crtc_funcs = { |
1044 | .cursor_set = vmw_du_crtc_cursor_set, | 1044 | .cursor_set = vmw_du_crtc_cursor_set, |
1045 | .cursor_move = vmw_du_crtc_cursor_move, | 1045 | .cursor_move = vmw_du_crtc_cursor_move, |
1046 | .gamma_set = vmw_du_crtc_gamma_set, | 1046 | .gamma_set = vmw_du_crtc_gamma_set, |
@@ -1070,7 +1070,7 @@ static void vmw_stdu_encoder_destroy(struct drm_encoder *encoder) | |||
1070 | vmw_stdu_destroy(vmw_encoder_to_stdu(encoder)); | 1070 | vmw_stdu_destroy(vmw_encoder_to_stdu(encoder)); |
1071 | } | 1071 | } |
1072 | 1072 | ||
1073 | static struct drm_encoder_funcs vmw_stdu_encoder_funcs = { | 1073 | static const struct drm_encoder_funcs vmw_stdu_encoder_funcs = { |
1074 | .destroy = vmw_stdu_encoder_destroy, | 1074 | .destroy = vmw_stdu_encoder_destroy, |
1075 | }; | 1075 | }; |
1076 | 1076 | ||
@@ -1097,7 +1097,7 @@ static void vmw_stdu_connector_destroy(struct drm_connector *connector) | |||
1097 | 1097 | ||
1098 | 1098 | ||
1099 | 1099 | ||
1100 | static struct drm_connector_funcs vmw_stdu_connector_funcs = { | 1100 | static const struct drm_connector_funcs vmw_stdu_connector_funcs = { |
1101 | .dpms = vmw_du_connector_dpms, | 1101 | .dpms = vmw_du_connector_dpms, |
1102 | .detect = vmw_du_connector_detect, | 1102 | .detect = vmw_du_connector_detect, |
1103 | .fill_modes = vmw_du_connector_fill_modes, | 1103 | .fill_modes = vmw_du_connector_fill_modes, |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c index 7d620e82e000..c2a721a8cef9 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | |||
@@ -771,7 +771,7 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, | |||
771 | } | 771 | } |
772 | srf->offsets = kmalloc(srf->num_sizes * sizeof(*srf->offsets), | 772 | srf->offsets = kmalloc(srf->num_sizes * sizeof(*srf->offsets), |
773 | GFP_KERNEL); | 773 | GFP_KERNEL); |
774 | if (unlikely(srf->sizes == NULL)) { | 774 | if (unlikely(srf->offsets == NULL)) { |
775 | ret = -ENOMEM; | 775 | ret = -ENOMEM; |
776 | goto out_no_offsets; | 776 | goto out_no_offsets; |
777 | } | 777 | } |
@@ -815,11 +815,8 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, | |||
815 | srf->sizes[0].height == 64 && | 815 | srf->sizes[0].height == 64 && |
816 | srf->format == SVGA3D_A8R8G8B8) { | 816 | srf->format == SVGA3D_A8R8G8B8) { |
817 | 817 | ||
818 | srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL); | 818 | srf->snooper.image = kzalloc(64 * 64 * 4, GFP_KERNEL); |
819 | /* clear the image */ | 819 | if (!srf->snooper.image) { |
820 | if (srf->snooper.image) { | ||
821 | memset(srf->snooper.image, 0x00, 64 * 64 * 4); | ||
822 | } else { | ||
823 | DRM_ERROR("Failed to allocate cursor_image\n"); | 820 | DRM_ERROR("Failed to allocate cursor_image\n"); |
824 | ret = -ENOMEM; | 821 | ret = -ENOMEM; |
825 | goto out_no_copy; | 822 | goto out_no_copy; |
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 5531d7bbe851..04caa8f8a52f 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -1068,7 +1068,7 @@ void drm_dev_ref(struct drm_device *dev); | |||
1068 | void drm_dev_unref(struct drm_device *dev); | 1068 | void drm_dev_unref(struct drm_device *dev); |
1069 | int drm_dev_register(struct drm_device *dev, unsigned long flags); | 1069 | int drm_dev_register(struct drm_device *dev, unsigned long flags); |
1070 | void drm_dev_unregister(struct drm_device *dev); | 1070 | void drm_dev_unregister(struct drm_device *dev); |
1071 | int drm_dev_set_unique(struct drm_device *dev, const char *fmt, ...); | 1071 | int drm_dev_set_unique(struct drm_device *dev, const char *name); |
1072 | 1072 | ||
1073 | struct drm_minor *drm_minor_acquire(unsigned int minor_id); | 1073 | struct drm_minor *drm_minor_acquire(unsigned int minor_id); |
1074 | void drm_minor_release(struct drm_minor *minor); | 1074 | void drm_minor_release(struct drm_minor *minor); |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index c2f98ba2bb98..3b040b355472 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -172,7 +172,9 @@ struct drm_framebuffer_funcs { | |||
172 | * Clean up framebuffer resources, specifically also unreference the | 172 | * Clean up framebuffer resources, specifically also unreference the |
173 | * backing storage. The core guarantees to call this function for every | 173 | * backing storage. The core guarantees to call this function for every |
174 | * framebuffer successfully created by ->fb_create() in | 174 | * framebuffer successfully created by ->fb_create() in |
175 | * &drm_mode_config_funcs. | 175 | * &drm_mode_config_funcs. Drivers must also call |
176 | * drm_framebuffer_cleanup() to release DRM core resources for this | ||
177 | * framebuffer. | ||
176 | */ | 178 | */ |
177 | void (*destroy)(struct drm_framebuffer *framebuffer); | 179 | void (*destroy)(struct drm_framebuffer *framebuffer); |
178 | 180 | ||
@@ -187,6 +189,9 @@ struct drm_framebuffer_funcs { | |||
187 | * copying the current screen contents to a private buffer and blending | 189 | * copying the current screen contents to a private buffer and blending |
188 | * between that and the new contents. | 190 | * between that and the new contents. |
189 | * | 191 | * |
192 | * GEM based drivers should call drm_gem_handle_create() to create the | ||
193 | * handle. | ||
194 | * | ||
190 | * RETURNS: | 195 | * RETURNS: |
191 | * | 196 | * |
192 | * 0 on success or a negative error code on failure. | 197 | * 0 on success or a negative error code on failure. |
@@ -1731,6 +1736,17 @@ struct drm_mode_config_funcs { | |||
1731 | * requested metadata, but most of that is left to the driver. See | 1736 | * requested metadata, but most of that is left to the driver. See |
1732 | * struct &drm_mode_fb_cmd2 for details. | 1737 | * struct &drm_mode_fb_cmd2 for details. |
1733 | * | 1738 | * |
1739 | * If the parameters are deemed valid and the backing storage objects in | ||
1740 | * the underlying memory manager all exist, then the driver allocates | ||
1741 | * a new &drm_framebuffer structure, subclassed to contain | ||
1742 | * driver-specific information (like the internal native buffer object | ||
1743 | * references). It also needs to fill out all relevant metadata, which | ||
1744 | * should be done by calling drm_helper_mode_fill_fb_struct(). | ||
1745 | * | ||
1746 | * The initialization is finalized by calling drm_framebuffer_init(), | ||
1747 | * which registers the framebuffer and makes it accessible to other | ||
1748 | * threads. | ||
1749 | * | ||
1734 | * RETURNS: | 1750 | * RETURNS: |
1735 | * | 1751 | * |
1736 | * A new framebuffer with an initial reference count of 1 or a negative | 1752 | * A new framebuffer with an initial reference count of 1 or a negative |
diff --git a/include/drm/drm_encoder_slave.h b/include/drm/drm_encoder_slave.h index 8b9cc3671858..82cdf611393d 100644 --- a/include/drm/drm_encoder_slave.h +++ b/include/drm/drm_encoder_slave.h | |||
@@ -95,7 +95,7 @@ struct drm_encoder_slave_funcs { | |||
95 | struct drm_encoder_slave { | 95 | struct drm_encoder_slave { |
96 | struct drm_encoder base; | 96 | struct drm_encoder base; |
97 | 97 | ||
98 | struct drm_encoder_slave_funcs *slave_funcs; | 98 | const struct drm_encoder_slave_funcs *slave_funcs; |
99 | void *slave_priv; | 99 | void *slave_priv; |
100 | void *bus_priv; | 100 | void *bus_priv; |
101 | }; | 101 | }; |