drm/vc4: Add gem_info node via debugfs for vc5
[platform/kernel/linux-rpi.git] / drivers / gpu / drm / vc4 / vc4_drv.h
index c7db33a..7304d74 100644 (file)
@@ -87,8 +87,6 @@ struct vc4_dev {
 
        struct vc4_hvs *hvs;
        struct vc4_v3d *v3d;
-       struct vc4_vec *vec;
-       struct vc4_txp *txp;
        struct vc4_fkms *fkms;
 
        struct vc4_hang_state *hang_state;
@@ -332,6 +330,8 @@ struct vc4_hvs {
 
        struct clk *core_clk;
 
+       unsigned long max_core_rate;
+
        /* Memory manager for CRTCs to allocate space in the display
         * list.  Units are dwords.
         */
@@ -350,7 +350,7 @@ struct vc4_hvs {
         * config.txt file to be able to do so and thus won't always be
         * available.
         */
-       bool vc5_hdmi_enable_scrambling;
+       bool vc5_hdmi_enable_hdmi_20;
 
        /*
         * 4096x2160@60 requires a core overclock to work, so register
@@ -739,6 +739,11 @@ struct vc4_exec_info {
        bool bin_bo_used;
 };
 
+struct drm_vc5_file_private {
+       pid_t pid;
+       pid_t tgid;
+};
+
 /* Per-open file private data. Any driver-specific resource that has to be
  * released when the DRM file is closed should be placed here.
  */
@@ -751,6 +756,7 @@ struct vc4_file {
        } perfmon;
 
        bool bin_bo_used;
+       struct drm_vc5_file_private priv;
 };
 
 static inline struct vc4_exec_info *
@@ -880,6 +886,8 @@ int vc4_bo_inc_usecnt(struct vc4_bo *bo);
 void vc4_bo_dec_usecnt(struct vc4_bo *bo);
 void vc4_bo_add_to_purgeable_pool(struct vc4_bo *bo);
 void vc4_bo_remove_from_purgeable_pool(struct vc4_bo *bo);
+int vc4_bo_debugfs_init(struct drm_minor *minor);
+int vc5_bo_debugfs_init(struct drm_minor *minor);
 
 /* vc4_crtc.c */
 extern struct platform_driver vc4_crtc_driver;
@@ -897,6 +905,7 @@ void vc4_crtc_destroy_state(struct drm_crtc *crtc,
                            struct drm_crtc_state *state);
 void vc4_crtc_reset(struct drm_crtc *crtc);
 void vc4_crtc_handle_vblank(struct vc4_crtc *crtc);
+int vc4_crtc_late_register(struct drm_crtc *crtc);
 void vc4_crtc_send_vblank(struct drm_crtc *crtc);
 void vc4_crtc_get_margins(struct drm_crtc_state *state,
                          unsigned int *left, unsigned int *right,
@@ -905,25 +914,27 @@ void vc4_crtc_get_margins(struct drm_crtc_state *state,
 /* vc4_debugfs.c */
 void vc4_debugfs_init(struct drm_minor *minor);
 #ifdef CONFIG_DEBUG_FS
-void vc4_debugfs_add_file(struct drm_device *drm,
-                         const char *filename,
-                         int (*show)(struct seq_file*, void*),
-                         void *data);
-void vc4_debugfs_add_regset32(struct drm_device *drm,
-                             const char *filename,
-                             struct debugfs_regset32 *regset);
+int vc4_debugfs_add_file(struct drm_minor *minor,
+                        const char *filename,
+                        int (*show)(struct seq_file*, void*),
+                        void *data);
+int vc4_debugfs_add_regset32(struct drm_minor *minor,
+                            const char *filename,
+                            struct debugfs_regset32 *regset);
 #else
-static inline void vc4_debugfs_add_file(struct drm_device *drm,
-                                       const char *filename,
-                                       int (*show)(struct seq_file*, void*),
-                                       void *data)
+static inline int vc4_debugfs_add_file(struct drm_minor *minor,
+                                      const char *filename,
+                                      int (*show)(struct seq_file*, void*),
+                                      void *data)
 {
+       return 0;
 }
 
-static inline void vc4_debugfs_add_regset32(struct drm_device *drm,
-                                           const char *filename,
-                                           struct debugfs_regset32 *regset)
+static inline int vc4_debugfs_add_regset32(struct drm_minor *minor,
+                                          const char *filename,
+                                          struct debugfs_regset32 *regset)
 {
+       return 0;
 }
 #endif
 
@@ -992,6 +1003,7 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc, struct drm_atomic_state *state)
 void vc4_hvs_dump_state(struct vc4_hvs *hvs);
 void vc4_hvs_unmask_underrun(struct vc4_hvs *hvs, int channel);
 void vc4_hvs_mask_underrun(struct vc4_hvs *hvs, int channel);
+int vc4_hvs_debugfs_init(struct drm_minor *minor);
 
 /* vc4_kms.c */
 int vc4_kms_load(struct drm_device *dev);
@@ -1014,6 +1026,7 @@ int vc4_v3d_bin_bo_get(struct vc4_dev *vc4, bool *used);
 void vc4_v3d_bin_bo_put(struct vc4_dev *vc4);
 int vc4_v3d_pm_get(struct vc4_dev *vc4);
 void vc4_v3d_pm_put(struct vc4_dev *vc4);
+int vc4_v3d_debugfs_init(struct drm_minor *minor);
 
 /* vc4_validate.c */
 int
@@ -1039,6 +1052,8 @@ bool vc4_check_tex_size(struct vc4_exec_info *exec,
 struct vc4_validated_shader_info *
 vc4_validate_shader(struct drm_gem_cma_object *shader_obj);
 
+int vc5_debugfs_gem_info(struct seq_file *m, void *data);
+
 /* vc4_perfmon.c */
 void vc4_perfmon_get(struct vc4_perfmon *perfmon);
 void vc4_perfmon_put(struct vc4_perfmon *perfmon);