diff --git a/headers/private/graphics/s3savage/DriverInterface.h b/headers/private/graphics/s3savage/DriverInterface.h index 575870c4e9..6970347367 100644 --- a/headers/private/graphics/s3savage/DriverInterface.h +++ b/headers/private/graphics/s3savage/DriverInterface.h @@ -5,10 +5,10 @@ Other authors: Gerald Zajac 2006-2007 */ - #ifndef DRIVERINTERFACE_H #define DRIVERINTERFACE_H + #include #include #include @@ -23,11 +23,14 @@ extern "C" { #endif +#if 1 /* DEBUG */ +# define TRACE_S3SAVAGE + // turns on debug output +#endif #define NUM_ELEMENTS(a) ((int)(sizeof(a) / sizeof(a[0]))) // for computing number of elements in an array -typedef struct -{ +typedef struct { sem_id sem; int32 ben; } benaphore; @@ -41,8 +44,7 @@ typedef struct #define SAVAGE_PRIVATE_DATA_MAGIC 0x5791 // a private driver rev, of sorts -enum -{ +enum { SAVAGE_GET_PRIVATE_DATA = B_DEVICE_OP_CODES_END + 1, SAVAGE_GET_PCI, SAVAGE_SET_PCI, @@ -54,8 +56,7 @@ enum // Chip tags. These are used to group the adapters into related // families. See table SavageChipsetTable in driver.c -enum S3ChipTags -{ +enum S3ChipTags { S3_UNKNOWN = 0, S3_SAVAGE3D, S3_SAVAGE_MX, @@ -111,9 +112,7 @@ typedef union _BMPDESC { } BMPDESC; - -typedef struct -{ +typedef struct { // Device ID info. uint16 vendorID; // PCI vendor ID, from pci_info uint16 deviceID; // PCI device ID, from pci_info @@ -147,8 +146,7 @@ typedef struct int32 flags; // Cursor info. - struct - { + struct { uint16 hot_x; // Cursor hot spot. The top left corner of the cursor uint16 hot_y; // is 0,0 uint16 x; // The location of the cursor hot spot on the @@ -164,8 +162,7 @@ typedef struct frame_buffer_config fbc; // frame buffer addresses and bytes_per_row // Acceleration engine. - struct - { + struct { uint64 count; // last fifo slot used uint64 lastIdle; // last fifo slot we *know* the engine was idle after benaphore lock; // for serializing access to the acceleration engine @@ -202,8 +199,7 @@ typedef struct // Read or write a value in PCI configuration space -typedef struct -{ +typedef struct { uint32 magic; // magic number to make sure the caller groks us uint32 offset; // Offset to read/write uint32 size; // Number of bytes to transfer @@ -212,16 +208,14 @@ typedef struct // Set some boolean condition (like enabling or disabling interrupts) -typedef struct -{ +typedef struct { uint32 magic; // magic number to make sure the caller groks us bool bEnable; // state to set } SavageSetBoolState; // Retrieve the area_id of the kernel/accelerant shared info -typedef struct -{ +typedef struct { uint32 magic; // magic number to make sure the caller groks us area_id sharedInfoArea; // ID of area containing shared information } SavageGetPrivateData; @@ -229,8 +223,7 @@ typedef struct // Retrieve the device name. Usefull for when we have a file handle, but want // to know the device name (like when we are cloning the accelerant) -typedef struct -{ +typedef struct { uint32 magic; // magic number to make sure the caller groks us char *name; // The name of the device, less the /dev root } SavageDeviceName; @@ -240,5 +233,4 @@ typedef struct } #endif - -#endif +#endif /* DRIVERINTERFACE_H */ diff --git a/src/add-ons/accelerants/s3savage/GlobalData.h b/src/add-ons/accelerants/s3savage/GlobalData.h index c7df830178..63b5331d15 100644 --- a/src/add-ons/accelerants/s3savage/GlobalData.h +++ b/src/add-ons/accelerants/s3savage/GlobalData.h @@ -23,10 +23,10 @@ extern bool bAccelerantIsClone;// true if this is a cloned accelerant void TraceLog(const char* fmt, ...); -#ifdef DEBUG -#define TRACE(a) TraceLog a +#ifdef TRACE_S3SAVAGE +# define TRACE(a) TraceLog a #else -#define TRACE(a) +# define TRACE(a) #endif #endif // GLOBALDATA_H diff --git a/src/add-ons/accelerants/s3savage/InitAccelerant.c b/src/add-ons/accelerants/s3savage/InitAccelerant.c index 4905e55a56..e070680ae8 100644 --- a/src/add-ons/accelerants/s3savage/InitAccelerant.c +++ b/src/add-ons/accelerants/s3savage/InitAccelerant.c @@ -269,7 +269,6 @@ UNINIT_ACCELERANT(void) } - // Kernel function dprintf() is not available in user space; however, // _sPrintf performs the same function in user space but is undefined // in the OS header files. Thus, it is defined here. diff --git a/src/add-ons/kernel/drivers/graphics/s3savage/driver.c b/src/add-ons/kernel/drivers/graphics/s3savage/driver.c index 38e7331b9f..5d9cb6ec67 100644 --- a/src/add-ons/kernel/drivers/graphics/s3savage/driver.c +++ b/src/add-ons/kernel/drivers/graphics/s3savage/driver.c @@ -20,11 +20,10 @@ #include - -#ifdef DEBUG -#define TRACE(a) TraceLog a +#ifdef TRACE_S3SAVAGE +# define TRACE(a) TraceLog a #else -#define TRACE(a) +# define TRACE(a) #endif @@ -46,8 +45,7 @@ int32 api_version = B_CUR_DRIVER_API_VERSION; /* these structures are private to the kernel driver */ -typedef struct -{ +typedef struct { uint16 chipID; // PCI device id of the chipset uint16 chipset; // assigned chipset family identifier char* chipName; // user recognizable name for chipset (must be < 32 chars) @@ -55,8 +53,7 @@ typedef struct /* This table maps a PCI device ID to a chipset family identifier and the chipset name. */ -static ChipInfo SavageChipTable[] = -{ +static ChipInfo SavageChipTable[] = { { 0x8a20, S3_SAVAGE3D, "Savage3D" }, { 0x8a21, S3_SAVAGE3D, "Savage3D-MV" }, { 0x8a22, S3_SAVAGE4, "Savage4" }, @@ -86,19 +83,16 @@ static ChipInfo SavageChipTable[] = #define VENDOR_ID_SAVAGE 0x5333 /* S3 Savage vendor ID */ -static struct -{ +static struct { uint16 vendorID; ChipInfo* devices; -} SupportedDevices[] = -{ +} SupportedDevices[] = { { VENDOR_ID_SAVAGE, SavageChipTable }, { 0x0000, NULL } }; -typedef struct -{ +typedef struct { uint32 is_open; /* a count of how many times the devices has been opened */ area_id sharedArea; /* the area shared between the driver and all of the accelerants */ SharedInfo *si; /* a pointer to the shared area, for convenience */ @@ -109,8 +103,7 @@ typedef struct } DeviceInfo; -typedef struct -{ +typedef struct { uint32 count; /* number of devices actually found */ benaphore kernel; /* for serializing opens/closes */ char *deviceNames[MAX_DEVICES+1]; /* device name pointer storage */ @@ -146,11 +139,11 @@ static device_hooks graphics_device_hooks = NULL }; -#ifdef DEBUG +#ifdef TRACE_S3SAVAGE static void TraceLog(const char *fmt, ...) { - char string[1024]; + char string[1024]; va_list args; strcpy(string, "savage: "); @@ -521,8 +514,11 @@ exit0: } +// #pragma mark - Device Hooks + + static status_t -open_hook (const char* name, uint32 flags, void** cookie) +open_hook(const char* name, uint32 flags, void** cookie) { int32 index = 0; DeviceInfo *di; @@ -642,9 +638,6 @@ done: } -/* ---------- - read_hook - does nothing, gracefully ------ */ static status_t read_hook(void* dev, off_t pos, void* buf, size_t* len) { @@ -658,10 +651,6 @@ read_hook(void* dev, off_t pos, void* buf, size_t* len) } - -/* ---------- - write_hook - does nothing, gracefully ------ */ static status_t write_hook(void* dev, off_t pos, const void* buf, size_t* len) { @@ -675,9 +664,6 @@ write_hook(void* dev, off_t pos, const void* buf, size_t* len) } -/* ---------- - close_hook - does nothing, gracefully ------ */ static status_t close_hook(void* dev) { @@ -689,9 +675,6 @@ close_hook(void* dev) } -/* ----------- - free_hook - close down the device ------------ */ static status_t free_hook(void* dev) { @@ -738,11 +721,8 @@ unlock_and_exit: } -/* ----------- - control_hook - where the real work is done ------------ */ static status_t -control_hook (void* dev, uint32 msg, void *buf, size_t len) +control_hook(void* dev, uint32 msg, void *buf, size_t len) { DeviceInfo *di = (DeviceInfo *)dev; status_t result = B_DEV_INVALID_IOCTL; @@ -753,53 +733,59 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) switch (msg) { /* the only PUBLIC ioctl */ - case B_GET_ACCELERANT_SIGNATURE: { + case B_GET_ACCELERANT_SIGNATURE: + { char *sig = (char *)buf; - strcpy(sig, "savage.accelerant"); + strcpy(sig, "s3savage.accelerant"); result = B_OK; + break; } - break; /* PRIVATE ioctl from here on */ - case SAVAGE_GET_PRIVATE_DATA: { + case SAVAGE_GET_PRIVATE_DATA: + { SavageGetPrivateData *gpd = (SavageGetPrivateData *)buf; if (gpd->magic == SAVAGE_PRIVATE_DATA_MAGIC) { gpd->sharedInfoArea = di->sharedArea; result = B_OK; } + break; } - break; - case SAVAGE_GET_PCI: { + case SAVAGE_GET_PCI: + { SavageGetSetPci *gsp = (SavageGetSetPci *)buf; if (gsp->magic == SAVAGE_PRIVATE_DATA_MAGIC) { pci_info *pcii = &(di->pcii); gsp->value = get_pci(gsp->offset, gsp->size); result = B_OK; } + break; } - break; - case SAVAGE_SET_PCI: { + case SAVAGE_SET_PCI: + { SavageGetSetPci *gsp = (SavageGetSetPci *)buf; if (gsp->magic == SAVAGE_PRIVATE_DATA_MAGIC) { pci_info *pcii = &(di->pcii); set_pci(gsp->offset, gsp->size, gsp->value); result = B_OK; } + break; } - break; - case SAVAGE_DEVICE_NAME: { + case SAVAGE_DEVICE_NAME: + { SavageDeviceName *dn = (SavageDeviceName *)buf; if (dn->magic == SAVAGE_PRIVATE_DATA_MAGIC) { strcpy(dn->name, di->name); result = B_OK; } + break; } - break; - case SAVAGE_RUN_INTERRUPTS: { + case SAVAGE_RUN_INTERRUPTS: + { SavageSetBoolState *ri = (SavageSetBoolState *)buf; if (ri->magic == SAVAGE_PRIVATE_DATA_MAGIC) { if (ri->bEnable) { @@ -809,8 +795,8 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) } } result = B_OK; + break; } - break; } return result; }