All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c
@ 2022-03-17  9:25 Patrik Jakobsson
  2022-03-17 19:47 ` Thomas Zimmermann
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Patrik Jakobsson @ 2022-03-17  9:25 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, sam, tzimmermann

All functions live in gma_display.c already so move the vtable. Also
shorten the name to gma_crtc_funcs.

Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
---
 drivers/gpu/drm/gma500/cdv_device.c        |  2 +-
 drivers/gpu/drm/gma500/gma_display.c       | 12 ++++++++++++
 drivers/gpu/drm/gma500/gma_display.h       | 10 ++--------
 drivers/gpu/drm/gma500/oaktrail_device.c   |  2 +-
 drivers/gpu/drm/gma500/psb_device.c        |  2 +-
 drivers/gpu/drm/gma500/psb_drv.h           |  2 --
 drivers/gpu/drm/gma500/psb_intel_display.c | 12 ------------
 7 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c
index d7c6cca23e94..887c157d75f4 100644
--- a/drivers/gpu/drm/gma500/cdv_device.c
+++ b/drivers/gpu/drm/gma500/cdv_device.c
@@ -603,7 +603,7 @@ const struct psb_ops cdv_chip_ops = {
 	.errata = cdv_errata,
 
 	.crtc_helper = &cdv_intel_helper_funcs,
-	.crtc_funcs = &gma_intel_crtc_funcs,
+	.crtc_funcs = &gma_crtc_funcs,
 	.clock_funcs = &cdv_clock_funcs,
 
 	.output_init = cdv_output_init,
diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index dd801404cf99..931ffb192fc4 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -565,6 +565,18 @@ int gma_crtc_set_config(struct drm_mode_set *set,
 	return ret;
 }
 
+const struct drm_crtc_funcs gma_crtc_funcs = {
+	.cursor_set = gma_crtc_cursor_set,
+	.cursor_move = gma_crtc_cursor_move,
+	.gamma_set = gma_crtc_gamma_set,
+	.set_config = gma_crtc_set_config,
+	.destroy = gma_crtc_destroy,
+	.page_flip = gma_crtc_page_flip,
+	.enable_vblank = psb_enable_vblank,
+	.disable_vblank = psb_disable_vblank,
+	.get_vblank_counter = psb_get_vblank_counter,
+};
+
 /*
  * Save HW states of given crtc
  */
diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h
index 7bd6c1ee8b21..113cf048105e 100644
--- a/drivers/gpu/drm/gma500/gma_display.h
+++ b/drivers/gpu/drm/gma500/gma_display.h
@@ -58,15 +58,7 @@ extern bool gma_pipe_has_type(struct drm_crtc *crtc, int type);
 extern void gma_wait_for_vblank(struct drm_device *dev);
 extern int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 			     struct drm_framebuffer *old_fb);
-extern int gma_crtc_cursor_set(struct drm_crtc *crtc,
-			       struct drm_file *file_priv,
-			       uint32_t handle,
-			       uint32_t width, uint32_t height);
-extern int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y);
 extern void gma_crtc_load_lut(struct drm_crtc *crtc);
-extern int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-			      u16 *blue, u32 size,
-			      struct drm_modeset_acquire_ctx *ctx);
 extern void gma_crtc_dpms(struct drm_crtc *crtc, int mode);
 extern void gma_crtc_prepare(struct drm_crtc *crtc);
 extern void gma_crtc_commit(struct drm_crtc *crtc);
@@ -83,6 +75,8 @@ extern int gma_crtc_set_config(struct drm_mode_set *set,
 extern void gma_crtc_save(struct drm_crtc *crtc);
 extern void gma_crtc_restore(struct drm_crtc *crtc);
 
+extern const struct drm_crtc_funcs gma_crtc_funcs;
+
 extern void gma_encoder_prepare(struct drm_encoder *encoder);
 extern void gma_encoder_commit(struct drm_encoder *encoder);
 extern void gma_encoder_destroy(struct drm_encoder *encoder);
diff --git a/drivers/gpu/drm/gma500/oaktrail_device.c b/drivers/gpu/drm/gma500/oaktrail_device.c
index 5c75eae630b5..40f1bc736125 100644
--- a/drivers/gpu/drm/gma500/oaktrail_device.c
+++ b/drivers/gpu/drm/gma500/oaktrail_device.c
@@ -545,7 +545,7 @@ const struct psb_ops oaktrail_chip_ops = {
 	.chip_setup = oaktrail_chip_setup,
 	.chip_teardown = oaktrail_teardown,
 	.crtc_helper = &oaktrail_helper_funcs,
-	.crtc_funcs = &gma_intel_crtc_funcs,
+	.crtc_funcs = &gma_crtc_funcs,
 
 	.output_init = oaktrail_output_init,
 
diff --git a/drivers/gpu/drm/gma500/psb_device.c b/drivers/gpu/drm/gma500/psb_device.c
index 3030f18ba022..e93e4191c0ca 100644
--- a/drivers/gpu/drm/gma500/psb_device.c
+++ b/drivers/gpu/drm/gma500/psb_device.c
@@ -329,7 +329,7 @@ const struct psb_ops psb_chip_ops = {
 	.chip_teardown = psb_chip_teardown,
 
 	.crtc_helper = &psb_intel_helper_funcs,
-	.crtc_funcs = &gma_intel_crtc_funcs,
+	.crtc_funcs = &gma_crtc_funcs,
 	.clock_funcs = &psb_clock_funcs,
 
 	.output_init = psb_output_init,
diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
index 66f61909a8c8..88f44dbbc4eb 100644
--- a/drivers/gpu/drm/gma500/psb_drv.h
+++ b/drivers/gpu/drm/gma500/psb_drv.h
@@ -13,7 +13,6 @@
 
 #include <drm/drm_device.h>
 
-#include "gma_display.h"
 #include "gtt.h"
 #include "intel_bios.h"
 #include "mmu.h"
@@ -647,7 +646,6 @@ extern void oaktrail_lvds_init(struct drm_device *dev,
 
 /* psb_intel_display.c */
 extern const struct drm_crtc_helper_funcs psb_intel_helper_funcs;
-extern const struct drm_crtc_funcs gma_intel_crtc_funcs;
 
 /* psb_intel_lvds.c */
 extern const struct drm_connector_helper_funcs
diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
index d5f95212934e..6df62fe7c1e0 100644
--- a/drivers/gpu/drm/gma500/psb_intel_display.c
+++ b/drivers/gpu/drm/gma500/psb_intel_display.c
@@ -427,18 +427,6 @@ const struct drm_crtc_helper_funcs psb_intel_helper_funcs = {
 	.disable = gma_crtc_disable,
 };
 
-const struct drm_crtc_funcs gma_intel_crtc_funcs = {
-	.cursor_set = gma_crtc_cursor_set,
-	.cursor_move = gma_crtc_cursor_move,
-	.gamma_set = gma_crtc_gamma_set,
-	.set_config = gma_crtc_set_config,
-	.destroy = gma_crtc_destroy,
-	.page_flip = gma_crtc_page_flip,
-	.enable_vblank = psb_enable_vblank,
-	.disable_vblank = psb_disable_vblank,
-	.get_vblank_counter = psb_get_vblank_counter,
-};
-
 const struct gma_clock_funcs psb_clock_funcs = {
 	.clock = psb_intel_clock,
 	.limit = psb_intel_limit,
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c
  2022-03-17  9:25 [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c Patrik Jakobsson
@ 2022-03-17 19:47 ` Thomas Zimmermann
  2022-03-17 22:40 ` kernel test robot
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2022-03-17 19:47 UTC (permalink / raw)
  To: Patrik Jakobsson, dri-devel; +Cc: daniel.vetter, sam


[-- Attachment #1.1: Type: text/plain, Size: 6674 bytes --]



Am 17.03.22 um 10:25 schrieb Patrik Jakobsson:
> All functions live in gma_display.c already so move the vtable. Also
> shorten the name to gma_crtc_funcs.
> 
> Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>   drivers/gpu/drm/gma500/cdv_device.c        |  2 +-
>   drivers/gpu/drm/gma500/gma_display.c       | 12 ++++++++++++
>   drivers/gpu/drm/gma500/gma_display.h       | 10 ++--------
>   drivers/gpu/drm/gma500/oaktrail_device.c   |  2 +-
>   drivers/gpu/drm/gma500/psb_device.c        |  2 +-
>   drivers/gpu/drm/gma500/psb_drv.h           |  2 --
>   drivers/gpu/drm/gma500/psb_intel_display.c | 12 ------------
>   7 files changed, 17 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c
> index d7c6cca23e94..887c157d75f4 100644
> --- a/drivers/gpu/drm/gma500/cdv_device.c
> +++ b/drivers/gpu/drm/gma500/cdv_device.c
> @@ -603,7 +603,7 @@ const struct psb_ops cdv_chip_ops = {
>   	.errata = cdv_errata,
>   
>   	.crtc_helper = &cdv_intel_helper_funcs,
> -	.crtc_funcs = &gma_intel_crtc_funcs,
> +	.crtc_funcs = &gma_crtc_funcs,
>   	.clock_funcs = &cdv_clock_funcs,
>   
>   	.output_init = cdv_output_init,
> diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
> index dd801404cf99..931ffb192fc4 100644
> --- a/drivers/gpu/drm/gma500/gma_display.c
> +++ b/drivers/gpu/drm/gma500/gma_display.c
> @@ -565,6 +565,18 @@ int gma_crtc_set_config(struct drm_mode_set *set,
>   	return ret;
>   }
>   
> +const struct drm_crtc_funcs gma_crtc_funcs = {
> +	.cursor_set = gma_crtc_cursor_set,
> +	.cursor_move = gma_crtc_cursor_move,
> +	.gamma_set = gma_crtc_gamma_set,
> +	.set_config = gma_crtc_set_config,
> +	.destroy = gma_crtc_destroy,
> +	.page_flip = gma_crtc_page_flip,
> +	.enable_vblank = psb_enable_vblank,
> +	.disable_vblank = psb_disable_vblank,
> +	.get_vblank_counter = psb_get_vblank_counter,
> +};
> +
>   /*
>    * Save HW states of given crtc
>    */
> diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h
> index 7bd6c1ee8b21..113cf048105e 100644
> --- a/drivers/gpu/drm/gma500/gma_display.h
> +++ b/drivers/gpu/drm/gma500/gma_display.h
> @@ -58,15 +58,7 @@ extern bool gma_pipe_has_type(struct drm_crtc *crtc, int type);
>   extern void gma_wait_for_vblank(struct drm_device *dev);
>   extern int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>   			     struct drm_framebuffer *old_fb);
> -extern int gma_crtc_cursor_set(struct drm_crtc *crtc,
> -			       struct drm_file *file_priv,
> -			       uint32_t handle,
> -			       uint32_t width, uint32_t height);
> -extern int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y);
>   extern void gma_crtc_load_lut(struct drm_crtc *crtc);
> -extern int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
> -			      u16 *blue, u32 size,
> -			      struct drm_modeset_acquire_ctx *ctx);
>   extern void gma_crtc_dpms(struct drm_crtc *crtc, int mode);
>   extern void gma_crtc_prepare(struct drm_crtc *crtc);
>   extern void gma_crtc_commit(struct drm_crtc *crtc);
> @@ -83,6 +75,8 @@ extern int gma_crtc_set_config(struct drm_mode_set *set,
>   extern void gma_crtc_save(struct drm_crtc *crtc);
>   extern void gma_crtc_restore(struct drm_crtc *crtc);
>   
> +extern const struct drm_crtc_funcs gma_crtc_funcs;
> +
>   extern void gma_encoder_prepare(struct drm_encoder *encoder);
>   extern void gma_encoder_commit(struct drm_encoder *encoder);
>   extern void gma_encoder_destroy(struct drm_encoder *encoder);
> diff --git a/drivers/gpu/drm/gma500/oaktrail_device.c b/drivers/gpu/drm/gma500/oaktrail_device.c
> index 5c75eae630b5..40f1bc736125 100644
> --- a/drivers/gpu/drm/gma500/oaktrail_device.c
> +++ b/drivers/gpu/drm/gma500/oaktrail_device.c
> @@ -545,7 +545,7 @@ const struct psb_ops oaktrail_chip_ops = {
>   	.chip_setup = oaktrail_chip_setup,
>   	.chip_teardown = oaktrail_teardown,
>   	.crtc_helper = &oaktrail_helper_funcs,
> -	.crtc_funcs = &gma_intel_crtc_funcs,
> +	.crtc_funcs = &gma_crtc_funcs,
>   
>   	.output_init = oaktrail_output_init,
>   
> diff --git a/drivers/gpu/drm/gma500/psb_device.c b/drivers/gpu/drm/gma500/psb_device.c
> index 3030f18ba022..e93e4191c0ca 100644
> --- a/drivers/gpu/drm/gma500/psb_device.c
> +++ b/drivers/gpu/drm/gma500/psb_device.c
> @@ -329,7 +329,7 @@ const struct psb_ops psb_chip_ops = {
>   	.chip_teardown = psb_chip_teardown,
>   
>   	.crtc_helper = &psb_intel_helper_funcs,
> -	.crtc_funcs = &gma_intel_crtc_funcs,
> +	.crtc_funcs = &gma_crtc_funcs,
>   	.clock_funcs = &psb_clock_funcs,
>   
>   	.output_init = psb_output_init,
> diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
> index 66f61909a8c8..88f44dbbc4eb 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.h
> +++ b/drivers/gpu/drm/gma500/psb_drv.h
> @@ -13,7 +13,6 @@
>   
>   #include <drm/drm_device.h>
>   
> -#include "gma_display.h"
>   #include "gtt.h"
>   #include "intel_bios.h"
>   #include "mmu.h"
> @@ -647,7 +646,6 @@ extern void oaktrail_lvds_init(struct drm_device *dev,
>   
>   /* psb_intel_display.c */
>   extern const struct drm_crtc_helper_funcs psb_intel_helper_funcs;
> -extern const struct drm_crtc_funcs gma_intel_crtc_funcs;
>   
>   /* psb_intel_lvds.c */
>   extern const struct drm_connector_helper_funcs
> diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
> index d5f95212934e..6df62fe7c1e0 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_display.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_display.c
> @@ -427,18 +427,6 @@ const struct drm_crtc_helper_funcs psb_intel_helper_funcs = {
>   	.disable = gma_crtc_disable,
>   };
>   
> -const struct drm_crtc_funcs gma_intel_crtc_funcs = {
> -	.cursor_set = gma_crtc_cursor_set,
> -	.cursor_move = gma_crtc_cursor_move,
> -	.gamma_set = gma_crtc_gamma_set,
> -	.set_config = gma_crtc_set_config,
> -	.destroy = gma_crtc_destroy,
> -	.page_flip = gma_crtc_page_flip,
> -	.enable_vblank = psb_enable_vblank,
> -	.disable_vblank = psb_disable_vblank,
> -	.get_vblank_counter = psb_get_vblank_counter,
> -};
> -
>   const struct gma_clock_funcs psb_clock_funcs = {
>   	.clock = psb_intel_clock,
>   	.limit = psb_intel_limit,

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c
  2022-03-17  9:25 [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c Patrik Jakobsson
  2022-03-17 19:47 ` Thomas Zimmermann
