Commit 3115b708 authored by Dave Jones's avatar Dave Jones Committed by Dave Jones

[AGPGART] Add support for Radeon IGP345M to ATI GART driver.

Also consolidate a bunch of convoluted if's into a single
"is this an r200 or r300" function.
parent 6fe1cef6
...@@ -135,6 +135,15 @@ static int ati_create_gatt_pages(int nr_tables) ...@@ -135,6 +135,15 @@ static int ati_create_gatt_pages(int nr_tables)
return retval; return retval;
} }
static int is_r200(void)
{
if ((agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS100) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS200) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS200_B) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS250))
return 1;
return 0;
}
static int ati_fetch_size(void) static int ati_fetch_size(void)
{ {
...@@ -142,13 +151,10 @@ static int ati_fetch_size(void) ...@@ -142,13 +151,10 @@ static int ati_fetch_size(void)
u32 temp; u32 temp;
struct aper_size_info_lvl2 *values; struct aper_size_info_lvl2 *values;
if ((agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS100) || if (is_r200)
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS200) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS250)) {
pci_read_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, &temp); pci_read_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, &temp);
} else { else
pci_read_config_dword(agp_bridge->dev, ATI_RS300_APSIZE, &temp); pci_read_config_dword(agp_bridge->dev, ATI_RS300_APSIZE, &temp);
}
temp = (temp & 0x0000000e); temp = (temp & 0x0000000e);
values = A_SIZE_LVL2(agp_bridge->driver->aperture_sizes); values = A_SIZE_LVL2(agp_bridge->driver->aperture_sizes);
...@@ -178,9 +184,7 @@ static void ati_cleanup(void) ...@@ -178,9 +184,7 @@ static void ati_cleanup(void)
previous_size = A_SIZE_LVL2(agp_bridge->previous_size); previous_size = A_SIZE_LVL2(agp_bridge->previous_size);
/* Write back the previous size and disable gart translation */ /* Write back the previous size and disable gart translation */
if ((agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS100) || if (is_r200) {
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS200) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS250)) {
pci_read_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, &temp); pci_read_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, &temp);
temp = ((temp & ~(0x0000000f)) | previous_size->size_value); temp = ((temp & ~(0x0000000f)) | previous_size->size_value);
pci_write_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, temp); pci_write_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, temp);
...@@ -202,13 +206,10 @@ static int ati_configure(void) ...@@ -202,13 +206,10 @@ static int ati_configure(void)
temp = (temp & 0xfffff000); temp = (temp & 0xfffff000);
ati_generic_private.registers = (volatile u8 *) ioremap(temp, 4096); ati_generic_private.registers = (volatile u8 *) ioremap(temp, 4096);
if ((agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS100) || if (is_r200)
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS200) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS250)) {
pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000); pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000);
} else { else
pci_write_config_dword(agp_bridge->dev, ATI_RS300_IG_AGPMODE, 0x20000); pci_write_config_dword(agp_bridge->dev, ATI_RS300_IG_AGPMODE, 0x20000);
}
/* address to map too */ /* address to map too */
/* /*
...@@ -332,9 +333,7 @@ static int ati_create_gatt_table(void) ...@@ -332,9 +333,7 @@ static int ati_create_gatt_table(void)
/* Write out the size register */ /* Write out the size register */
current_size = A_SIZE_LVL2(agp_bridge->current_size); current_size = A_SIZE_LVL2(agp_bridge->current_size);
if ((agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS100) || if (is_r200) {
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS200) ||
(agp_bridge->dev->device == PCI_DEVICE_ID_ATI_RS250)) {
pci_read_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, &temp); pci_read_config_dword(agp_bridge->dev, ATI_RS100_APSIZE, &temp);
temp = (((temp & ~(0x0000000e)) | current_size->size_value) temp = (((temp & ~(0x0000000e)) | current_size->size_value)
| 0x00000001); | 0x00000001);
...@@ -413,6 +412,10 @@ static struct agp_device_ids ati_agp_device_ids[] __devinitdata = ...@@ -413,6 +412,10 @@ static struct agp_device_ids ati_agp_device_ids[] __devinitdata =
.device_id = PCI_DEVICE_ID_ATI_RS200, .device_id = PCI_DEVICE_ID_ATI_RS200,
.chipset_name = "IGP330/340/345/350/M", .chipset_name = "IGP330/340/345/350/M",
}, },
{
.device_id = PCI_DEVICE_ID_ATI_RS200_B,
.chipset_name = "IGP345M",
},
{ {
.device_id = PCI_DEVICE_ID_ATI_RS250, .device_id = PCI_DEVICE_ID_ATI_RS250,
.chipset_name = "IGP7000/M", .chipset_name = "IGP7000/M",
......
...@@ -325,6 +325,7 @@ ...@@ -325,6 +325,7 @@
/* RadeonIGP */ /* RadeonIGP */
#define PCI_DEVICE_ID_ATI_RS100 0xcab0 #define PCI_DEVICE_ID_ATI_RS100 0xcab0
#define PCI_DEVICE_ID_ATI_RS200 0xcab2 #define PCI_DEVICE_ID_ATI_RS200 0xcab2
#define PCI_DEVICE_ID_ATI_RS200_B 0xcbb3
#define PCI_DEVICE_ID_ATI_RS250 0xcab3 #define PCI_DEVICE_ID_ATI_RS250 0xcab3
#define PCI_DEVICE_ID_ATI_RS300_100 0x5830 #define PCI_DEVICE_ID_ATI_RS300_100 0x5830
#define PCI_DEVICE_ID_ATI_RS300_133 0x5831 #define PCI_DEVICE_ID_ATI_RS300_133 0x5831
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment