diff options
Diffstat (limited to 'drivers/gpu/drm/emgd/emgd/include/pd.h')
-rw-r--r-- | drivers/gpu/drm/emgd/emgd/include/pd.h | 766 |
1 files changed, 0 insertions, 766 deletions
diff --git a/drivers/gpu/drm/emgd/emgd/include/pd.h b/drivers/gpu/drm/emgd/emgd/include/pd.h deleted file mode 100644 index 3c3dfc0ce16c..000000000000 --- a/drivers/gpu/drm/emgd/emgd/include/pd.h +++ /dev/null @@ -1,766 +0,0 @@ -/* -*- pse-c -*- - *----------------------------------------------------------------------------- - * Filename: pd.h - * $Revision: 1.7 $ - *----------------------------------------------------------------------------- - * 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: - * - *----------------------------------------------------------------------------- - */ - -#ifndef _PD_H_ -#define _PD_H_ - -#include <igd_pd.h> -#include <igd_debug.h> - -/* PD SDK version 2 bytes, - * 1st byte is major version, - * second byte is minor version. - */ - -/* Update the version number each time there is an - * API Change or Change in data structures - */ -#define PD_SDK_VERSION 0x0300 /* PD SDK Version */ - -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *)0) -#endif -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -/* This needs to contain the unsigned long for vBIOS. */ -#ifndef BIT -#define BIT(x) (1L<<x) -#endif - -/* Macro to return: - * minimum, if the value < min value - * maximum, if the value > max value - * value, otherwise - */ -#define MINMAX(val, min, max) ((val < min) ? min : ((val > max) ? max : val)) - -#define PD_REG_LIST_END 0xFFFFFFFF -#define PD_DAB_LIST_END 0xFFFFFFFF -#define PD_TIMING_LIST_END 0xFFFF - -/* Error codes used for return values */ -#define PD_SUCCESS 0x00 /* Success */ -#define PD_ERR_NOMEM 0x01 /* Unable to allocated requested mem */ -#define PD_ERR_NODEV 0x02 /* No Device/Codec found */ -#define PD_ERR_NODIS 0x03 /* No display found */ -#define PD_ERR_INVALID_PTR 0x04 /* Invalid pointer passed */ -#define PD_ERR_NULL_PTR 0x05 /* Null ptr passed */ -#define PD_ERR_DISPLAY_TYPE 0x06 /* Unsupported display type specified */ -#define PD_ERR_NOPORT_AVAIL 0x07 /* No port available */ -#define PD_ERR_INTERNAL 0x08 /* Critical internal error */ -#define PD_ERR_INVALID_POWER 0x09 /* Invalid power state specified */ -#define PD_ERR_HAND_SHAKE 0x0A /* Magic cookie hand shake failed */ -#define PD_ERR_MODE_NOTSUPP 0x0B /* Unsupported mode */ -#define PD_ERR_I2C_READ 0x0C /* I2C read error */ -#define PD_ERR_I2C_WRITE 0x0D /* I2C write error */ -#define PD_ERR_NULL_STATE 0x0E /* Saved state is NULL */ -/* PD_ERR_NOATTR removed. Return success with 0 count instead */ -#define PD_ERR_NO_TIMINGS 0x10 /* No timing list */ -#define PD_ERR_INVALID_ATTR 0x11 /* Invalid attribute */ -#define PD_ERR_INCORR_ATTR_VALUE 0x12 /* Incorrect attr value */ -#define PD_ERR_ATTR_CANT_CHANGE 0x13 /* Attribute value cannot be changed */ -#define PD_ERR_VER_MISMATCH 0x14 /* PD SDK version mismatch */ -#define PD_ERR_UNSUCCESSFUL 0x15 /* Operation unsuccessful */ - -typedef struct _pd_reg { - unsigned long reg; - unsigned long value; -}pd_reg_t; - - -/* The following structures holds CEA EDID Extension data - * Edid and possibly display id would use this structure as - * well. PD callback would have a callback function to one the - * structure to retrieve EDID like data (ELD) - */ - - -#define CEA_IEEE_HDMI_ID 0x000C03 -/* Aspect Ratio */ -#define PD_ASPECT_RATIO_NO_DATA 0 -#define PD_ASPECT_RATIO_4_3 1 -#define PD_ASPECT_RATIO_16_9 2 -/* ELD status */ -#define ELD_AVAIL 0x01 -#define ELD_CANNED 0x02 -/* Transmitter audio charactheristic */ -#define PD_AUDIO_CHAR_AVAIL 0x10 -/* CEA data block type */ -#define CEA_VIDEO_DATA_BLOCK 0x40 -#define CEA_AUDIO_DATA_BLOCK 0x20 -#define CEA_VENDOR_DATA_BLOCK 0x60 -#define CEA_SPEAKER_DATA_BLOCK 0x80 -/* Audio block Tag Code */ -#define CEA_AUDIO_LPCM 1 -#define CEA_AUDIO_AC3 2 -#define CEA_AUDIO_MPG1 3 -#define CEA_AUDIO_MP3 4 -#define CEA_AUDIO_MPG2 5 -#define CEA_AUDIO_AAC 6 -#define CEA_AUDIO_DTS 7 -#define CEA_AUDIO_ATRAC 8 -#define CEA_AUDIO_SACD 9 -#define CEA_AUDIO_DD_PLUS 10 -#define CEA_AUDIO_DTS_HD 11 -#define CEA_AUDIO_MLP 12 -/* Pixel Replication */ -#define PIX_REPLICATION_0 1 -#define PIX_REPLICATION_1 2 -#define PIX_REPLICATION_3 4 -/* Quantization */ -#define HDMI_QUANTIZATION_RGB_256 0x00 -#define HDMI_QUANTIZATION_RGB_220 0x01 -#define HDMI_QUANTIZATION_YUV_422 0x02 -#define HDMI_QUANTIZATION_YUV_44 0x03 -/* Colorimetry */ -#define HDMI_COLORIMETRY_NODATA 0x00 -#define HDMI_COLORIMETRY_ITU601 0x01 /* SMPTE 170M, ITU601 */ -#define HDMI_COLORIMETRY_ITU709 0x02 -/* Audio CAP(48,96,192)Khz refer to audio_cap in CEA ELD extension*/ -#define CAP_48_KHZ 0 -#define CAP_96_KHZ 1 -#define CAP_192_KHZ 2 -/* Vendor Specific Data Block */ -#define VSBD_LATENCY_FIELD 8 -typedef struct _cea_audio_format_t{ - union{ - unsigned char byte1; - struct{ - unsigned char max_channels : 3; - unsigned char audio_format_code : 4; - unsigned char reserve_byte1 : 1; - }; - }; - union{ - unsigned char byte2; - struct{ - unsigned char _32khz : 1; - unsigned char _44khz : 1; - unsigned char _48khz : 1; - unsigned char _88khz : 1; - unsigned char _96khz : 1; - unsigned char _176khz : 1; - unsigned char _192khz : 1; - unsigned char reserve_byte2 : 1; - }; - }; - /* 3rd byte differs between compressed & uncompressed audio */ - union{ - unsigned char max_bitrate; - struct{ - unsigned char _16bit : 1; - unsigned char _20bit : 1; - unsigned char _24bit : 1; - unsigned char reserve_byte3 : 5; - }; - }; - -}cea_audio_format_t; - -typedef struct _speaker_allocation_data_t{ - struct{ - unsigned char rsvd : 1; - unsigned char rlc_rrc : 1; - unsigned char flc_frc : 1; - unsigned char rc : 1; - unsigned char rl_rr : 1; - unsigned char fc : 1; - unsigned char lfe : 1; - unsigned char fl_fr : 1; - }; - unsigned char reserved[2]; -}speaker_allocation_data_t; - -typedef union { - unsigned char value; - struct { - unsigned char code: 7; - unsigned char native: 1; - }; -} cea_video_blk_t; - -typedef struct _audio_capability_t{ - unsigned char max_channels; - unsigned char _20bit; - unsigned char _24bit; -}audio_capability_t; - -typedef struct _vsdb_t{ - union{ - unsigned char header; - struct{ - unsigned char vendor_block_size: 5; - unsigned char tag : 3; - }; - }; - unsigned char vendor_ieee_id[3]; - unsigned char src_phy_add[2]; - unsigned char support_ai; - unsigned char max_tmds_clck; - union{ - unsigned char latency_fields; - struct{ - unsigned char reserve : 6; - unsigned char i_latency : 1; - unsigned char p_latency : 1; - }; - }; - unsigned char p_video_latency; - unsigned char p_audio_latency; - unsigned char i_video_latency; - unsigned char i_audio_latency; - -}vsdb_t; - -typedef struct _cea_extension{ - unsigned char rev_number; - unsigned char canned_eld; - union{ - unsigned char caps; - struct{ - unsigned char total_native_format : 4; - unsigned char YCC_422 : 1; - unsigned char YCC_444 : 1; - unsigned char audio_support : 1; - unsigned char underscan_support : 1; - }; - }; - - /* Short Video Descriptor */ - int total_short_video_desc; - cea_video_blk_t *short_video_desc; - /* Short Audio Descriptor */ - int total_short_audio_desc; - cea_audio_format_t *short_audio_desc; - /* Vendor Descriptor Block */ - unsigned char *vendor_data_block; - - unsigned char audio_flag; /* Define is ELD status */ - unsigned char NPL; - unsigned char K0; - unsigned char K1; - audio_capability_t audio_cap[3]; /* Panel audio capability (48,96,192)Khz*/ - - /* AVI Info frames data */ - int pixel_rep; /* Pixel replication */ - int quantization; /* Quantization */ - int aspect_ratio; /* Aspect Ratio */ - int colorimetry; /* Colorimetry */ - int video_code; - /* Consolidate ELD information here */ - union{ - unsigned char eld_ptr[256]; - struct { - union { - unsigned char version; - struct { - unsigned char cea_ver: 3; - unsigned char eld_ver: 5; - }; - }; - union { - unsigned char capability; - struct { - unsigned char hdcp: 1; - unsigned char repeater: 1; - unsigned char _44ms: 1; - unsigned char reserved1: 5; - }; - }; - union { - unsigned short length; - struct { - unsigned short mnl: 3; - unsigned short vsdbl: 3; - unsigned short sadc: 4; - unsigned short reserved2: 6; - }; - }; - unsigned short manu_id; - unsigned short prod_id; - unsigned char LPCM_CAD[3]; /* LPCM for ELD */ - unsigned char speaker_alloc_block[3]; - vsdb_t vendor_block; /* 13 byte */ - unsigned char misc_data[229]; - }; - }; -}cea_extension_t; - -/* Following are the callback functions provided to port driver. It also - * provides a call back context. Every time port driver has to pass this - * callback context when calling a callback function. - * - * read_regs: Port driver has to pass a list of pd_reg_t's which - * it want to read. The list has to end with PD_I2C_LIST_END. - * The values read will be set to the for every list->reg, - * value will be set in list->value. - * - * Return value == 0 on success - * != 0 on failure - * - * write_regs: Port driver has to pass a list of pd_reg_t's which - * it want to write. The list has to end with PD_LIST_END. - * Caller has to provide already masked values. This callback - * function doesn't do any masking. If, port driver wants to - * write only some bits of a reg, first it has to read the - * register and then set bits and write the register. - * - * Return value == 0 on success - * != 0 on failure - */ - -#define PD_REG_I2C 0x00000001 -#define PD_REG_LPC 0x00000002 -#define PD_REG_DMA 0x00000003 -#define PD_REG_PCI 0x00000004 -#define PD_REG_MIO 0x00000005 /* MMIO 32 bits */ -#define PD_REG_PIO8 0x00000006 /* Port IO 1 byte */ -#define PD_REG_PIO16 0x00000007 /* Port IO 2 bytes */ -#define PD_REG_PIO32 0x00000008 /* Port IO 4 bytes */ -#define PD_REG_MIO8 0x00000009 /* MMIO 8 bits */ -#define PD_REG_BRIDGE_OPCODE 0x0000000D /* Host bridge read and write */ -#define PD_REG_DDC 0x0000000E /* Read the ddc */ - -typedef int (*pd_read_regs_p)(void *callback_context, pd_reg_t *list, - unsigned long type); -typedef int (*pd_write_regs_p)(void *callback_context, pd_reg_t *list, - unsigned long type); - -typedef struct _pd_callback { - void *callback_context; - pd_read_regs_p read_regs; - pd_write_regs_p write_regs; - unsigned long port_num; /* Added for SDVO port driver */ - cea_extension_t **eld; /* EDID like Data */ -}pd_callback_t; - -/* IMP NOTE: All below structures should be with same size. - * pd_attr_t : General attribute structure - * pd_range_attr_t : Range type attribute structure - * pd_list_attr_t : List type attribute - * pd_list_entry_attr_t : Entry for a list - * pd_bool_attr_t : Boolean type attribute - * pd_buffer_attr_t : Buffer type attribute - */ -typedef igd_attr_t pd_attr_t; -typedef igd_range_attr_t pd_range_attr_t; -typedef igd_list_attr_t pd_list_attr_t; -typedef igd_list_entry_attr_t pd_list_entry_attr_t; -typedef igd_bool_attr_t pd_bool_attr_t; -typedef igd_buffer_attr_t pd_buffer_attr_t; - -#define ATTR(a) ((pd_attr_t *)a) /* General attr */ -#define RATTR(a) ((pd_range_attr_t *)a) /* Range attr */ -#define LHATTR(a) ((pd_list_attr_t *)a) /* List head attr */ -#define LEATTR(a) ((pd_list_entry_attr_t *)a) /* List entry attr */ -#define BATTR(a) ((pd_bool_attr_t *)a) /* Bool attr */ -#define BUATTR(a) ((pd_buffer_attr_t *)a) /* Buffer attr */ - -/* Timing structure flag defines */ -#define PD_SCAN_INTERLACE 0x80000000 -#define PD_LINE_DOUBLE 0x40000000 -#define PD_PIXEL_DOUBLE 0x20000000 -#define PD_MODE_TEXT 0x10000000 /* VGA Text mode */ - -#define PD_HSYNC_HIGH 0x08000000 -#define PD_VSYNC_HIGH 0x04000000 -#define PD_BLANK_LOW 0x02000000 -#define PD_MODE_VESA 0x01000000 /* VGA/VESA mode number is valid */ - -#define PD_MODE_STALL 0x00800000 /* Flag to enable stall signal */ -#define PD_MODE_SCALE 0x00400000 /* Request NATIVE timings */ - -#define PD_ASPECT_16_9 0x00200000 /* 16:9 aspect ratio, otherwise it is 4:3 */ -#define PD_MODE_CEA 0x00100000 - -#define PD_MODE_DTD 0x00080000 /* Read from EDID */ -#define PD_MODE_DTD_USER 0x00040000 /* User defined timing */ -#define PD_MODE_DTD_FP_NATIVE 0x00020000 /* Native fp timing */ -#define PD_MODE_SUPPORTED 0x00010000 - -#define PD_MODE_FACTORY 0x00008000 /* Factory supported mode */ -#define PD_MODE_RB 0x00004000 /* Reduced blanking mode */ - -/* Macro to put at the end timing table */ -#define PD_TIMING_TABLE_END \ -{\ - PD_TIMING_LIST_END, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ - NULL, 0, 0\ -}\ - -/* Timing structure */ -typedef struct _pd_timing { - unsigned short width; /* width */ - unsigned short height; /* height */ - unsigned short refresh; /* refresh rate */ - unsigned long dclk; /* refresh rate dot clock in kHz */ - unsigned short htotal; /* horizontal total */ - unsigned short hblank_start; /* horizontal blank start */ - unsigned short hblank_end; /* horizontal blank end */ - unsigned short hsync_start; /* horizontal sync start */ - unsigned short hsync_end; /* horizontal sync end */ - unsigned short vtotal; /* vertical total */ - unsigned short vblank_start; /* vertical blank start */ - unsigned short vblank_end; /* vertical blank end */ - unsigned short vsync_start; /* vertical sync start */ - unsigned short vsync_end; /* vertical sync end */ - short mode_number; /* VGA or VESA mode number */ - unsigned long mode_info_flags; /* Valid Flags - - PD_SCAN_INTERLACE - - PD_LINE_DOUBLE - - PD_PIXEL_DOUBLE - - PD_HSYNC_HIGH - - PD_VSYNC_HIGH - - PD_MODE_SUPPORTED - - PD_MODE_DTD */ - unsigned short x_offset; - unsigned short y_offset; - void *extn_ptr; /* INTERNAL pointer for use by main driver only */ - unsigned short reserved_dd; /* Reserved for device dependant layer */ - unsigned short reserved_dd_ext; /* Reserved for device dependant layer */ -} pd_timing_t; - -/* Bit field flags for pd_driver_t->driver_flags */ -#define PD_FLAG_GANG_MODE 0x00000001 /* driver is running in gang mode*/ -#define PD_FLAG_CLK_SOURCE 0x00000002 /* clk source is port driver */ -#define PD_FLAG_PIPE_MASTER 0x00000004 /* master port driver */ -#define PD_FLAG_REV_DATA_ORDER 0x00000008 /* reverse data order requested */ -#define PD_FLAG_I740_DATA_ORDER 0x00000010 /* For I740 Data ordering. If this - flag isn't set, then it is - Flat panel data ordering */ -#define PD_FLAG_DUAL_DVO 0x00000020 /* Same port driver will be loaded - * on both DVOB & DVOC with same - * DAB */ -#define PD_FLAG_GANG_MODE_EVEN_ODD 0x00000040 /* pd wants gang mode in even - * pixels on one DVO port & - * odd pixels on other DVO port. - * Default is upper half pixel - * on one DVO port and lower - * half on the other DVO port. - */ -#define PD_FLAG_UP_SCALING 0x00000080 /* pd supports up-scaling */ -#define PD_FLAG_DOWN_SCALING 0x00000100 /* pd supports down-scaling */ -#define PD_FLAG_CLOCK_MASTER 0x00000200 /* clock master port driver */ -#define PD_FLAG_GANG_MODE_DVOCLKINV 0x00000400 /* GangMode DVO Clk inversion */ -#define PD_FLAG_NO_VGA_2X_IMAGE 0x00000800 /* Gang Mode operation might - * request this flag */ - -/* Flag for set_mode function */ -/* Though these are bit fields, both cannot be used at same time */ -#define PD_SET_MODE_PIPE_A 0x1 -#define PD_SET_MODE_PIPE_B 0x2 -#define PD_SET_MODE_FLAG_TEST 0x4 - -/* Flags for save and restore */ -#define PD_NO_RESTORE_FREE_STATE 0x1 - -/* Power Modes */ -#define PD_POWER_MODE_D0 0x0 -#define PD_POWER_MODE_D1 0x1 -#define PD_POWER_MODE_D2 0x2 -#define PD_POWER_MODE_D3 0x3 - -#define PD_FILE_SIZE 8 /* File name size for port driver excluding - * extension. Extension can be max of 3 chars. */ - -/* Following is the abstraction of port driver. Port driver passes this - * driver information to display driver as part of registering itself with - * display driver. pd_register(pd_driver_t *) is called from port driver - * in its init function which is called whenever port driver is loaded. - * - * Port driver provides following list of functions to display driver. - * Display driver calls these functions to do the required operations. - * - * type - supporting display type for the port driver - * - * flags - flags for the driver. And cannot be changed at runtime. - * Once these flags are passed to main driver, they will be - * used while setting the mode. - * - * context - Driver's contextual information. The driver can save - * all needed state information in this opaque pointer - * such that the driver is entirely reentrant. No writeable - * data may be saved in any non-stack variables by a driver - * therefore all necessary data must be saved in a private - * structure and stored in this pointer. This pointer is - * passed to the driver with each function call. - * - * validate - Display driver calls this function to validate the port - * driver by passing a magic cookie. Port driver does some - * magic operation and returns another cookie back to caller. - * If the returned cookie has correct value then the driver - * passes the validation, otherwise driver cannot communicate - * with display driver. - * - * open - This function is to detect for any port device (codec). - * pd_callback_t has all the required callback functions - * to do this operation. - * - * init_device - This function detects and initializes any display devices - * attached to the codec. - * - * For ex: a multi function encoder can support a FlatPanel or - * TVout display. It has to detect and check for any - * Flatpanel or TVout display device attached, then it - * initializes the display devices. - * - * pd_close - closes the display device and frees any memory allocated. - * - * set_mode - sets/tests a mode. Display (or main) driver calls this - * function to set a mode when the encoder in D3 power state. - * At this time, DVO timings are off. - * If encoder wants to run setmode in any other power state, - * then first thing it needs to do is enter into that power - * state and then do setmode. - * - * When this function returns it is expected that: - * 1. Either encoder is in D0 power state or - * it defers until post_set_mode(). - * 2. In case of external encoder (example: TVOut encoder) - * driving the reference clock, the clock is running. - * - * post_set_mode- This is called after GMCH DVO timings are on. - * This function can be null if there is nothing to do. - * This is used to do any post processing on the encoder - * after GMCH starts driving the timings. When this function - * returns it is expected that the encoder is in D0 power state. - * Parameters: - * context - port driver context - * mode - current timing - * flags - not used (for future use). - * - * set_attrs - to set provided list of attributes. - * - * get_attrs - to get list of attributes. - * - * get_timing_list - returns the list of supported modes for the current - * attributes. For example if the TVFormat is NTSC, this - * function will return only the modes supported for NTSC. - * - * set_power - to set the power state of the display device. - * - * get_power - to get the current power state of the display device. - * - * pd_save - to save the current state of the registers. - * - returns the current state in the double pointer 'state'. - * - * pd_restore - to restore to the passed state. This functions frees the - * resources allocated that state. - * - pass the previously saved state in 'state'. - * - * If PD_NO_RESTORE_FREE_STATE is set, then it just frees - * the resources without restoring the state. - * - * pd_get_port_status - to get the status of port/display - * - * - * All functions return value: - * == 0 - if success - * != 0 - if failure - */ - - -/* Note on version AA.BB.CC.DD - * AA - Major version - * BB - Minor version - * CC - Patch version if any - * DD - Bug fixes if any - * - * 01.00.00.00 is the first initial major version */ -typedef struct _pd_version { - unsigned char major; - unsigned char minor; - unsigned char patch; - unsigned char bug_fix; -} pd_version_t; - - -typedef enum { - PD_DISP_STATUS_DETACHED = 0, /* Display is not connected */ - PD_DISP_STATUS_ATTACHED, /* Display is connected */ - PD_DISP_STATUS_UNKNOWN /* Unable to determine */ -} pd_display_status_t; - -/* Port/Display information */ -typedef struct _pd_port_status { - pd_display_status_t connected; /* Display status */ - unsigned long display_type; /* Type of display, if connected */ -} pd_port_status_t; - -typedef struct _pd_driver { - unsigned long pd_sdk_version; /* PD SDK version - interface ver */ - char name[PD_NAME_SIZE]; /* Descriptive name of port driver */ - char num_devices; /* Number of devices it is driving */ - pd_version_t *version; /* Driver version */ - unsigned long type; - unsigned long flags; - unsigned long *dab_list; /* PD_DAB_LIST_END terminated list */ - unsigned long i2c_speed; /* Encoder I2C speed in KHz */ - unsigned long (*validate)(unsigned long cookie); - int (*open) (pd_callback_t *callback, void **context); - int (*init_device)(void *context); - int (*pd_close) (void *context); - int (*set_mode) (void *context, pd_timing_t *mode, unsigned long flags); - int (*post_set_mode)(void *context, pd_timing_t *mode, unsigned long flags); - int (*set_attrs) (void *context, unsigned long num, pd_attr_t *list); - int (*get_attrs) (void *context, unsigned long *num, pd_attr_t **list); - int (*get_timing_list)(void*context,pd_timing_t*in_list,pd_timing_t**list); - int (*set_power) (void *context, unsigned long state); - int (*get_power) (void *context, unsigned long *state); - int (*pd_save) (void *context, void **state, unsigned long flags); - int (*pd_restore) (void *context, void *state, unsigned long flags); - int (*pd_get_port_status) (void *context, pd_port_status_t *port_status); -} pd_driver_t; - -/* Mode filter helper function for port drivers */ -/* Structure representing encoder capabilities for mode filtering */ -typedef struct _pd_dvo_info { - unsigned long min_dclk; /* Min clock */ - unsigned long max_dclk; /* Max clock */ - unsigned char upscale; /* Is upscalable? */ - unsigned char downscale; /* Is downscalable? */ - unsigned short upscale_min_width; /* Min upscale width */ - unsigned short upscale_min_height; /* Min upscale height */ - unsigned short downscale_max_width; /* Max downscale width */ - unsigned short downscale_max_height; /* Max downscale height */ -} pd_dvo_info_t; - -typedef struct _pd_display_info { - unsigned char panel_fit; /* Incoming */ - unsigned char fixed_res; /* Outgoing */ - unsigned short width; /* Outgoing */ - unsigned short height; /* Outgoing */ - pd_timing_t *native_dtd; /* Outgoing */ -} pd_display_info_t; - -/* All following functions are provided to port drivers as a binary file. - * - * pd_register: This function is called by port driver to register with - * display driver. It passes its driver structure to display - * driver. - * - * pd_malloc: This function is used to allocate any dynamic memory required - * in port driver. Port driver will pass the size of the memory - * it is requesting in bytes. - * - * Return value == pointer to the allocated memory on success - * == NULL if failed to allocated the memory - * - * pd_memset: This function is used to set the passed byte in memory - * for size bytes. - * - * pd_memcpy: This function is used to copy size bytes from src pointer to - * dest pointer. - * - * free: This function is used to free the memory previously allocated - * using malloc callback function. - * - * usleep: This function is used to get any delay in port driver. - * 'usec' is specified in micro seconds. - * - * No return value. - * ui_usleep: This function is used to get any delay in port driver uniterrupted. - * 'usec' is specified in micro seconds. - * - * No return value. - * - * printf: This function is used to do any debug prints for port driver. - * This has exactly the same syntax and usage of standard - * printf in 'C'. - * - * strcpy: This function is used to copy src string into dest string. - * This has exactly the same syntax and usage of standard - * strcpy in 'C'. - * - * filter: This function is to filter the incoming mode list based on - * dvo_info. Memory is allocated for outgoing list. No changes - * to in_list. - */ -int pd_register(void *handle, pd_driver_t *driver); -void *pd_malloc(unsigned long size); -void *pd_memset(void *address, int c, unsigned long size); -void *pd_memcpy(void *dst, void *src, unsigned long size); -void pd_free (void *address); - -void pd_usleep(unsigned long usec); -void pd_ui_usleep(unsigned long usec); -char *pd_strcpy(char *dest, char const *src); -int *pd_printf(const char *format, ...); -int pd_check_attr(pd_attr_t *curr, pd_attr_t *in); -/* Mode filter helper function for port drivers */ -int pd_filter_timings(void *context, pd_timing_t *inlist, pd_timing_t **olist, - pd_dvo_info_t *dvo_info, pd_display_info_t *display_info); - -/* pd_get_attr() : To return the request attr from the list. - * In case of 'attr_id' is a list type attribute, then caller - * can request either LIST head itself or list entry for that - * attribute. */ -#define PD_GET_ATTR_LIST 0x0001 -#define PD_GET_ATTR_LIST_ENTRY 0x0002 -pd_attr_t *pd_get_attr(pd_attr_t *attr_list, unsigned long num_attrs, - unsigned long attr_id, unsigned long flag); - -/* -// Typedefinitions -typedef int (*pd_register_p) (void *handle, pd_driver_t *driver); -typedef void *(*pd_malloc_p)(unsigned long size); -typedef void *(*pd_memset_p)(void *address, int c, unsigned long size); -typedef void *(*pd_memcpy_p)(void *dst, void *src, unsigned long size); -typedef void (*pd_free_p) (void *address); -typedef void (*pd_usleep_p)(unsigned long usec); -typedef char *(*pd_strcpy_p)(char *dest, char const *src); -typedef int *(*pd_printf_p)(const char *format, ...); -typedef int (*pd_check_attr_p)(pd_attr_t *curr, pd_attr_t *in); -typedef pd_attr_t *(*pd_get_attr_p)(pd_attr_t *attr_list, - unsigned long num_attrs, unsigned long attr_id, unsigned long flag); -typedef emgd_debug_t *(*pd_get_emgd_debug_p)( void ); -typedef unsigned long *(*pd_get_dropped_debug_messages_p)( void ); -typedef void *(*pd_get_debug_log_mutex_p)( void ); - -// Mode filter helper function for port drivers -typedef int (*pd_filter_timings_p)(void *context, pd_timing_t *inlist, - pd_timing_t **olist, pd_dvo_info_t *dvo_info, - pd_display_info_t *display_info); -*/ -#endif /* _PD_H_ */ - -/*---------------------------------------------------------------------------- - * File Revision History - * $Id: pd.h,v 1.7 2010/07/23 16:54:50 bpaauwe Exp $ - * $Source: /nfs/fm/proj/eia/cvsroot/koheo/linux/egd_drm/emgd/include/pd.h,v $ - *---------------------------------------------------------------------------- - */ |