]> rtime.felk.cvut.cz Git - linux-imx.git/blobdiff - drivers/gpu/drm/radeon/radeon.h
drm/radeon: cleanup VM id handling a bit
[linux-imx.git] / drivers / gpu / drm / radeon / radeon.h
index 59a15315ae9fd2551e8745736cb15ff0f5e53280..a5470e79304325d88b91218dadbb12177d1db6ed 100644 (file)
@@ -566,9 +566,6 @@ struct radeon_irq {
        atomic_t                        pflip[RADEON_MAX_CRTCS];
        wait_queue_head_t               vblank_queue;
        bool                            hpd[RADEON_MAX_HPD_PINS];
-       bool                            gui_idle;
-       bool                            gui_idle_acked;
-       wait_queue_head_t               idle_queue;
        bool                            afmt[RADEON_MAX_AFMT_BLOCKS];
        union radeon_irq_stat_regs      stat_regs;
 };
@@ -583,7 +580,6 @@ void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block);
 void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block);
 void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask);
 void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask);
-int radeon_irq_kms_wait_gui_idle(struct radeon_device *rdev);
 
 /*
  * CP & rings.
@@ -596,7 +592,7 @@ struct radeon_ib {
        uint32_t                        *ptr;
        int                             ring;
        struct radeon_fence             *fence;
-       unsigned                        vm_id;
+       struct radeon_vm                *vm;
        bool                            is_const_ib;
        struct radeon_fence             *sync_to[RADEON_NUM_RINGS];
        struct radeon_semaphore         *semaphore;
@@ -738,7 +734,8 @@ struct si_rlc {
 };
 
 int radeon_ib_get(struct radeon_device *rdev, int ring,
-                 struct radeon_ib *ib, unsigned size);
+                 struct radeon_ib *ib, struct radeon_vm *vm,
+                 unsigned size);
 void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib);
 int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
                       struct radeon_ib *const_ib);
@@ -1157,6 +1154,8 @@ struct radeon_asic {
                u32 (*get_vblank_counter)(struct radeon_device *rdev, int crtc);
                /* wait for vblank */
                void (*wait_for_vblank)(struct radeon_device *rdev, int crtc);
+               /* set backlight level */
+               void (*set_backlight_level)(struct radeon_encoder *radeon_encoder, u8 level);
        } display;
        /* copy functions for bo handling */
        struct {
@@ -1428,6 +1427,56 @@ struct r600_vram_scratch {
        u64                             gpu_addr;
 };
 
+/*
+ * ACPI
+ */
+struct radeon_atif_notification_cfg {
+       bool enabled;
+       int command_code;
+};
+
+struct radeon_atif_notifications {
+       bool display_switch;
+       bool expansion_mode_change;
+       bool thermal_state;
+       bool forced_power_state;
+       bool system_power_state;
+       bool display_conf_change;
+       bool px_gfx_switch;
+       bool brightness_change;
+       bool dgpu_display_event;
+};
+
+struct radeon_atif_functions {
+       bool system_params;
+       bool sbios_requests;
+       bool select_active_disp;
+       bool lid_state;
+       bool get_tv_standard;
+       bool set_tv_standard;
+       bool get_panel_expansion_mode;
+       bool set_panel_expansion_mode;
+       bool temperature_change;
+       bool graphics_device_types;
+};
+
+struct radeon_atif {
+       struct radeon_atif_notifications notifications;
+       struct radeon_atif_functions functions;
+       struct radeon_atif_notification_cfg notification_cfg;
+       struct radeon_encoder *encoder_for_bl;
+};
+
+struct radeon_atcs_functions {
+       bool get_ext_state;
+       bool pcie_perf_req;
+       bool pcie_dev_rdy;
+       bool pcie_bus_width;
+};
+
+struct radeon_atcs {
+       struct radeon_atcs_functions functions;
+};
 
 /*
  * Core structure, functions and helpers.
@@ -1520,6 +1569,9 @@ struct radeon_device {
        /* virtual memory */
        struct radeon_vm_manager        vm_manager;
        struct mutex                    gpu_clock_mutex;
+       /* ACPI interface */
+       struct radeon_atif              atif;
+       struct radeon_atcs              atcs;
 };
 
 int radeon_device_init(struct radeon_device *rdev,
@@ -1692,6 +1744,7 @@ void radeon_ring_write(struct radeon_ring *ring, uint32_t v);
 #define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev))
 #define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev))
 #define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc))
+#define radeon_set_backlight_level(rdev, e, l) (rdev)->asic->display.set_backlight_level((e), (l))
 #define radeon_fence_ring_emit(rdev, r, fence) (rdev)->asic->ring[(r)].emit_fence((rdev), (fence))
 #define radeon_semaphore_ring_emit(rdev, r, cp, semaphore, emit_wait) (rdev)->asic->ring[(r)].emit_semaphore((rdev), (cp), (semaphore), (emit_wait))
 #define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy.blit((rdev), (s), (d), (np), (f))
@@ -1832,12 +1885,14 @@ extern void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_displ
 extern int ni_init_microcode(struct radeon_device *rdev);
 extern int ni_mc_load_microcode(struct radeon_device *rdev);
 
-/* radeon_acpi.c */ 
-#if defined(CONFIG_ACPI) 
-extern int radeon_acpi_init(struct radeon_device *rdev); 
-#else 
-static inline int radeon_acpi_init(struct radeon_device *rdev) { return 0; } 
-#endif 
+/* radeon_acpi.c */
+#if defined(CONFIG_ACPI)
+extern int radeon_acpi_init(struct radeon_device *rdev);
+extern void radeon_acpi_fini(struct radeon_device *rdev);
+#else
+static inline int radeon_acpi_init(struct radeon_device *rdev) { return 0; }
+static inline void radeon_acpi_fini(struct radeon_device *rdev) { }
+#endif
 
 #include "radeon_object.h"