root/drivers/gpu/drm/armada/armada_drm.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. armada_updatel
  2. armada_pitch

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) 2012 Russell King
   4  */
   5 #ifndef ARMADA_DRM_H
   6 #define ARMADA_DRM_H
   7 
   8 #include <linux/kfifo.h>
   9 #include <linux/io.h>
  10 #include <linux/workqueue.h>
  11 
  12 #include <drm/drm_device.h>
  13 #include <drm/drm_mm.h>
  14 
  15 struct armada_crtc;
  16 struct armada_gem_object;
  17 struct clk;
  18 struct drm_display_mode;
  19 struct drm_fb_helper;
  20 
  21 static inline void
  22 armada_updatel(uint32_t val, uint32_t mask, void __iomem *ptr)
  23 {
  24         uint32_t ov, v;
  25 
  26         ov = v = readl_relaxed(ptr);
  27         v = (v & ~mask) | val;
  28         if (ov != v)
  29                 writel_relaxed(v, ptr);
  30 }
  31 
  32 static inline uint32_t armada_pitch(uint32_t width, uint32_t bpp)
  33 {
  34         uint32_t pitch = bpp != 4 ? width * ((bpp + 7) / 8) : width / 2;
  35 
  36         /* 88AP510 spec recommends pitch be a multiple of 128 */
  37         return ALIGN(pitch, 128);
  38 }
  39 
  40 
  41 struct armada_private;
  42 
  43 struct armada_variant {
  44         bool has_spu_adv_reg;
  45         int (*init)(struct armada_crtc *, struct device *);
  46         int (*compute_clock)(struct armada_crtc *,
  47                              const struct drm_display_mode *,
  48                              uint32_t *);
  49         void (*disable)(struct armada_crtc *);
  50         void (*enable)(struct armada_crtc *, const struct drm_display_mode *);
  51 };
  52 
  53 /* Variant ops */
  54 extern const struct armada_variant armada510_ops;
  55 
  56 struct armada_private {
  57         struct drm_device       drm;
  58         struct drm_fb_helper    *fbdev;
  59         struct armada_crtc      *dcrtc[2];
  60         struct drm_mm           linear; /* protected by linear_lock */
  61         struct mutex            linear_lock;
  62         struct drm_property     *colorkey_prop;
  63         struct drm_property     *colorkey_min_prop;
  64         struct drm_property     *colorkey_max_prop;
  65         struct drm_property     *colorkey_val_prop;
  66         struct drm_property     *colorkey_alpha_prop;
  67         struct drm_property     *colorkey_mode_prop;
  68         struct drm_property     *brightness_prop;
  69         struct drm_property     *contrast_prop;
  70         struct drm_property     *saturation_prop;
  71 #ifdef CONFIG_DEBUG_FS
  72         struct dentry           *de;
  73 #endif
  74 };
  75 
  76 int armada_fbdev_init(struct drm_device *);
  77 void armada_fbdev_fini(struct drm_device *);
  78 
  79 int armada_overlay_plane_create(struct drm_device *, unsigned long);
  80 
  81 void armada_drm_crtc_debugfs_init(struct armada_crtc *dcrtc);
  82 int armada_drm_debugfs_init(struct drm_minor *);
  83 
  84 #endif

/* [<][>][^][v][top][bottom][index][help] */