@ 2022-03-17 22:40 ` kernel test robot
  2022-03-17 23:52   ` kernel test robot
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-03-17 22:40 UTC (permalink / raw)
  To: Patrik Jakobsson, dri-devel; +Cc: daniel.vetter, kbuild-all, tzimmermann, sam

Hi Patrik,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm/drm-next]
[also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317]
[cannot apply to airlied/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
base:   git://anongit.freedesktop.org/drm/drm drm-next
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20220318/202203180653.zAs8yXub-lkp@intel.com/config)
compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
        git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/

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

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/gma500/gma_display.c:175:5: warning: no previous prototype for 'gma_crtc_gamma_set' [-Wmissing-prototypes]
     175 | int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
         |     ^~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/gma500/gma_display.c:322:5: warning: no previous prototype for 'gma_crtc_cursor_set' [-Wmissing-prototypes]
     322 | int gma_crtc_cursor_set(struct drm_crtc *crtc,
         |     ^~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/gma500/gma_display.c:440:5: warning: no previous prototype for 'gma_crtc_cursor_move' [-Wmissing-prototypes]
     440 | int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
         |     ^~~~~~~~~~~~~~~~~~~~


vim +/gma_crtc_gamma_set +175 drivers/gpu/drm/gma500/gma_display.c

2eff0b3359c097 Patrik Jakobsson  2013-07-05  174  
7ea7728387820a Maarten Lankhorst 2016-06-07 @175  int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
6d124ff845334b Daniel Vetter     2017-04-03  176  		       u32 size,
6d124ff845334b Daniel Vetter     2017-04-03  177  		       struct drm_modeset_acquire_ctx *ctx)
2eff0b3359c097 Patrik Jakobsson  2013-07-05  178  {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  179  	gma_crtc_load_lut(crtc);
7ea7728387820a Maarten Lankhorst 2016-06-07  180  
7ea7728387820a Maarten Lankhorst 2016-06-07  181  	return 0;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  182  }
2eff0b3359c097 Patrik Jakobsson  2013-07-05  183  
98daaba0a7c36d Lee Jones         2021-01-15  184  /*
2eff0b3359c097 Patrik Jakobsson  2013-07-05  185   * Sets the power management mode of the pipe and plane.
2eff0b3359c097 Patrik Jakobsson  2013-07-05  186   *
2eff0b3359c097 Patrik Jakobsson  2013-07-05  187   * This code should probably grow support for turning the cursor off and back
2eff0b3359c097 Patrik Jakobsson  2013-07-05  188   * on appropriately at the same time as we're turning the pipe off/on.
2eff0b3359c097 Patrik Jakobsson  2013-07-05  189   */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  190  void gma_crtc_dpms(struct drm_crtc *crtc, int mode)
2eff0b3359c097 Patrik Jakobsson  2013-07-05  191  {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  192  	struct drm_device *dev = crtc->dev;
f71635e893c383 Thomas Zimmermann 2021-09-20  193  	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
6306865daf0283 Patrik Jakobsson  2013-07-22  194  	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
6306865daf0283 Patrik Jakobsson  2013-07-22  195  	int pipe = gma_crtc->pipe;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  196  	const struct psb_offset *map = &dev_priv->regmap[pipe];
2eff0b3359c097 Patrik Jakobsson  2013-07-05  197  	u32 temp;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  198  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  199  	/* XXX: When our outputs are all unaware of DPMS modes other than off
2eff0b3359c097 Patrik Jakobsson  2013-07-05  200  	 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC.
2eff0b3359c097 Patrik Jakobsson  2013-07-05  201  	 */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  202  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  203  	if (IS_CDV(dev))
75346fe9bc4c9b Patrik Jakobsson  2013-08-15  204  		dev_priv->ops->disable_sr(dev);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  205  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  206  	switch (mode) {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  207  	case DRM_MODE_DPMS_ON:
2eff0b3359c097 Patrik Jakobsson  2013-07-05  208  	case DRM_MODE_DPMS_STANDBY:
2eff0b3359c097 Patrik Jakobsson  2013-07-05  209  	case DRM_MODE_DPMS_SUSPEND:
6306865daf0283 Patrik Jakobsson  2013-07-22  210  		if (gma_crtc->active)
2eff0b3359c097 Patrik Jakobsson  2013-07-05  211  			break;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  212  
6306865daf0283 Patrik Jakobsson  2013-07-22  213  		gma_crtc->active = true;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  214  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  215  		/* Enable the DPLL */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  216  		temp = REG_READ(map->dpll);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  217  		if ((temp & DPLL_VCO_ENABLE) == 0) {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  218  			REG_WRITE(map->dpll, temp);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  219  			REG_READ(map->dpll);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  220  			/* Wait for the clocks to stabilize. */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  221  			udelay(150);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  222  			REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  223  			REG_READ(map->dpll);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  224  			/* Wait for the clocks to stabilize. */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  225  			udelay(150);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  226  			REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  227  			REG_READ(map->dpll);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  228  			/* Wait for the clocks to stabilize. */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  229  			udelay(150);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  230  		}
2eff0b3359c097 Patrik Jakobsson  2013-07-05  231  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  232  		/* Enable the plane */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  233  		temp = REG_READ(map->cntr);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  234  		if ((temp & DISPLAY_PLANE_ENABLE) == 0) {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  235  			REG_WRITE(map->cntr,
2eff0b3359c097 Patrik Jakobsson  2013-07-05  236  				  temp | DISPLAY_PLANE_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  237  			/* Flush the plane changes */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  238  			REG_WRITE(map->base, REG_READ(map->base));
2eff0b3359c097 Patrik Jakobsson  2013-07-05  239  		}
2eff0b3359c097 Patrik Jakobsson  2013-07-05  240  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  241  		udelay(150);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  242  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  243  		/* Enable the pipe */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  244  		temp = REG_READ(map->conf);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  245  		if ((temp & PIPEACONF_ENABLE) == 0)
2eff0b3359c097 Patrik Jakobsson  2013-07-05  246  			REG_WRITE(map->conf, temp | PIPEACONF_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  247  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  248  		temp = REG_READ(map->status);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  249  		temp &= ~(0xFFFF);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  250  		temp |= PIPE_FIFO_UNDERRUN;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  251  		REG_WRITE(map->status, temp);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  252  		REG_READ(map->status);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  253  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  254  		gma_crtc_load_lut(crtc);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  255  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  256  		/* Give the overlay scaler a chance to enable
2eff0b3359c097 Patrik Jakobsson  2013-07-05  257  		 * if it's on this pipe */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  258  		/* psb_intel_crtc_dpms_video(crtc, true); TODO */
b20e9afb38d0b7 Paul Kocialkowski 2019-11-06  259  
b20e9afb38d0b7 Paul Kocialkowski 2019-11-06  260  		drm_crtc_vblank_on(crtc);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  261  		break;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  262  	case DRM_MODE_DPMS_OFF:
6306865daf0283 Patrik Jakobsson  2013-07-22  263  		if (!gma_crtc->active)
2eff0b3359c097 Patrik Jakobsson  2013-07-05  264  			break;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  265  
6306865daf0283 Patrik Jakobsson  2013-07-22  266  		gma_crtc->active = false;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  267  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  268  		/* Give the overlay scaler a chance to disable
2eff0b3359c097 Patrik Jakobsson  2013-07-05  269  		 * if it's on this pipe */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  270  		/* psb_intel_crtc_dpms_video(crtc, FALSE); TODO */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  271  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  272  		/* Disable the VGA plane that we never use */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  273  		REG_WRITE(VGACNTRL, VGA_DISP_DISABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  274  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  275  		/* Turn off vblank interrupts */
c02726ffea2df0 Gustavo Padovan   2016-06-07  276  		drm_crtc_vblank_off(crtc);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  277  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  278  		/* Wait for vblank for the disable to take effect */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  279  		gma_wait_for_vblank(dev);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  280  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  281  		/* Disable plane */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  282  		temp = REG_READ(map->cntr);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  283  		if ((temp & DISPLAY_PLANE_ENABLE) != 0) {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  284  			REG_WRITE(map->cntr,
2eff0b3359c097 Patrik Jakobsson  2013-07-05  285  				  temp & ~DISPLAY_PLANE_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  286  			/* Flush the plane changes */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  287  			REG_WRITE(map->base, REG_READ(map->base));
2eff0b3359c097 Patrik Jakobsson  2013-07-05  288  			REG_READ(map->base);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  289  		}
2eff0b3359c097 Patrik Jakobsson  2013-07-05  290  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  291  		/* Disable pipe */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  292  		temp = REG_READ(map->conf);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  293  		if ((temp & PIPEACONF_ENABLE) != 0) {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  294  			REG_WRITE(map->conf, temp & ~PIPEACONF_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  295  			REG_READ(map->conf);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  296  		}
2eff0b3359c097 Patrik Jakobsson  2013-07-05  297  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  298  		/* Wait for vblank for the disable to take effect. */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  299  		gma_wait_for_vblank(dev);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  300  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  301  		udelay(150);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  302  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  303  		/* Disable DPLL */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  304  		temp = REG_READ(map->dpll);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  305  		if ((temp & DPLL_VCO_ENABLE) != 0) {
2eff0b3359c097 Patrik Jakobsson  2013-07-05  306  			REG_WRITE(map->dpll, temp & ~DPLL_VCO_ENABLE);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  307  			REG_READ(map->dpll);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  308  		}
2eff0b3359c097 Patrik Jakobsson  2013-07-05  309  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  310  		/* Wait for the clocks to turn off. */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  311  		udelay(150);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  312  		break;
2eff0b3359c097 Patrik Jakobsson  2013-07-05  313  	}
2eff0b3359c097 Patrik Jakobsson  2013-07-05  314  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  315  	if (IS_CDV(dev))
28a8194c12f8c8 Patrik Jakobsson  2013-08-14  316  		dev_priv->ops->update_wm(dev, crtc);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  317  
2eff0b3359c097 Patrik Jakobsson  2013-07-05  318  	/* Set FIFO watermarks */
2eff0b3359c097 Patrik Jakobsson  2013-07-05  319  	REG_WRITE(DSPARB, 0x3F3E);
2eff0b3359c097 Patrik Jakobsson  2013-07-05  320  }
2eff0b3359c097 Patrik Jakobsson  2013-07-05  321  
38945be630a584 Patrik Jakobsson  2013-07-10 @322  int gma_crtc_cursor_set(struct drm_crtc *crtc,
38945be630a584 Patrik Jakobsson  2013-07-10  323  			struct drm_file *file_priv,
38945be630a584 Patrik Jakobsson  2013-07-10  324  			uint32_t handle,
38945be630a584 Patrik Jakobsson  2013-07-10  325  			uint32_t width, uint32_t height)
38945be630a584 Patrik Jakobsson  2013-07-10  326  {
38945be630a584 Patrik Jakobsson  2013-07-10  327  	struct drm_device *dev = crtc->dev;
f71635e893c383 Thomas Zimmermann 2021-09-20  328  	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
6306865daf0283 Patrik Jakobsson  2013-07-22  329  	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
6306865daf0283 Patrik Jakobsson  2013-07-22  330  	int pipe = gma_crtc->pipe;
38945be630a584 Patrik Jakobsson  2013-07-10  331  	uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR;
38945be630a584 Patrik Jakobsson  2013-07-10  332  	uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
38945be630a584 Patrik Jakobsson  2013-07-10  333  	uint32_t temp;
38945be630a584 Patrik Jakobsson  2013-07-10  334  	size_t addr = 0;
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  335  	struct psb_gem_object *pobj;
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  336  	struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj;
38945be630a584 Patrik Jakobsson  2013-07-10  337  	struct drm_gem_object *obj;
8b250cd3b5da18 Ira Weiny         2022-01-23  338  	void *tmp_dst;
38945be630a584 Patrik Jakobsson  2013-07-10  339  	int ret = 0, i, cursor_pages;
38945be630a584 Patrik Jakobsson  2013-07-10  340  
38945be630a584 Patrik Jakobsson  2013-07-10  341  	/* If we didn't get a handle then turn the cursor off */
38945be630a584 Patrik Jakobsson  2013-07-10  342  	if (!handle) {
38945be630a584 Patrik Jakobsson  2013-07-10  343  		temp = CURSOR_MODE_DISABLE;
38945be630a584 Patrik Jakobsson  2013-07-10  344  		if (gma_power_begin(dev, false)) {
38945be630a584 Patrik Jakobsson  2013-07-10  345  			REG_WRITE(control, temp);
38945be630a584 Patrik Jakobsson  2013-07-10  346  			REG_WRITE(base, 0);
38945be630a584 Patrik Jakobsson  2013-07-10  347  			gma_power_end(dev);
38945be630a584 Patrik Jakobsson  2013-07-10  348  		}
38945be630a584 Patrik Jakobsson  2013-07-10  349  
38945be630a584 Patrik Jakobsson  2013-07-10  350  		/* Unpin the old GEM object */
6306865daf0283 Patrik Jakobsson  2013-07-22  351  		if (gma_crtc->cursor_obj) {
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  352  			pobj = to_psb_gem_object(gma_crtc->cursor_obj);
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  353  			psb_gem_unpin(pobj);
e19baf704a4b51 Emil Velikov      2020-05-15  354  			drm_gem_object_put(gma_crtc->cursor_obj);
6306865daf0283 Patrik Jakobsson  2013-07-22  355  			gma_crtc->cursor_obj = NULL;
38945be630a584 Patrik Jakobsson  2013-07-10  356  		}
38945be630a584 Patrik Jakobsson  2013-07-10  357  		return 0;
38945be630a584 Patrik Jakobsson  2013-07-10  358  	}
38945be630a584 Patrik Jakobsson  2013-07-10  359  
38945be630a584 Patrik Jakobsson  2013-07-10  360  	/* Currently we only support 64x64 cursors */
38945be630a584 Patrik Jakobsson  2013-07-10  361  	if (width != 64 || height != 64) {
38945be630a584 Patrik Jakobsson  2013-07-10  362  		dev_dbg(dev->dev, "We currently only support 64x64 cursors\n");
38945be630a584 Patrik Jakobsson  2013-07-10  363  		return -EINVAL;
38945be630a584 Patrik Jakobsson  2013-07-10  364  	}
38945be630a584 Patrik Jakobsson  2013-07-10  365  
a8ad0bd84f9860 Chris Wilson      2016-05-09  366  	obj = drm_gem_object_lookup(file_priv, handle);
631794b44bd3db Patrik Jakobsson  2014-01-08  367  	if (!obj) {
631794b44bd3db Patrik Jakobsson  2014-01-08  368  		ret = -ENOENT;
631794b44bd3db Patrik Jakobsson  2014-01-08  369  		goto unlock;
631794b44bd3db Patrik Jakobsson  2014-01-08  370  	}
38945be630a584 Patrik Jakobsson  2013-07-10  371  
38945be630a584 Patrik Jakobsson  2013-07-10  372  	if (obj->size < width * height * 4) {
38945be630a584 Patrik Jakobsson  2013-07-10  373  		dev_dbg(dev->dev, "Buffer is too small\n");
38945be630a584 Patrik Jakobsson  2013-07-10  374  		ret = -ENOMEM;
38945be630a584 Patrik Jakobsson  2013-07-10  375  		goto unref_cursor;
38945be630a584 Patrik Jakobsson  2013-07-10  376  	}
38945be630a584 Patrik Jakobsson  2013-07-10  377  
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  378  	pobj = to_psb_gem_object(obj);
38945be630a584 Patrik Jakobsson  2013-07-10  379  
38945be630a584 Patrik Jakobsson  2013-07-10  380  	/* Pin the memory into the GTT */
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  381  	ret = psb_gem_pin(pobj);
38945be630a584 Patrik Jakobsson  2013-07-10  382  	if (ret) {
38945be630a584 Patrik Jakobsson  2013-07-10  383  		dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle);
38945be630a584 Patrik Jakobsson  2013-07-10  384  		goto unref_cursor;
38945be630a584 Patrik Jakobsson  2013-07-10  385  	}
38945be630a584 Patrik Jakobsson  2013-07-10  386  
38945be630a584 Patrik Jakobsson  2013-07-10  387  	if (dev_priv->ops->cursor_needs_phys) {
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  388  		if (!cursor_pobj) {
38945be630a584 Patrik Jakobsson  2013-07-10  389  			dev_err(dev->dev, "No hardware cursor mem available");
38945be630a584 Patrik Jakobsson  2013-07-10  390  			ret = -ENOMEM;
38945be630a584 Patrik Jakobsson  2013-07-10  391  			goto unref_cursor;
38945be630a584 Patrik Jakobsson  2013-07-10  392  		}
38945be630a584 Patrik Jakobsson  2013-07-10  393  
38945be630a584 Patrik Jakobsson  2013-07-10  394  		/* Prevent overflow */
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  395  		if (pobj->npage > 4)
38945be630a584 Patrik Jakobsson  2013-07-10  396  			cursor_pages = 4;
38945be630a584 Patrik Jakobsson  2013-07-10  397  		else
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  398  			cursor_pages = pobj->npage;
38945be630a584 Patrik Jakobsson  2013-07-10  399  
38945be630a584 Patrik Jakobsson  2013-07-10  400  		/* Copy the cursor to cursor mem */
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  401  		tmp_dst = dev_priv->vram_addr + cursor_pobj->offset;
38945be630a584 Patrik Jakobsson  2013-07-10  402  		for (i = 0; i < cursor_pages; i++) {
8b250cd3b5da18 Ira Weiny         2022-01-23  403  			memcpy_from_page(tmp_dst, pobj->pages[i], 0, PAGE_SIZE);
38945be630a584 Patrik Jakobsson  2013-07-10  404  			tmp_dst += PAGE_SIZE;
38945be630a584 Patrik Jakobsson  2013-07-10  405  		}
38945be630a584 Patrik Jakobsson  2013-07-10  406  
6306865daf0283 Patrik Jakobsson  2013-07-22  407  		addr = gma_crtc->cursor_addr;
38945be630a584 Patrik Jakobsson  2013-07-10  408  	} else {
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  409  		addr = pobj->offset;
6306865daf0283 Patrik Jakobsson  2013-07-22  410  		gma_crtc->cursor_addr = addr;
38945be630a584 Patrik Jakobsson  2013-07-10  411  	}
38945be630a584 Patrik Jakobsson  2013-07-10  412  
38945be630a584 Patrik Jakobsson  2013-07-10  413  	temp = 0;
38945be630a584 Patrik Jakobsson  2013-07-10  414  	/* set the pipe for the cursor */
38945be630a584 Patrik Jakobsson  2013-07-10  415  	temp |= (pipe << 28);
38945be630a584 Patrik Jakobsson  2013-07-10  416  	temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE;
38945be630a584 Patrik Jakobsson  2013-07-10  417  
38945be630a584 Patrik Jakobsson  2013-07-10  418  	if (gma_power_begin(dev, false)) {
38945be630a584 Patrik Jakobsson  2013-07-10  419  		REG_WRITE(control, temp);
38945be630a584 Patrik Jakobsson  2013-07-10  420  		REG_WRITE(base, addr);
38945be630a584 Patrik Jakobsson  2013-07-10  421  		gma_power_end(dev);
38945be630a584 Patrik Jakobsson  2013-07-10  422  	}
38945be630a584 Patrik Jakobsson  2013-07-10  423  
38945be630a584 Patrik Jakobsson  2013-07-10  424  	/* unpin the old bo */
6306865daf0283 Patrik Jakobsson  2013-07-22  425  	if (gma_crtc->cursor_obj) {
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  426  		pobj = to_psb_gem_object(gma_crtc->cursor_obj);
f2d061ed01b3f0 Thomas Zimmermann 2021-10-15  427  		psb_gem_unpin(pobj);
e19baf704a4b51 Emil Velikov      2020-05-15  428  		drm_gem_object_put(gma_crtc->cursor_obj);
38945be630a584 Patrik Jakobsson  2013-07-10  429  	}
38945be630a584 Patrik Jakobsson  2013-07-10  430  
6306865daf0283 Patrik Jakobsson  2013-07-22  431  	gma_crtc->cursor_obj = obj;
631794b44bd3db Patrik Jakobsson  2014-01-08  432  unlock:
38945be630a584 Patrik Jakobsson  2013-07-10  433  	return ret;
38945be630a584 Patrik Jakobsson  2013-07-10  434  
38945be630a584 Patrik Jakobsson  2013-07-10  435  unref_cursor:
e19baf704a4b51 Emil Velikov      2020-05-15  436  	drm_gem_object_put(obj);
38945be630a584 Patrik Jakobsson  2013-07-10  437  	return ret;
38945be630a584 Patrik Jakobsson  2013-07-10  438  }
38945be630a584 Patrik Jakobsson  2013-07-10  439  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c
  2022-03-17  9:25 [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c Patrik Jakobsson
@ 2022-03-17 23:52   ` kernel test robot
  2022-03-17 22:40 ` kernel test robot
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-03-17 23:52 UTC (permalink / raw)
  To: Patrik Jakobsson, dri-devel
  Cc: llvm, kbuild-all, daniel.vetter, sam, tzimmermann

Hi Patrik,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm/drm-next]
[also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317]
[cannot apply to airlied/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
base:   git://anongit.freedesktop.org/drm/drm drm-next
config: i386-randconfig-a004 (https://download.01.org/0day-ci/archive/20220318/202203180730.btyhkeem-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project a6ec1e3d798f8eab43fb3a91028c6ab04e115fcb)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
        git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/

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

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/gma500/gma_display.c:175:5: warning: no previous prototype for function 'gma_crtc_gamma_set' [-Wmissing-prototypes]
   int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
       ^
   drivers/gpu/drm/gma500/gma_display.c:175:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
   ^
   static 
>> drivers/gpu/drm/gma500/gma_display.c:322:5: warning: no previous prototype for function 'gma_crtc_cursor_set' [-Wmissing-prototypes]
   int gma_crtc_cursor_set(struct drm_crtc *crtc,
       ^
   drivers/gpu/drm/gma500/gma_display.c:322:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int gma_crtc_cursor_set(struct drm_crtc *crtc,
   ^
   static 
>> drivers/gpu/drm/gma500/gma_display.c:440:5: warning: no previous prototype for function 'gma_crtc_cursor_move' [-Wmissing-prototypes]
   int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
       ^
   drivers/gpu/drm/gma500/gma_display.c:440:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
   ^
   static 
   3 warnings generated.


vim +/gma_crtc_gamma_set +175 drivers/gpu/drm/gma500/gma_display.c

2eff0b3359c097b Patrik Jakobsson  2013-07-05  174  
7ea7728387820a2 Maarten Lankhorst 2016-06-07 @175  int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
6d124ff845334bc Daniel Vetter     2017-04-03  176  		       u32 size,
6d124ff845334bc Daniel Vetter     2017-04-03  177  		       struct drm_modeset_acquire_ctx *ctx)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  178  {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  179  	gma_crtc_load_lut(crtc);
7ea7728387820a2 Maarten Lankhorst 2016-06-07  180  
7ea7728387820a2 Maarten Lankhorst 2016-06-07  181  	return 0;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  182  }
2eff0b3359c097b Patrik Jakobsson  2013-07-05  183  
98daaba0a7c36dc Lee Jones         2021-01-15  184  /*
2eff0b3359c097b Patrik Jakobsson  2013-07-05  185   * Sets the power management mode of the pipe and plane.
2eff0b3359c097b Patrik Jakobsson  2013-07-05  186   *
2eff0b3359c097b Patrik Jakobsson  2013-07-05  187   * This code should probably grow support for turning the cursor off and back
2eff0b3359c097b Patrik Jakobsson  2013-07-05  188   * on appropriately at the same time as we're turning the pipe off/on.
2eff0b3359c097b Patrik Jakobsson  2013-07-05  189   */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  190  void gma_crtc_dpms(struct drm_crtc *crtc, int mode)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  191  {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  192  	struct drm_device *dev = crtc->dev;
f71635e893c3832 Thomas Zimmermann 2021-09-20  193  	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
6306865daf0283d Patrik Jakobsson  2013-07-22  194  	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
6306865daf0283d Patrik Jakobsson  2013-07-22  195  	int pipe = gma_crtc->pipe;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  196  	const struct psb_offset *map = &dev_priv->regmap[pipe];
2eff0b3359c097b Patrik Jakobsson  2013-07-05  197  	u32 temp;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  198  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  199  	/* XXX: When our outputs are all unaware of DPMS modes other than off
2eff0b3359c097b Patrik Jakobsson  2013-07-05  200  	 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC.
2eff0b3359c097b Patrik Jakobsson  2013-07-05  201  	 */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  202  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  203  	if (IS_CDV(dev))
75346fe9bc4c9b3 Patrik Jakobsson  2013-08-15  204  		dev_priv->ops->disable_sr(dev);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  205  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  206  	switch (mode) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  207  	case DRM_MODE_DPMS_ON:
2eff0b3359c097b Patrik Jakobsson  2013-07-05  208  	case DRM_MODE_DPMS_STANDBY:
2eff0b3359c097b Patrik Jakobsson  2013-07-05  209  	case DRM_MODE_DPMS_SUSPEND:
6306865daf0283d Patrik Jakobsson  2013-07-22  210  		if (gma_crtc->active)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  211  			break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  212  
6306865daf0283d Patrik Jakobsson  2013-07-22  213  		gma_crtc->active = true;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  214  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  215  		/* Enable the DPLL */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  216  		temp = REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  217  		if ((temp & DPLL_VCO_ENABLE) == 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  218  			REG_WRITE(map->dpll, temp);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  219  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  220  			/* Wait for the clocks to stabilize. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  221  			udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  222  			REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  223  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  224  			/* Wait for the clocks to stabilize. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  225  			udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  226  			REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  227  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  228  			/* Wait for the clocks to stabilize. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  229  			udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  230  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  231  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  232  		/* Enable the plane */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  233  		temp = REG_READ(map->cntr);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  234  		if ((temp & DISPLAY_PLANE_ENABLE) == 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  235  			REG_WRITE(map->cntr,
2eff0b3359c097b Patrik Jakobsson  2013-07-05  236  				  temp | DISPLAY_PLANE_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  237  			/* Flush the plane changes */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  238  			REG_WRITE(map->base, REG_READ(map->base));
2eff0b3359c097b Patrik Jakobsson  2013-07-05  239  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  240  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  241  		udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  242  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  243  		/* Enable the pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  244  		temp = REG_READ(map->conf);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  245  		if ((temp & PIPEACONF_ENABLE) == 0)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  246  			REG_WRITE(map->conf, temp | PIPEACONF_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  247  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  248  		temp = REG_READ(map->status);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  249  		temp &= ~(0xFFFF);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  250  		temp |= PIPE_FIFO_UNDERRUN;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  251  		REG_WRITE(map->status, temp);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  252  		REG_READ(map->status);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  253  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  254  		gma_crtc_load_lut(crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  255  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  256  		/* Give the overlay scaler a chance to enable
2eff0b3359c097b Patrik Jakobsson  2013-07-05  257  		 * if it's on this pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  258  		/* psb_intel_crtc_dpms_video(crtc, true); TODO */
b20e9afb38d0b7f Paul Kocialkowski 2019-11-06  259  
b20e9afb38d0b7f Paul Kocialkowski 2019-11-06  260  		drm_crtc_vblank_on(crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  261  		break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  262  	case DRM_MODE_DPMS_OFF:
6306865daf0283d Patrik Jakobsson  2013-07-22  263  		if (!gma_crtc->active)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  264  			break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  265  
6306865daf0283d Patrik Jakobsson  2013-07-22  266  		gma_crtc->active = false;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  267  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  268  		/* Give the overlay scaler a chance to disable
2eff0b3359c097b Patrik Jakobsson  2013-07-05  269  		 * if it's on this pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  270  		/* psb_intel_crtc_dpms_video(crtc, FALSE); TODO */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  271  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  272  		/* Disable the VGA plane that we never use */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  273  		REG_WRITE(VGACNTRL, VGA_DISP_DISABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  274  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  275  		/* Turn off vblank interrupts */
c02726ffea2df09 Gustavo Padovan   2016-06-07  276  		drm_crtc_vblank_off(crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  277  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  278  		/* Wait for vblank for the disable to take effect */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  279  		gma_wait_for_vblank(dev);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  280  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  281  		/* Disable plane */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  282  		temp = REG_READ(map->cntr);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  283  		if ((temp & DISPLAY_PLANE_ENABLE) != 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  284  			REG_WRITE(map->cntr,
2eff0b3359c097b Patrik Jakobsson  2013-07-05  285  				  temp & ~DISPLAY_PLANE_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  286  			/* Flush the plane changes */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  287  			REG_WRITE(map->base, REG_READ(map->base));
2eff0b3359c097b Patrik Jakobsson  2013-07-05  288  			REG_READ(map->base);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  289  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  290  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  291  		/* Disable pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  292  		temp = REG_READ(map->conf);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  293  		if ((temp & PIPEACONF_ENABLE) != 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  294  			REG_WRITE(map->conf, temp & ~PIPEACONF_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  295  			REG_READ(map->conf);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  296  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  297  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  298  		/* Wait for vblank for the disable to take effect. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  299  		gma_wait_for_vblank(dev);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  300  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  301  		udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  302  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  303  		/* Disable DPLL */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  304  		temp = REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  305  		if ((temp & DPLL_VCO_ENABLE) != 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  306  			REG_WRITE(map->dpll, temp & ~DPLL_VCO_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  307  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  308  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  309  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  310  		/* Wait for the clocks to turn off. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  311  		udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  312  		break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  313  	}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  314  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  315  	if (IS_CDV(dev))
28a8194c12f8c8b Patrik Jakobsson  2013-08-14  316  		dev_priv->ops->update_wm(dev, crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  317  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  318  	/* Set FIFO watermarks */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  319  	REG_WRITE(DSPARB, 0x3F3E);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  320  }
2eff0b3359c097b Patrik Jakobsson  2013-07-05  321  
38945be630a5848 Patrik Jakobsson  2013-07-10 @322  int gma_crtc_cursor_set(struct drm_crtc *crtc,
38945be630a5848 Patrik Jakobsson  2013-07-10  323  			struct drm_file *file_priv,
38945be630a5848 Patrik Jakobsson  2013-07-10  324  			uint32_t handle,
38945be630a5848 Patrik Jakobsson  2013-07-10  325  			uint32_t width, uint32_t height)
38945be630a5848 Patrik Jakobsson  2013-07-10  326  {
38945be630a5848 Patrik Jakobsson  2013-07-10  327  	struct drm_device *dev = crtc->dev;
f71635e893c3832 Thomas Zimmermann 2021-09-20  328  	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
6306865daf0283d Patrik Jakobsson  2013-07-22  329  	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
6306865daf0283d Patrik Jakobsson  2013-07-22  330  	int pipe = gma_crtc->pipe;
38945be630a5848 Patrik Jakobsson  2013-07-10  331  	uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR;
38945be630a5848 Patrik Jakobsson  2013-07-10  332  	uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
38945be630a5848 Patrik Jakobsson  2013-07-10  333  	uint32_t temp;
38945be630a5848 Patrik Jakobsson  2013-07-10  334  	size_t addr = 0;
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  335  	struct psb_gem_object *pobj;
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  336  	struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj;
38945be630a5848 Patrik Jakobsson  2013-07-10  337  	struct drm_gem_object *obj;
8b250cd3b5da18b Ira Weiny         2022-01-23  338  	void *tmp_dst;
38945be630a5848 Patrik Jakobsson  2013-07-10  339  	int ret = 0, i, cursor_pages;
38945be630a5848 Patrik Jakobsson  2013-07-10  340  
38945be630a5848 Patrik Jakobsson  2013-07-10  341  	/* If we didn't get a handle then turn the cursor off */
38945be630a5848 Patrik Jakobsson  2013-07-10  342  	if (!handle) {
38945be630a5848 Patrik Jakobsson  2013-07-10  343  		temp = CURSOR_MODE_DISABLE;
38945be630a5848 Patrik Jakobsson  2013-07-10  344  		if (gma_power_begin(dev, false)) {
38945be630a5848 Patrik Jakobsson  2013-07-10  345  			REG_WRITE(control, temp);
38945be630a5848 Patrik Jakobsson  2013-07-10  346  			REG_WRITE(base, 0);
38945be630a5848 Patrik Jakobsson  2013-07-10  347  			gma_power_end(dev);
38945be630a5848 Patrik Jakobsson  2013-07-10  348  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  349  
38945be630a5848 Patrik Jakobsson  2013-07-10  350  		/* Unpin the old GEM object */
6306865daf0283d Patrik Jakobsson  2013-07-22  351  		if (gma_crtc->cursor_obj) {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  352  			pobj = to_psb_gem_object(gma_crtc->cursor_obj);
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  353  			psb_gem_unpin(pobj);
e19baf704a4b51b Emil Velikov      2020-05-15  354  			drm_gem_object_put(gma_crtc->cursor_obj);
6306865daf0283d Patrik Jakobsson  2013-07-22  355  			gma_crtc->cursor_obj = NULL;
38945be630a5848 Patrik Jakobsson  2013-07-10  356  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  357  		return 0;
38945be630a5848 Patrik Jakobsson  2013-07-10  358  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  359  
38945be630a5848 Patrik Jakobsson  2013-07-10  360  	/* Currently we only support 64x64 cursors */
38945be630a5848 Patrik Jakobsson  2013-07-10  361  	if (width != 64 || height != 64) {
38945be630a5848 Patrik Jakobsson  2013-07-10  362  		dev_dbg(dev->dev, "We currently only support 64x64 cursors\n");
38945be630a5848 Patrik Jakobsson  2013-07-10  363  		return -EINVAL;
38945be630a5848 Patrik Jakobsson  2013-07-10  364  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  365  
a8ad0bd84f98607 Chris Wilson      2016-05-09  366  	obj = drm_gem_object_lookup(file_priv, handle);
631794b44bd3dbf Patrik Jakobsson  2014-01-08  367  	if (!obj) {
631794b44bd3dbf Patrik Jakobsson  2014-01-08  368  		ret = -ENOENT;
631794b44bd3dbf Patrik Jakobsson  2014-01-08  369  		goto unlock;
631794b44bd3dbf Patrik Jakobsson  2014-01-08  370  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  371  
38945be630a5848 Patrik Jakobsson  2013-07-10  372  	if (obj->size < width * height * 4) {
38945be630a5848 Patrik Jakobsson  2013-07-10  373  		dev_dbg(dev->dev, "Buffer is too small\n");
38945be630a5848 Patrik Jakobsson  2013-07-10  374  		ret = -ENOMEM;
38945be630a5848 Patrik Jakobsson  2013-07-10  375  		goto unref_cursor;
38945be630a5848 Patrik Jakobsson  2013-07-10  376  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  377  
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  378  	pobj = to_psb_gem_object(obj);
38945be630a5848 Patrik Jakobsson  2013-07-10  379  
38945be630a5848 Patrik Jakobsson  2013-07-10  380  	/* Pin the memory into the GTT */
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  381  	ret = psb_gem_pin(pobj);
38945be630a5848 Patrik Jakobsson  2013-07-10  382  	if (ret) {
38945be630a5848 Patrik Jakobsson  2013-07-10  383  		dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle);
38945be630a5848 Patrik Jakobsson  2013-07-10  384  		goto unref_cursor;
38945be630a5848 Patrik Jakobsson  2013-07-10  385  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  386  
38945be630a5848 Patrik Jakobsson  2013-07-10  387  	if (dev_priv->ops->cursor_needs_phys) {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  388  		if (!cursor_pobj) {
38945be630a5848 Patrik Jakobsson  2013-07-10  389  			dev_err(dev->dev, "No hardware cursor mem available");
38945be630a5848 Patrik Jakobsson  2013-07-10  390  			ret = -ENOMEM;
38945be630a5848 Patrik Jakobsson  2013-07-10  391  			goto unref_cursor;
38945be630a5848 Patrik Jakobsson  2013-07-10  392  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  393  
38945be630a5848 Patrik Jakobsson  2013-07-10  394  		/* Prevent overflow */
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  395  		if (pobj->npage > 4)
38945be630a5848 Patrik Jakobsson  2013-07-10  396  			cursor_pages = 4;
38945be630a5848 Patrik Jakobsson  2013-07-10  397  		else
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  398  			cursor_pages = pobj->npage;
38945be630a5848 Patrik Jakobsson  2013-07-10  399  
38945be630a5848 Patrik Jakobsson  2013-07-10  400  		/* Copy the cursor to cursor mem */
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  401  		tmp_dst = dev_priv->vram_addr + cursor_pobj->offset;
38945be630a5848 Patrik Jakobsson  2013-07-10  402  		for (i = 0; i < cursor_pages; i++) {
8b250cd3b5da18b Ira Weiny         2022-01-23  403  			memcpy_from_page(tmp_dst, pobj->pages[i], 0, PAGE_SIZE);
38945be630a5848 Patrik Jakobsson  2013-07-10  404  			tmp_dst += PAGE_SIZE;
38945be630a5848 Patrik Jakobsson  2013-07-10  405  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  406  
6306865daf0283d Patrik Jakobsson  2013-07-22  407  		addr = gma_crtc->cursor_addr;
38945be630a5848 Patrik Jakobsson  2013-07-10  408  	} else {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  409  		addr = pobj->offset;
6306865daf0283d Patrik Jakobsson  2013-07-22  410  		gma_crtc->cursor_addr = addr;
38945be630a5848 Patrik Jakobsson  2013-07-10  411  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  412  
38945be630a5848 Patrik Jakobsson  2013-07-10  413  	temp = 0;
38945be630a5848 Patrik Jakobsson  2013-07-10  414  	/* set the pipe for the cursor */
38945be630a5848 Patrik Jakobsson  2013-07-10  415  	temp |= (pipe << 28);
38945be630a5848 Patrik Jakobsson  2013-07-10  416  	temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE;
38945be630a5848 Patrik Jakobsson  2013-07-10  417  
38945be630a5848 Patrik Jakobsson  2013-07-10  418  	if (gma_power_begin(dev, false)) {
38945be630a5848 Patrik Jakobsson  2013-07-10  419  		REG_WRITE(control, temp);
38945be630a5848 Patrik Jakobsson  2013-07-10  420  		REG_WRITE(base, addr);
38945be630a5848 Patrik Jakobsson  2013-07-10  421  		gma_power_end(dev);
38945be630a5848 Patrik Jakobsson  2013-07-10  422  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  423  
38945be630a5848 Patrik Jakobsson  2013-07-10  424  	/* unpin the old bo */
6306865daf0283d Patrik Jakobsson  2013-07-22  425  	if (gma_crtc->cursor_obj) {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  426  		pobj = to_psb_gem_object(gma_crtc->cursor_obj);
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  427  		psb_gem_unpin(pobj);
e19baf704a4b51b Emil Velikov      2020-05-15  428  		drm_gem_object_put(gma_crtc->cursor_obj);
38945be630a5848 Patrik Jakobsson  2013-07-10  429  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  430  
6306865daf0283d Patrik Jakobsson  2013-07-22  431  	gma_crtc->cursor_obj = obj;
631794b44bd3dbf Patrik Jakobsson  2014-01-08  432  unlock:
38945be630a5848 Patrik Jakobsson  2013-07-10  433  	return ret;
38945be630a5848 Patrik Jakobsson  2013-07-10  434  
38945be630a5848 Patrik Jakobsson  2013-07-10  435  unref_cursor:
e19baf704a4b51b Emil Velikov      2020-05-15  436  	drm_gem_object_put(obj);
38945be630a5848 Patrik Jakobsson  2013-07-10  437  	return ret;
38945be630a5848 Patrik Jakobsson  2013-07-10  438  }
38945be630a5848 Patrik Jakobsson  2013-07-10  439  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c
@ 2022-03-17 23:52   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-03-17 23:52 UTC (permalink / raw)
  To: Patrik Jakobsson, dri-devel
  Cc: daniel.vetter, llvm, kbuild-all, tzimmermann, sam

Hi Patrik,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm/drm-next]
[also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317]
[cannot apply to airlied/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
base:   git://anongit.freedesktop.org/drm/drm drm-next
config: i386-randconfig-a004 (https://download.01.org/0day-ci/archive/20220318/202203180730.btyhkeem-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project a6ec1e3d798f8eab43fb3a91028c6ab04e115fcb)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
        git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/

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

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/gma500/gma_display.c:175:5: warning: no previous prototype for function 'gma_crtc_gamma_set' [-Wmissing-prototypes]
   int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
       ^
   drivers/gpu/drm/gma500/gma_display.c:175:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
   ^
   static 
>> drivers/gpu/drm/gma500/gma_display.c:322:5: warning: no previous prototype for function 'gma_crtc_cursor_set' [-Wmissing-prototypes]
   int gma_crtc_cursor_set(struct drm_crtc *crtc,
       ^
   drivers/gpu/drm/gma500/gma_display.c:322:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int gma_crtc_cursor_set(struct drm_crtc *crtc,
   ^
   static 
>> drivers/gpu/drm/gma500/gma_display.c:440:5: warning: no previous prototype for function 'gma_crtc_cursor_move' [-Wmissing-prototypes]
   int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
       ^
   drivers/gpu/drm/gma500/gma_display.c:440:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
   ^
   static 
   3 warnings generated.


vim +/gma_crtc_gamma_set +175 drivers/gpu/drm/gma500/gma_display.c

2eff0b3359c097b Patrik Jakobsson  2013-07-05  174  
7ea7728387820a2 Maarten Lankhorst 2016-06-07 @175  int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
6d124ff845334bc Daniel Vetter     2017-04-03  176  		       u32 size,
6d124ff845334bc Daniel Vetter     2017-04-03  177  		       struct drm_modeset_acquire_ctx *ctx)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  178  {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  179  	gma_crtc_load_lut(crtc);
7ea7728387820a2 Maarten Lankhorst 2016-06-07  180  
7ea7728387820a2 Maarten Lankhorst 2016-06-07  181  	return 0;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  182  }
2eff0b3359c097b Patrik Jakobsson  2013-07-05  183  
98daaba0a7c36dc Lee Jones         2021-01-15  184  /*
2eff0b3359c097b Patrik Jakobsson  2013-07-05  185   * Sets the power management mode of the pipe and plane.
2eff0b3359c097b Patrik Jakobsson  2013-07-05  186   *
2eff0b3359c097b Patrik Jakobsson  2013-07-05  187   * This code should probably grow support for turning the cursor off and back
2eff0b3359c097b Patrik Jakobsson  2013-07-05  188   * on appropriately at the same time as we're turning the pipe off/on.
2eff0b3359c097b Patrik Jakobsson  2013-07-05  189   */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  190  void gma_crtc_dpms(struct drm_crtc *crtc, int mode)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  191  {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  192  	struct drm_device *dev = crtc->dev;
f71635e893c3832 Thomas Zimmermann 2021-09-20  193  	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
6306865daf0283d Patrik Jakobsson  2013-07-22  194  	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
6306865daf0283d Patrik Jakobsson  2013-07-22  195  	int pipe = gma_crtc->pipe;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  196  	const struct psb_offset *map = &dev_priv->regmap[pipe];
2eff0b3359c097b Patrik Jakobsson  2013-07-05  197  	u32 temp;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  198  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  199  	/* XXX: When our outputs are all unaware of DPMS modes other than off
2eff0b3359c097b Patrik Jakobsson  2013-07-05  200  	 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC.
2eff0b3359c097b Patrik Jakobsson  2013-07-05  201  	 */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  202  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  203  	if (IS_CDV(dev))
75346fe9bc4c9b3 Patrik Jakobsson  2013-08-15  204  		dev_priv->ops->disable_sr(dev);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  205  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  206  	switch (mode) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  207  	case DRM_MODE_DPMS_ON:
2eff0b3359c097b Patrik Jakobsson  2013-07-05  208  	case DRM_MODE_DPMS_STANDBY:
2eff0b3359c097b Patrik Jakobsson  2013-07-05  209  	case DRM_MODE_DPMS_SUSPEND:
6306865daf0283d Patrik Jakobsson  2013-07-22  210  		if (gma_crtc->active)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  211  			break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  212  
6306865daf0283d Patrik Jakobsson  2013-07-22  213  		gma_crtc->active = true;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  214  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  215  		/* Enable the DPLL */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  216  		temp = REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  217  		if ((temp & DPLL_VCO_ENABLE) == 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  218  			REG_WRITE(map->dpll, temp);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  219  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  220  			/* Wait for the clocks to stabilize. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  221  			udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  222  			REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  223  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  224  			/* Wait for the clocks to stabilize. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  225  			udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  226  			REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  227  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  228  			/* Wait for the clocks to stabilize. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  229  			udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  230  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  231  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  232  		/* Enable the plane */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  233  		temp = REG_READ(map->cntr);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  234  		if ((temp & DISPLAY_PLANE_ENABLE) == 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  235  			REG_WRITE(map->cntr,
2eff0b3359c097b Patrik Jakobsson  2013-07-05  236  				  temp | DISPLAY_PLANE_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  237  			/* Flush the plane changes */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  238  			REG_WRITE(map->base, REG_READ(map->base));
2eff0b3359c097b Patrik Jakobsson  2013-07-05  239  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  240  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  241  		udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  242  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  243  		/* Enable the pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  244  		temp = REG_READ(map->conf);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  245  		if ((temp & PIPEACONF_ENABLE) == 0)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  246  			REG_WRITE(map->conf, temp | PIPEACONF_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  247  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  248  		temp = REG_READ(map->status);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  249  		temp &= ~(0xFFFF);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  250  		temp |= PIPE_FIFO_UNDERRUN;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  251  		REG_WRITE(map->status, temp);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  252  		REG_READ(map->status);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  253  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  254  		gma_crtc_load_lut(crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  255  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  256  		/* Give the overlay scaler a chance to enable
2eff0b3359c097b Patrik Jakobsson  2013-07-05  257  		 * if it's on this pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  258  		/* psb_intel_crtc_dpms_video(crtc, true); TODO */
b20e9afb38d0b7f Paul Kocialkowski 2019-11-06  259  
b20e9afb38d0b7f Paul Kocialkowski 2019-11-06  260  		drm_crtc_vblank_on(crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  261  		break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  262  	case DRM_MODE_DPMS_OFF:
6306865daf0283d Patrik Jakobsson  2013-07-22  263  		if (!gma_crtc->active)
2eff0b3359c097b Patrik Jakobsson  2013-07-05  264  			break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  265  
6306865daf0283d Patrik Jakobsson  2013-07-22  266  		gma_crtc->active = false;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  267  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  268  		/* Give the overlay scaler a chance to disable
2eff0b3359c097b Patrik Jakobsson  2013-07-05  269  		 * if it's on this pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  270  		/* psb_intel_crtc_dpms_video(crtc, FALSE); TODO */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  271  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  272  		/* Disable the VGA plane that we never use */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  273  		REG_WRITE(VGACNTRL, VGA_DISP_DISABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  274  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  275  		/* Turn off vblank interrupts */
c02726ffea2df09 Gustavo Padovan   2016-06-07  276  		drm_crtc_vblank_off(crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  277  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  278  		/* Wait for vblank for the disable to take effect */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  279  		gma_wait_for_vblank(dev);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  280  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  281  		/* Disable plane */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  282  		temp = REG_READ(map->cntr);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  283  		if ((temp & DISPLAY_PLANE_ENABLE) != 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  284  			REG_WRITE(map->cntr,
2eff0b3359c097b Patrik Jakobsson  2013-07-05  285  				  temp & ~DISPLAY_PLANE_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  286  			/* Flush the plane changes */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  287  			REG_WRITE(map->base, REG_READ(map->base));
2eff0b3359c097b Patrik Jakobsson  2013-07-05  288  			REG_READ(map->base);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  289  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  290  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  291  		/* Disable pipe */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  292  		temp = REG_READ(map->conf);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  293  		if ((temp & PIPEACONF_ENABLE) != 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  294  			REG_WRITE(map->conf, temp & ~PIPEACONF_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  295  			REG_READ(map->conf);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  296  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  297  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  298  		/* Wait for vblank for the disable to take effect. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  299  		gma_wait_for_vblank(dev);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  300  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  301  		udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  302  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  303  		/* Disable DPLL */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  304  		temp = REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  305  		if ((temp & DPLL_VCO_ENABLE) != 0) {
2eff0b3359c097b Patrik Jakobsson  2013-07-05  306  			REG_WRITE(map->dpll, temp & ~DPLL_VCO_ENABLE);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  307  			REG_READ(map->dpll);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  308  		}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  309  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  310  		/* Wait for the clocks to turn off. */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  311  		udelay(150);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  312  		break;
2eff0b3359c097b Patrik Jakobsson  2013-07-05  313  	}
2eff0b3359c097b Patrik Jakobsson  2013-07-05  314  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  315  	if (IS_CDV(dev))
28a8194c12f8c8b Patrik Jakobsson  2013-08-14  316  		dev_priv->ops->update_wm(dev, crtc);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  317  
2eff0b3359c097b Patrik Jakobsson  2013-07-05  318  	/* Set FIFO watermarks */
2eff0b3359c097b Patrik Jakobsson  2013-07-05  319  	REG_WRITE(DSPARB, 0x3F3E);
2eff0b3359c097b Patrik Jakobsson  2013-07-05  320  }
2eff0b3359c097b Patrik Jakobsson  2013-07-05  321  
38945be630a5848 Patrik Jakobsson  2013-07-10 @322  int gma_crtc_cursor_set(struct drm_crtc *crtc,
38945be630a5848 Patrik Jakobsson  2013-07-10  323  			struct drm_file *file_priv,
38945be630a5848 Patrik Jakobsson  2013-07-10  324  			uint32_t handle,
38945be630a5848 Patrik Jakobsson  2013-07-10  325  			uint32_t width, uint32_t height)
38945be630a5848 Patrik Jakobsson  2013-07-10  326  {
38945be630a5848 Patrik Jakobsson  2013-07-10  327  	struct drm_device *dev = crtc->dev;
f71635e893c3832 Thomas Zimmermann 2021-09-20  328  	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
6306865daf0283d Patrik Jakobsson  2013-07-22  329  	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
6306865daf0283d Patrik Jakobsson  2013-07-22  330  	int pipe = gma_crtc->pipe;
38945be630a5848 Patrik Jakobsson  2013-07-10  331  	uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR;
38945be630a5848 Patrik Jakobsson  2013-07-10  332  	uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
38945be630a5848 Patrik Jakobsson  2013-07-10  333  	uint32_t temp;
38945be630a5848 Patrik Jakobsson  2013-07-10  334  	size_t addr = 0;
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  335  	struct psb_gem_object *pobj;
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  336  	struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj;
38945be630a5848 Patrik Jakobsson  2013-07-10  337  	struct drm_gem_object *obj;
8b250cd3b5da18b Ira Weiny         2022-01-23  338  	void *tmp_dst;
38945be630a5848 Patrik Jakobsson  2013-07-10  339  	int ret = 0, i, cursor_pages;
38945be630a5848 Patrik Jakobsson  2013-07-10  340  
38945be630a5848 Patrik Jakobsson  2013-07-10  341  	/* If we didn't get a handle then turn the cursor off */
38945be630a5848 Patrik Jakobsson  2013-07-10  342  	if (!handle) {
38945be630a5848 Patrik Jakobsson  2013-07-10  343  		temp = CURSOR_MODE_DISABLE;
38945be630a5848 Patrik Jakobsson  2013-07-10  344  		if (gma_power_begin(dev, false)) {
38945be630a5848 Patrik Jakobsson  2013-07-10  345  			REG_WRITE(control, temp);
38945be630a5848 Patrik Jakobsson  2013-07-10  346  			REG_WRITE(base, 0);
38945be630a5848 Patrik Jakobsson  2013-07-10  347  			gma_power_end(dev);
38945be630a5848 Patrik Jakobsson  2013-07-10  348  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  349  
38945be630a5848 Patrik Jakobsson  2013-07-10  350  		/* Unpin the old GEM object */
6306865daf0283d Patrik Jakobsson  2013-07-22  351  		if (gma_crtc->cursor_obj) {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  352  			pobj = to_psb_gem_object(gma_crtc->cursor_obj);
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  353  			psb_gem_unpin(pobj);
e19baf704a4b51b Emil Velikov      2020-05-15  354  			drm_gem_object_put(gma_crtc->cursor_obj);
6306865daf0283d Patrik Jakobsson  2013-07-22  355  			gma_crtc->cursor_obj = NULL;
38945be630a5848 Patrik Jakobsson  2013-07-10  356  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  357  		return 0;
38945be630a5848 Patrik Jakobsson  2013-07-10  358  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  359  
38945be630a5848 Patrik Jakobsson  2013-07-10  360  	/* Currently we only support 64x64 cursors */
38945be630a5848 Patrik Jakobsson  2013-07-10  361  	if (width != 64 || height != 64) {
38945be630a5848 Patrik Jakobsson  2013-07-10  362  		dev_dbg(dev->dev, "We currently only support 64x64 cursors\n");
38945be630a5848 Patrik Jakobsson  2013-07-10  363  		return -EINVAL;
38945be630a5848 Patrik Jakobsson  2013-07-10  364  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  365  
a8ad0bd84f98607 Chris Wilson      2016-05-09  366  	obj = drm_gem_object_lookup(file_priv, handle);
631794b44bd3dbf Patrik Jakobsson  2014-01-08  367  	if (!obj) {
631794b44bd3dbf Patrik Jakobsson  2014-01-08  368  		ret = -ENOENT;
631794b44bd3dbf Patrik Jakobsson  2014-01-08  369  		goto unlock;
631794b44bd3dbf Patrik Jakobsson  2014-01-08  370  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  371  
38945be630a5848 Patrik Jakobsson  2013-07-10  372  	if (obj->size < width * height * 4) {
38945be630a5848 Patrik Jakobsson  2013-07-10  373  		dev_dbg(dev->dev, "Buffer is too small\n");
38945be630a5848 Patrik Jakobsson  2013-07-10  374  		ret = -ENOMEM;
38945be630a5848 Patrik Jakobsson  2013-07-10  375  		goto unref_cursor;
38945be630a5848 Patrik Jakobsson  2013-07-10  376  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  377  
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  378  	pobj = to_psb_gem_object(obj);
38945be630a5848 Patrik Jakobsson  2013-07-10  379  
38945be630a5848 Patrik Jakobsson  2013-07-10  380  	/* Pin the memory into the GTT */
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  381  	ret = psb_gem_pin(pobj);
38945be630a5848 Patrik Jakobsson  2013-07-10  382  	if (ret) {
38945be630a5848 Patrik Jakobsson  2013-07-10  383  		dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle);
38945be630a5848 Patrik Jakobsson  2013-07-10  384  		goto unref_cursor;
38945be630a5848 Patrik Jakobsson  2013-07-10  385  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  386  
38945be630a5848 Patrik Jakobsson  2013-07-10  387  	if (dev_priv->ops->cursor_needs_phys) {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  388  		if (!cursor_pobj) {
38945be630a5848 Patrik Jakobsson  2013-07-10  389  			dev_err(dev->dev, "No hardware cursor mem available");
38945be630a5848 Patrik Jakobsson  2013-07-10  390  			ret = -ENOMEM;
38945be630a5848 Patrik Jakobsson  2013-07-10  391  			goto unref_cursor;
38945be630a5848 Patrik Jakobsson  2013-07-10  392  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  393  
38945be630a5848 Patrik Jakobsson  2013-07-10  394  		/* Prevent overflow */
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  395  		if (pobj->npage > 4)
38945be630a5848 Patrik Jakobsson  2013-07-10  396  			cursor_pages = 4;
38945be630a5848 Patrik Jakobsson  2013-07-10  397  		else
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  398  			cursor_pages = pobj->npage;
38945be630a5848 Patrik Jakobsson  2013-07-10  399  
38945be630a5848 Patrik Jakobsson  2013-07-10  400  		/* Copy the cursor to cursor mem */
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  401  		tmp_dst = dev_priv->vram_addr + cursor_pobj->offset;
38945be630a5848 Patrik Jakobsson  2013-07-10  402  		for (i = 0; i < cursor_pages; i++) {
8b250cd3b5da18b Ira Weiny         2022-01-23  403  			memcpy_from_page(tmp_dst, pobj->pages[i], 0, PAGE_SIZE);
38945be630a5848 Patrik Jakobsson  2013-07-10  404  			tmp_dst += PAGE_SIZE;
38945be630a5848 Patrik Jakobsson  2013-07-10  405  		}
38945be630a5848 Patrik Jakobsson  2013-07-10  406  
6306865daf0283d Patrik Jakobsson  2013-07-22  407  		addr = gma_crtc->cursor_addr;
38945be630a5848 Patrik Jakobsson  2013-07-10  408  	} else {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  409  		addr = pobj->offset;
6306865daf0283d Patrik Jakobsson  2013-07-22  410  		gma_crtc->cursor_addr = addr;
38945be630a5848 Patrik Jakobsson  2013-07-10  411  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  412  
38945be630a5848 Patrik Jakobsson  2013-07-10  413  	temp = 0;
38945be630a5848 Patrik Jakobsson  2013-07-10  414  	/* set the pipe for the cursor */
38945be630a5848 Patrik Jakobsson  2013-07-10  415  	temp |= (pipe << 28);
38945be630a5848 Patrik Jakobsson  2013-07-10  416  	temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE;
38945be630a5848 Patrik Jakobsson  2013-07-10  417  
38945be630a5848 Patrik Jakobsson  2013-07-10  418  	if (gma_power_begin(dev, false)) {
38945be630a5848 Patrik Jakobsson  2013-07-10  419  		REG_WRITE(control, temp);
38945be630a5848 Patrik Jakobsson  2013-07-10  420  		REG_WRITE(base, addr);
38945be630a5848 Patrik Jakobsson  2013-07-10  421  		gma_power_end(dev);
38945be630a5848 Patrik Jakobsson  2013-07-10  422  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  423  
38945be630a5848 Patrik Jakobsson  2013-07-10  424  	/* unpin the old bo */
6306865daf0283d Patrik Jakobsson  2013-07-22  425  	if (gma_crtc->cursor_obj) {
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  426  		pobj = to_psb_gem_object(gma_crtc->cursor_obj);
f2d061ed01b3f0e Thomas Zimmermann 2021-10-15  427  		psb_gem_unpin(pobj);
e19baf704a4b51b Emil Velikov      2020-05-15  428  		drm_gem_object_put(gma_crtc->cursor_obj);
38945be630a5848 Patrik Jakobsson  2013-07-10  429  	}
38945be630a5848 Patrik Jakobsson  2013-07-10  430  
6306865daf0283d Patrik Jakobsson  2013-07-22  431  	gma_crtc->cursor_obj = obj;
631794b44bd3dbf Patrik Jakobsson  2014-01-08  432  unlock:
38945be630a5848 Patrik Jakobsson  2013-07-10  433  	return ret;
38945be630a5848 Patrik Jakobsson  2013-07-10  434  
38945be630a5848 Patrik Jakobsson  2013-07-10  435  unref_cursor:
e19baf704a4b51b Emil Velikov      2020-05-15  436  	drm_gem_object_put(obj);
38945be630a5848 Patrik Jakobsson  2013-07-10  437  	return ret;
38945be630a5848 Patrik Jakobsson  2013-07-10  438  }
38945be630a5848 Patrik Jakobsson  2013-07-10  439  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [RFC PATCH] drm/gma500: gma_crtc_gamma_set() can be static
  2022-03-17  9:25 [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c Patrik Jakobsson
                   ` (2 preceding siblings ...)
  2022-03-17 23:52   ` kernel test robot
@ 2022-03-18  2:25 ` kernel test robot
  2022-03-18  2:25 ` [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c kernel test robot
  4 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-03-18  2:25 UTC (permalink / raw)
  To: Patrik Jakobsson, dri-devel; +Cc: daniel.vetter, kbuild-all, tzimmermann, sam

drivers/gpu/drm/gma500/gma_display.c:175:5: warning: symbol 'gma_crtc_gamma_set' was not declared. Should it be static?
drivers/gpu/drm/gma500/gma_display.c:322:5: warning: symbol 'gma_crtc_cursor_set' was not declared. Should it be static?
drivers/gpu/drm/gma500/gma_display.c:440:5: warning: symbol 'gma_crtc_cursor_move' was not declared. Should it be static?

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: kernel test robot <lkp@intel.com>
---
 drivers/gpu/drm/gma500/gma_display.c |   16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index 832696ccfa9d0..8f6a8502b7756 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -172,9 +172,9 @@ void gma_crtc_load_lut(struct drm_crtc *crtc)
 	}
 }
 
-int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
-		       u32 size,
-		       struct drm_modeset_acquire_ctx *ctx)
+static int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
+			      u32 size,
+			      struct drm_modeset_acquire_ctx *ctx)
 {
 	gma_crtc_load_lut(crtc);
 
@@ -319,10 +319,10 @@ void gma_crtc_dpms(struct drm_crtc *crtc, int mode)
 	REG_WRITE(DSPARB, 0x3F3E);
 }
 
-int gma_crtc_cursor_set(struct drm_crtc *crtc,
-			struct drm_file *file_priv,
-			uint32_t handle,
-			uint32_t width, uint32_t height)
+static int gma_crtc_cursor_set(struct drm_crtc *crtc,
+			       struct drm_file *file_priv,
+			       uint32_t handle,
+			       uint32_t width, uint32_t height)
 {
 	struct drm_device *dev = crtc->dev;
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
@@ -437,7 +437,7 @@ int gma_crtc_cursor_set(struct drm_crtc *crtc,
 	return ret;
 }
 
-int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
+static int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
 {
 	struct drm_device *dev = crtc->dev;
 	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c
  2022-03-17  9:25 [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c Patrik Jakobsson
                   ` (3 preceding siblings ...)
  2022-03-18  2:25 ` [RFC PATCH] drm/gma500: gma_crtc_gamma_set() can be static kernel test robot
@ 2022-03-18  2:25 ` kernel test robot
  4 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-03-18  2:25 UTC (permalink / raw)
  To: Patrik Jakobsson, dri-devel; +Cc: daniel.vetter, kbuild-all, tzimmermann, sam

Hi Patrik,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm/drm-next]
[also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
base:   git://anongit.freedesktop.org/drm/drm drm-next
config: i386-randconfig-s002 (https://download.01.org/0day-ci/archive/20220318/202203181032.rQkGG9w3-lkp@intel.com/config)
compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741
        git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1
        # save the config file to linux build tree
        mkdir build_dir
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/

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


sparse warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/gma500/gma_display.c:175:5: sparse: sparse: symbol 'gma_crtc_gamma_set' was not declared. Should it be static?
   drivers/gpu/drm/gma500/gma_display.c:401:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void *tmp_dst @@     got unsigned char [noderef] [usertype] __iomem * @@
   drivers/gpu/drm/gma500/gma_display.c:401:25: sparse:     expected void *tmp_dst
   drivers/gpu/drm/gma500/gma_display.c:401:25: sparse:     got unsigned char [noderef] [usertype] __iomem *
>> drivers/gpu/drm/gma500/gma_display.c:322:5: sparse: sparse: symbol 'gma_crtc_cursor_set' was not declared. Should it be static?
>> drivers/gpu/drm/gma500/gma_display.c:440:5: sparse: sparse: symbol 'gma_crtc_cursor_move' was not declared. Should it be static?

Please review and possibly fold the followup patch.

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-03-18  2:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-17  9:25 [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c Patrik Jakobsson
2022-03-17 19:47 ` Thomas Zimmermann
2022-03-17 22:40 ` kernel test robot
2022-03-17 23:52 ` kernel test robot
2022-03-17 23:52   ` kernel test robot
2022-03-18  2:25 ` [RFC PATCH] drm/gma500: gma_crtc_gamma_set() can be static kernel test robot
2022-03-18  2:25 ` [PATCH 2/4] drm/gma500: Move gma_intel_crtc_funcs into gma_display.c kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.