mirror of
https://github.com/openbsd/xenocara.git
synced 2025-12-16 06:09:25 +00:00
For the radeon mesa driver, don't try and map the card's mmio region. We
really don't need it. There's one case where it's used, and that is on ``older'' drms, newer ones provide that one value via a parameter. This is the first stage in my project to stop all cards mapping registers. This does mean that drivers that depend on this may eventually die (tdfx, i'm looking at you!). ok matthieu@
This commit is contained in:
@@ -357,7 +357,6 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
{
|
{
|
||||||
radeonScreenPtr screen;
|
radeonScreenPtr screen;
|
||||||
RADEONDRIPtr dri_priv = (RADEONDRIPtr)sPriv->pDevPriv;
|
RADEONDRIPtr dri_priv = (RADEONDRIPtr)sPriv->pDevPriv;
|
||||||
unsigned char *RADEONMMIO;
|
|
||||||
int i;
|
int i;
|
||||||
int ret;
|
int ret;
|
||||||
uint32_t temp;
|
uint32_t temp;
|
||||||
@@ -422,26 +421,12 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
screen->drmSupportsVertexProgram = (sPriv->drm_version.minor >= 25);
|
screen->drmSupportsVertexProgram = (sPriv->drm_version.minor >= 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
screen->mmio.handle = dri_priv->registerHandle;
|
|
||||||
screen->mmio.size = dri_priv->registerSize;
|
|
||||||
if ( drmMap( sPriv->fd,
|
|
||||||
screen->mmio.handle,
|
|
||||||
screen->mmio.size,
|
|
||||||
&screen->mmio.map ) ) {
|
|
||||||
FREE( screen );
|
|
||||||
__driUtilMessage("%s: drmMap failed\n", __FUNCTION__ );
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
RADEONMMIO = screen->mmio.map;
|
|
||||||
|
|
||||||
screen->status.handle = dri_priv->statusHandle;
|
screen->status.handle = dri_priv->statusHandle;
|
||||||
screen->status.size = dri_priv->statusSize;
|
screen->status.size = dri_priv->statusSize;
|
||||||
if ( drmMap( sPriv->fd,
|
if ( drmMap( sPriv->fd,
|
||||||
screen->status.handle,
|
screen->status.handle,
|
||||||
screen->status.size,
|
screen->status.size,
|
||||||
&screen->status.map ) ) {
|
&screen->status.map ) ) {
|
||||||
drmUnmap( screen->mmio.map, screen->mmio.size );
|
|
||||||
FREE( screen );
|
FREE( screen );
|
||||||
__driUtilMessage("%s: drmMap (2) failed\n", __FUNCTION__ );
|
__driUtilMessage("%s: drmMap (2) failed\n", __FUNCTION__ );
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -452,7 +437,6 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
screen->buffers = drmMapBufs( sPriv->fd );
|
screen->buffers = drmMapBufs( sPriv->fd );
|
||||||
if ( !screen->buffers ) {
|
if ( !screen->buffers ) {
|
||||||
drmUnmap( screen->status.map, screen->status.size );
|
drmUnmap( screen->status.map, screen->status.size );
|
||||||
drmUnmap( screen->mmio.map, screen->mmio.size );
|
|
||||||
FREE( screen );
|
FREE( screen );
|
||||||
__driUtilMessage("%s: drmMapBufs failed\n", __FUNCTION__ );
|
__driUtilMessage("%s: drmMapBufs failed\n", __FUNCTION__ );
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -467,7 +451,6 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
(drmAddressPtr)&screen->gartTextures.map ) ) {
|
(drmAddressPtr)&screen->gartTextures.map ) ) {
|
||||||
drmUnmapBufs( screen->buffers );
|
drmUnmapBufs( screen->buffers );
|
||||||
drmUnmap( screen->status.map, screen->status.size );
|
drmUnmap( screen->status.map, screen->status.size );
|
||||||
drmUnmap( screen->mmio.map, screen->mmio.size );
|
|
||||||
FREE( screen );
|
FREE( screen );
|
||||||
__driUtilMessage("%s: drmMap failed for GART texture area\n", __FUNCTION__);
|
__driUtilMessage("%s: drmMap failed for GART texture area\n", __FUNCTION__);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -840,13 +823,9 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|||||||
ret = radeonGetParam( sPriv->fd, RADEON_PARAM_FB_LOCATION,
|
ret = radeonGetParam( sPriv->fd, RADEON_PARAM_FB_LOCATION,
|
||||||
&temp);
|
&temp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (screen->chip_family < CHIP_FAMILY_RS690)
|
|
||||||
screen->fbLocation = ( INREG( RADEON_MC_FB_LOCATION ) & 0xffff) << 16;
|
|
||||||
else {
|
|
||||||
FREE( screen );
|
FREE( screen );
|
||||||
fprintf(stderr, "Unable to get fb location need newer drm\n");
|
fprintf(stderr, "Unable to get fb location need newer drm\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
screen->fbLocation = (temp & 0xffff) << 16;
|
screen->fbLocation = (temp & 0xffff) << 16;
|
||||||
}
|
}
|
||||||
@@ -980,7 +959,6 @@ radeonDestroyScreen( __DRIscreenPrivate *sPriv )
|
|||||||
}
|
}
|
||||||
drmUnmapBufs( screen->buffers );
|
drmUnmapBufs( screen->buffers );
|
||||||
drmUnmap( screen->status.map, screen->status.size );
|
drmUnmap( screen->status.map, screen->status.size );
|
||||||
drmUnmap( screen->mmio.map, screen->mmio.size );
|
|
||||||
|
|
||||||
/* free all option information */
|
/* free all option information */
|
||||||
driDestroyOptionInfo (&screen->optionCache);
|
driDestroyOptionInfo (&screen->optionCache);
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ typedef struct {
|
|||||||
int texSize[RADEON_NR_TEX_HEAPS];
|
int texSize[RADEON_NR_TEX_HEAPS];
|
||||||
int logTexGranularity[RADEON_NR_TEX_HEAPS];
|
int logTexGranularity[RADEON_NR_TEX_HEAPS];
|
||||||
|
|
||||||
radeonRegionRec mmio;
|
|
||||||
radeonRegionRec status;
|
radeonRegionRec status;
|
||||||
radeonRegionRec gartTextures;
|
radeonRegionRec gartTextures;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user