diff options
| -rw-r--r-- | shared-core/drm_pciids.txt | 4 | ||||
| -rw-r--r-- | shared-core/radeon_cp.c | 24 | ||||
| -rw-r--r-- | shared-core/radeon_drv.h | 1 | 
3 files changed, 21 insertions, 8 deletions
| diff --git a/shared-core/drm_pciids.txt b/shared-core/drm_pciids.txt index 205fc539..391bb78f 100644 --- a/shared-core/drm_pciids.txt +++ b/shared-core/drm_pciids.txt @@ -235,6 +235,10 @@  0x1002 0x7835 CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP "ATI Radeon RS350 Mobility IGP"  0x1002 0x791e CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART "ATI Radeon RS690 X1250 IGP"  0x1002 0x791f CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART "ATI Radeon RS690 X1270 IGP" +0x1002 0x796c CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART "ATI Radeon RS740 HD2100 IGP" +0x1002 0x796d CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART "ATI Radeon RS740 HD2100 IGP" +0x1002 0x796e CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART "ATI Radeon RS740 HD2100 IGP" +0x1002 0x796f CHIP_RS740|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART "ATI Radeon RS740 HD2100 IGP"  [r128]  0x1002 0x4c45 0 "ATI Rage 128 Mobility LE (PCI)" diff --git a/shared-core/radeon_cp.c b/shared-core/radeon_cp.c index a0fa2a06..7e454fb1 100644 --- a/shared-core/radeon_cp.c +++ b/shared-core/radeon_cp.c @@ -70,7 +70,8 @@ static u32 RS690_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)  static u32 IGP_READ_MCIND(drm_radeon_private_t *dev_priv, int addr)  { -        if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) +	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740))  	    return RS690_READ_MCIND(dev_priv, addr);  	else  	    return RS480_READ_MCIND(dev_priv, addr); @@ -81,7 +82,8 @@ u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv)  	if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515)  		return R500_READ_MCIND(dev_priv, RV515_MC_FB_LOCATION); -	else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) +	else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +		 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740))  		return RS690_READ_MCIND(dev_priv, RS690_MC_FB_LOCATION);  	else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515)  		return R500_READ_MCIND(dev_priv, R520_MC_FB_LOCATION); @@ -93,7 +95,8 @@ static void radeon_write_fb_location(drm_radeon_private_t *dev_priv, u32 fb_loc)  {  	if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515)  		R500_WRITE_MCIND(RV515_MC_FB_LOCATION, fb_loc); -	else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) +	else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +		 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740))  		RS690_WRITE_MCIND(RS690_MC_FB_LOCATION, fb_loc);  	else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515)  		R500_WRITE_MCIND(R520_MC_FB_LOCATION, fb_loc); @@ -105,7 +108,8 @@ static void radeon_write_agp_location(drm_radeon_private_t *dev_priv, u32 agp_lo  {  	if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515)  		R500_WRITE_MCIND(RV515_MC_AGP_LOCATION, agp_loc); -	else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) +	else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +		 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740))  		RS690_WRITE_MCIND(RS690_MC_AGP_LOCATION, agp_loc);  	else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515)  		R500_WRITE_MCIND(R520_MC_AGP_LOCATION, agp_loc); @@ -121,7 +125,8 @@ static void radeon_write_agp_base(drm_radeon_private_t *dev_priv, u64 agp_base)  	if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) {  		R500_WRITE_MCIND(RV515_MC_AGP_BASE, agp_base_lo);  		R500_WRITE_MCIND(RV515_MC_AGP_BASE_2, agp_base_hi); -	} else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) { +	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740)) {  		RS690_WRITE_MCIND(RS690_MC_AGP_BASE, agp_base_lo);  		RS690_WRITE_MCIND(RS690_MC_AGP_BASE_2, agp_base_hi);  	} else if ((dev_priv->flags & RADEON_FAMILY_MASK) > CHIP_RV515) { @@ -366,8 +371,9 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)  			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,  				     R420_cp_microcode[i][0]);  		} -	} else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) { -		DRM_INFO("Loading RS690 Microcode\n"); +	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740)) { +		DRM_INFO("Loading RS690/RS740 Microcode\n");  		for (i = 0; i < 256; i++) {  			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,  				     RS690_cp_microcode[i][1]); @@ -718,7 +724,8 @@ static void radeon_set_igpgart(drm_radeon_private_t * dev_priv, int on)  		temp = IGP_READ_MCIND(dev_priv, RS480_MC_MISC_CNTL); -		if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) +		if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +		    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740))  			IGP_WRITE_MCIND(RS480_MC_MISC_CNTL, (RS480_GART_INDEX_REG_EN |  							     RS690_BLOCK_GFX_D3_EN));  		else @@ -811,6 +818,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)  	u32 tmp;  	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) || +	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740) ||  	    (dev_priv->flags & RADEON_IS_IGPGART)) {  		radeon_set_igpgart(dev_priv, on);  		return; diff --git a/shared-core/radeon_drv.h b/shared-core/radeon_drv.h index 65569db9..8471d103 100644 --- a/shared-core/radeon_drv.h +++ b/shared-core/radeon_drv.h @@ -127,6 +127,7 @@ enum radeon_family {  	CHIP_RS400,  	CHIP_RS480,  	CHIP_RS690, +	CHIP_RS740,  	CHIP_RV515,  	CHIP_R520,  	CHIP_RV530, | 
