Added very basic VESA driver. Will be improved in the future (right now
it doesn't really do anything, it just passes the initial frame buffer on to the app_server). While it seems to work on real hardware (if you set the video mode to 640x480x32, app_server restriction), under Bochs, the app_server crashes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12273 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Copyright 2005, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef UTILITY_H
|
||||
#define UTILITY_H
|
||||
|
||||
#define ROUND_TO_PAGE_SIZE(x) (((x) + (B_PAGE_SIZE) - 1) & ~((B_PAGE_SIZE) - 1))
|
||||
|
||||
#endif /* UTILITY_H */
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright 2005, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef VESA_INFO_H
|
||||
#define VESA_INFO_H
|
||||
|
||||
|
||||
#include <Drivers.h>
|
||||
#include <Accelerant.h>
|
||||
#include <PCI.h>
|
||||
|
||||
|
||||
#define DEVICE_NAME "vesa"
|
||||
#define VESA_ACCELERANT_NAME "vesa.accelerant"
|
||||
|
||||
|
||||
struct vesa_shared_info {
|
||||
int32 type;
|
||||
area_id mode_list_area; // area containing display mode list
|
||||
uint32 mode_count;
|
||||
display_mode current_mode;
|
||||
uint32 bytes_per_row;
|
||||
|
||||
area_id registers_area; // area of memory mapped registers
|
||||
area_id frame_buffer_area; // area of frame buffer
|
||||
uint8 *frame_buffer; // pointer to frame buffer (visible by all apps!)
|
||||
uint8 *physical_frame_buffer;
|
||||
};
|
||||
|
||||
struct vesa_info {
|
||||
uint32 cookie_magic;
|
||||
int32 open_count;
|
||||
int32 id;
|
||||
pci_info *pci;
|
||||
uint8 *registers;
|
||||
area_id registers_area;
|
||||
struct vesa_shared_info *shared_info;
|
||||
area_id shared_area;
|
||||
uint8 *frame_buffer;
|
||||
area_id frame_buffer_area;
|
||||
uint8 *reloc_io;
|
||||
area_id reloc_io_area;
|
||||
};
|
||||
|
||||
//----------------- ioctl() interface ----------------
|
||||
|
||||
// list ioctls
|
||||
enum {
|
||||
VESA_GET_PRIVATE_DATA = B_DEVICE_OP_CODES_END + 1,
|
||||
VESA_GET_DEVICE_NAME,
|
||||
};
|
||||
|
||||
//----------------------------------------------------------
|
||||
|
||||
extern status_t vesa_init(vesa_info &info);
|
||||
extern void vesa_uninit(vesa_info &info);
|
||||
|
||||
#endif /* VESA_INFO_H */
|
||||
Reference in New Issue
Block a user