117 lines
2.8 KiB
C
117 lines
2.8 KiB
C
/*
|
|
* Copyright (C) 2007-2015 Apple Inc. All rights reserved.
|
|
* Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
|
|
*
|
|
* This document is the property of Apple Inc.
|
|
* It is considered confidential and proprietary.
|
|
*
|
|
* This document may not be reproduced or transmitted in any form,
|
|
* in whole or in part, without the express written permission of
|
|
* Apple Inc.
|
|
*/
|
|
#ifndef __DRIVERS_DISPLAY_H
|
|
#define __DRIVERS_DISPLAY_H
|
|
|
|
#include <sys/types.h>
|
|
#include <lib/paint.h>
|
|
|
|
__BEGIN_DECLS
|
|
|
|
struct display_window {
|
|
bool active;
|
|
enum colorspace cs;
|
|
uint32_t depth;
|
|
uint32_t pos_x, pos_y;
|
|
uint32_t width, height;
|
|
uint32_t stride;
|
|
struct canvas c;
|
|
void *ptr; // device specific data
|
|
};
|
|
|
|
#define kGammaChannelBufferSize (72)
|
|
#define kGammaBufferSize (kGammaChannelBufferSize * 3)
|
|
|
|
struct display_gamma_table {
|
|
uint32_t display_id;
|
|
uint32_t display_id_mask;
|
|
uint8_t display_gamma_data[kGammaBufferSize];
|
|
};
|
|
typedef struct display_gamma_table display_gamma_table;
|
|
|
|
struct syscfg_glcl {
|
|
uint8_t minor_vers;
|
|
uint8_t major_vers;
|
|
uint8_t reserved[2];
|
|
uint8_t gamma_data[kGammaBufferSize];
|
|
};
|
|
|
|
int display_init(void);
|
|
int display_quiesce(bool clear_display);
|
|
void display_clear(void);
|
|
|
|
bool display_get_enable(void);
|
|
void display_set_enable(bool enable, uint32_t *color);
|
|
bool display_set_rotation(bool rotate180);
|
|
void display_delay_frames(uint32_t frames);
|
|
void display_set_background_color(uint32_t color);
|
|
|
|
struct display_window *display_create_window(uint32_t x, uint32_t y, uint32_t width, uint32_t height, enum colorspace color);
|
|
void display_destroy_window(struct display_window *win);
|
|
void display_move_window(struct display_window *win, uint32_t x, uint32_t y);
|
|
void display_activate_window(struct display_window *win);
|
|
void display_deactivate_window(struct display_window *win);
|
|
void display_set_window_fb(struct display_window *win, void *fb);
|
|
|
|
struct display_info {
|
|
addr_t framebuffer;
|
|
uint32_t width;
|
|
uint32_t height;
|
|
uint32_t stride;
|
|
uint32_t depth;
|
|
};
|
|
|
|
/* after the fact get the information about the current display */
|
|
int display_get_info(struct display_info *info);
|
|
|
|
struct display_timing
|
|
{
|
|
const char *display_name;
|
|
|
|
uint32_t host_clock_id;
|
|
uint32_t pixel_clock;
|
|
|
|
uint32_t dot_pitch;
|
|
|
|
uint32_t h_active;
|
|
uint32_t h_back_porch;
|
|
uint32_t h_front_porch;
|
|
uint32_t h_pulse_width;
|
|
uint32_t v_active;
|
|
uint32_t v_back_porch;
|
|
uint32_t v_front_porch;
|
|
uint32_t v_pulse_width;
|
|
|
|
bool neg_vclk;
|
|
bool neg_hsync;
|
|
bool neg_vsync;
|
|
bool neg_vden;
|
|
|
|
uint32_t display_depth;
|
|
uint32_t display_type;
|
|
void *display_config;
|
|
};
|
|
|
|
#define DISPLAY_TYPE_DUMB (0)
|
|
#define DISPLAY_TYPE_SMART (1)
|
|
#define DISPLAY_TYPE_MERLOT (2)
|
|
#define DISPLAY_TYPE_PINOT (3)
|
|
#define DISPLAY_TYPE_TMDS (4)
|
|
#define DISPLAY_TYPE_DP (5)
|
|
#define DISPLAY_TYPE_EDP (6)
|
|
#define DISPLAY_TYPE_HDMI (7)
|
|
#define DISPLAY_TYPE_SUMMIT (8)
|
|
|
|
__END_DECLS
|
|
|
|
#endif /* __DRIVERS_DISPLAY_H */
|