aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/emgd/emgd/display/mode/cmn/mode_dispatch.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/emgd/emgd/display/mode/cmn/mode_dispatch.h')
-rw-r--r--drivers/gpu/drm/emgd/emgd/display/mode/cmn/mode_dispatch.h328
1 files changed, 0 insertions, 328 deletions
diff --git a/drivers/gpu/drm/emgd/emgd/display/mode/cmn/mode_dispatch.h b/drivers/gpu/drm/emgd/emgd/display/mode/cmn/mode_dispatch.h
deleted file mode 100644
index 0d2d99573208..000000000000
--- a/drivers/gpu/drm/emgd/emgd/display/mode/cmn/mode_dispatch.h
+++ /dev/null
@@ -1,328 +0,0 @@
-/* -*- pse-c -*-
- *-----------------------------------------------------------------------------
- * Filename: mode_dispatch.h
- * $Revision: 1.9 $
- *-----------------------------------------------------------------------------
- * Copyright © 2002-2010, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- *-----------------------------------------------------------------------------
- * Description:
- * This header file defined the interface between the DI layer of the mode
- * module and the DD layer. Additionally it defines the interface between
- * the different DI object files within the mode module.
- *-----------------------------------------------------------------------------
- */
-
-#ifndef _MODE_DISPATCH_H
-#define _MODE_DISPATCH_H
-
-#include <mode.h>
-
-typedef struct _mode_full_dispatch {
- int (*alter_cursor_pos)(igd_display_h display_handle,
- igd_cursor_info_t *cursor_info);
- int (*set_palette_entries)(igd_display_h display_handle,
- unsigned long *palette_colors, unsigned int start_index,
- unsigned int count);
- int (*wait_vsync)(igd_display_h display_handle);
- int (*query_in_vblank)(igd_display_h display_handle);
- int (*get_scanline)(igd_display_h display_handle, int *scanline);
- int (*set_display_base)(igd_display_context_t *display,
- igd_framebuffer_info_t *fb, unsigned long *x, unsigned long *y);
- void (*program_cursor)(igd_display_context_t *display,
- unsigned long status);
- int (*set_color_correct)(igd_display_context_t *display);
- int (*get_surface)(igd_display_h display_handle, igd_buffertype_t type,
- igd_surface_t *surface, igd_appcontext_h appcontext);
- int (*set_surface)(igd_display_h display_handle, int priority,
- igd_buffertype_t type, igd_surface_t *surface,
- igd_appcontext_h appcontext, unsigned long flags);
- int (*query_event)(igd_display_h display_handle, igd_event_t event,
- unsigned long *status);
-
- int (*set_flip_pending)(unsigned char *mmio,
- unsigned long pipe_status_reg);
- int (*check_flip_pending)(unsigned char *mmio,
- unsigned long pipe_status_reg);
-
- int (*get_plane_info)(void); /* dispatch routines that gets fw info */
- int (*get_pipe_info)(igd_display_h *display );
- int (*get_port_info)(void);
- /* Implementation of "public" igd_dispatch_t.register_vblank_callback(). */
- emgd_vblank_callback_h (*register_vblank_callback)(
- emgd_process_vblank_interrupt_t callback,
- void *priv,
- unsigned long port_number);
- /* Implementation of "public" igd_dispatch_t.unregister_vblank_callback().
- */
- void (*unregister_vblank_callback)(
- emgd_vblank_callback_h callback_h);
- /* Implementation of "public" igd_dispatch_t.enable_vblank_callback(). */
- int (*enable_vblank_callback)(emgd_vblank_callback_h callback_h);
- /* Implementation of "public" igd_dispatch_t.disable_vblank_callback(). */
- void (*disable_vblank_callback)(
- emgd_vblank_callback_h callback_h);
- /*!
- * Implementation of "protected" function (i.e. for use within the mode
- * module) to request VBlank interrupts for a particular purpose & port.
- * Based upon the outstanding requests, this function decides whether to
- * touch registers, register the interrupt handler, etc.
- *
- * @param request_for (IN). A bit that identifies a who and what (e.g.
- * VBINT_REQUEST(VBINT_WAIT, VBINT_PORT4)).
- *
- * @param mmio (IN). A pointer to the start of memory-mapped IO, to access
- * registers.
- *
- * @return Zero for success, non-zero for failure.
- */
- int (*request_vblanks)(unsigned long request_for, unsigned char *mmio);
- /*!
- * Implementation of "protected" function (i.e. for use within the mode
- * module) to end a previous request VBlank interrupts for a particular
- * purpose & port. Based upon the outstanding requests, this function
- * decides whether to touch registers, unregister the interrupt handler,
- * etc.
- *
- * @param request_for (IN). A bit that identifies a who and what (e.g.
- * VBINT_REQUEST(VBINT_WAIT, VBINT_PORT4)).
- *
- * @param mmio (IN). A pointer to the start of memory-mapped IO, to access
- * registers.
- *
- * @return Zero for success, non-zero for failure.
- */
- int (*end_request)(unsigned long request_for, unsigned char *mmio);
- /*!
- * Implementation of "protected" function (i.e. for use within the mode
- * module) to check whether a requested VBlank interrupt occured.
- *
- * @param request_for (IN). A bit that identifies a who and what (e.g.
- * VBINT_REQUEST(VBINT_WAIT, VBINT_PORT4)).
- *
- * @return Non-zero if the requested VBlank occured, zero if not.
- */
- int (*vblank_occured)(unsigned long request_for);
-} mode_full_dispatch_t;
-
-typedef struct _mode_dispatch {
- int (*set_palette_entry)(igd_display_h display_handle,
- unsigned long palette_entry, unsigned long palette_color);
- int (*get_palette_entry)(igd_display_h display_handle,
- unsigned long palette_entry, unsigned long *palette_color);
- int (*wait_vblank)(igd_display_h display_handle);
- void (*program_plane)(igd_display_context_t *display,
- unsigned long status);
- void (*program_pipe)(igd_display_context_t *display, unsigned long status);
- int (*program_port)(igd_display_context_t *display,
- unsigned short port_number, unsigned long status);
- int (*post_program_port)(igd_display_context_t *display,
- unsigned short port_number, unsigned long status);
- int (*program_clock)(igd_display_context_t *display,
- igd_clock_t *clock, unsigned long dclk);
- void (*reset_plane_pipe_ports)(igd_context_t *context);
- unsigned long (*get_gpio_sets)(unsigned long **);
- void (*filter_modes)(igd_context_t *context,
- igd_display_port_t *port, pd_timing_t *in_list);
- int (*check_display)(igd_display_context_t *display,
- unsigned short port_number, unsigned long status);
- int (*get_dd_timing)(igd_display_context_t *display,
- pd_timing_t *in_list);
- int (*check_port_supported)(void *port_tmp);
- int (*get_refresh_in_border)(pd_timing_t *in_list);
- mode_full_dispatch_t *full;
-} mode_dispatch_t;
-
-
-/*
- * Firmware(VBIOS or EFI Video Driver) related information
- * that needs to be populated before the driver re-programs
- * the Hardware Registers. This information is needed to provide
- * seamless transition from firmware to driver.
- */
-typedef struct _fw_info {
-
- /* TODO: Fill this up */
- unsigned long fw_dc; /* The dsp module already has this value */
-
- /* Plane information */
- igd_framebuffer_info_t fb_info[2]; /* one for each plane */
-
- /* Pipe information */
- igd_display_info_t timing_arr[2]; /* one for each pipe */
-
- /* Port information */
-
- /* if the plane registers needs an update, set this field to 1 */
- int program_plane;
-
-} fw_info_t;
-
-typedef struct _mode_context {
- /*
- * All of the below values will be initialized in mode module
- * init function mode_init().
- */
- unsigned long first_alter;
- mode_dispatch_t *dispatch;
-
- igd_context_t *context;
- unsigned long display_color;
- fw_info_t* fw_info; /* This needs to be zero for VBIOS */
-
- /* quickboot options */
- unsigned long quickboot;
- int seamless;
- unsigned long video_input;
- int splash;
-} mode_context_t;
-
-extern int full_mode_init(igd_context_t *context,
- mode_context_t *mode_context);
-
-extern int full_mode_query(igd_driver_h driver_handle, unsigned long dc,
- igd_display_info_t **mode_list, igd_display_port_t *port);
-
-extern void full_clear_fb(mode_context_t *mode_context,
- igd_framebuffer_info_t *fb_info,
- unsigned char *fb);
-
-extern int query_seamless(unsigned long dc,
- int index,
- igd_timing_info_t *pt,
- igd_framebuffer_info_t *pf,
- unsigned long flags);
-
-extern void swap_fb_cursor( void );
-
-extern int set_color_correct(igd_display_context_t *display,
- const igd_range_attr_t *attr_to_set);
-
-extern mode_context_t mode_context[];
-
-/*
- * NOTE: Some of these externs are declared with the struct name because the
- * contents of that struct are unavailable at the DI layer. The symbol
- * is used as the generic mode_dispatch_t which is a subset.
- */
-
-
-extern mode_dispatch_t mode_dispatch_plb;
-extern mode_dispatch_t mode_dispatch_tnc;
-
-
-/*******************************************************************************
- *
- * The following macros provide part of the "protected" interface to support
- * mode-module "requests" for VBlank interrupts.
- *
- * Requests are for a "who" and "what." The "who" is what type of code is
- * making the request, and the "what" is the port that the requestor wants to
- * know about VBlanks for. Here is additional information:
- *
- * - Who - which software is asking:
- * - WAIT - The code that implements the wait_vblank() function pointer.
- * When interrupts are requested for WAIT, the interrupt handler
- * makes note of when VBlanks occur. The WAIT code queries (polls)
- * whether a VBlank has occured since its request.
- * - FLIP - The code that implements the {check|set}_flip_pending() function
- * pointers. When interrupts are requested for FLIP, the interrupt
- * handler makes note of when VBlanks occur. The FLIP code queries
- * (polls) whether a VBlank has occured since its request.
- * - CB - The non-HAL code that registers a VBlank interrupt "callback"
- * (CB). When interrupts are requested for CB, the interrupt
- * handler calls the callback when VBlanks occur.
- *
- * - What - which port (Note: space is reserve for 4 ports, even only two exist
- * at this time):
- * - PORT2 (Port 2, Pipe A, SDVO-B)
- * - PORT4 (Port 4, Pipe B, Int-LVDS)
- *
- * Note: internally, the requests are stored in bits within an unsigned long.
- * This helps explain the way the macros are implemented:
- *
- ******************************************************************************/
-
-/* A requestor uses this macro to generate the bit request for who and what: */
-#define VBINT_REQUEST(who,port) ((port) << (who))
-
-/* A requestor uses one of these macros to specify a what (i.e. port): */
-#define VBINT_PORT2 0x01
-#define VBINT_PORT4 0x02
-/* Note: the following 2 macros reserve space for 2 more (future) ports: */
-#define VBINT_PORTn 0x04
-#define VBINT_PORTm 0x08
-
-/* A requestor uses one of these macros to identify itself (the what): */
-/* Note: Each "who" has 4 bits (for 4 ports); the value is a shift amount: */
-#define VBINT_WAIT 0
-#define VBINT_FLIP 4
-#define VBINT_CB 8
-
-
-/*******************************************************************************
- *
- * The following macros provide part of the "private" interface to support
- * mode-module "requests" for VBlank interrupts. The VBlank-interrupt code
- * uses these macros to manage requests, and to record VBlanks that occur
- * (a.k.a. "answers").
- *
- * Other parts of the "mode" module should not use these macros.
- *
- ******************************************************************************/
-
-/* Answers for a request are stored in bits to the left of the request bits: */
-#define VBINT_ANSWER_SHIFT 12
-#define VBINT_ANSWER(who,port) (((port) << (who)) << VBINT_ANSWER_SHIFT)
-#define VBINT_ANSWER4_REQUEST(request) ((request) << VBINT_ANSWER_SHIFT)
-
-/* The following special bit is used by disable_vblank_interrupts_{plb|tnc}() to
- * disable the hardware, but not unregister the never-registered interrupt
- * handler:
- */
-#define VBLANK_DISABLE_HW_ONLY BIT31
-
-/* The following macros aggregate all of the who's can enable interrupts for a
- * given port:
- */
-#define VBLANK_INT4_PORT2 (VBINT_REQUEST(VBINT_WAIT, VBINT_PORT2) | \
- VBINT_REQUEST(VBINT_FLIP, VBINT_PORT2) | \
- VBINT_REQUEST(VBINT_CB, VBINT_PORT2))
-#define VBLANK_INT4_PORT4 (VBINT_REQUEST(VBINT_WAIT, VBINT_PORT4) | \
- VBINT_REQUEST(VBINT_FLIP, VBINT_PORT4) | \
- VBINT_REQUEST(VBINT_CB, VBINT_PORT4))
-
-/* The following macros aggregate all of the whats (ports) that can enable
- * interrupts for a given who (they aren't used, but do help document that
- * 4 bits are reserved for each "who"):
- */
-/* FIXME -- KEEP THESE??? */
-#define VBLANK_INT4_WAIT 0x0000000f
-#define VBLANK_INT4_FLIP 0x000000f0
-#define VBLANK_INT4_CB 0x00000f00
-
-/* The following macros tell whether interrupts are enabled, either in general,
- * or for a certain port.
- */
-#define VBLANK_INTERRUPTS_ENABLED \
- (vblank_interrupt_state & (VBLANK_INT4_PORT2 | VBLANK_INT4_PORT4 | \
- VBLANK_DISABLE_HW_ONLY))
-#define VBLANK_INTERRUPTS_ENABLED4_PORT2 \
- (vblank_interrupt_state & VBLANK_INT4_PORT2)
-#define VBLANK_INTERRUPTS_ENABLED4_PORT4 \
- (vblank_interrupt_state & VBLANK_INT4_PORT4)
-
-#endif