summaryrefslogtreecommitdiffstats
path: root/sys/dev/agp
diff options
context:
space:
mode:
authordumbbell <dumbbell@FreeBSD.org>2016-03-12 09:44:23 +0000
committerdumbbell <dumbbell@FreeBSD.org>2016-03-12 09:44:23 +0000
commit30fbd7121b921dcd3c30f030f88d982e22b4848d (patch)
tree86cdb1d0c30976d12dbb356a923b7d290cbb4d9f /sys/dev/agp
parentc15527c9e3ed467dff53561111ec0e546239626e (diff)
downloadFreeBSD-src-30fbd7121b921dcd3c30f030f88d982e22b4848d.zip
FreeBSD-src-30fbd7121b921dcd3c30f030f88d982e22b4848d.tar.gz
agp: Do not attach to Intel GEN6+
The i915 video driver doesn't depend on agp(4) anymore for Sandybridge and later GPUs. Therefore, there is no need to attach agp(4) to those devices. While here, fix `agp_i965_res_spec` to include the aperture base for GEN4 and GEN5. Reviewed by: kib Approved by: kib Differential Revision: https://reviews.freebsd.org/D5586
Diffstat (limited to 'sys/dev/agp')
-rw-r--r--sys/dev/agp/agp_i810.c542
-rw-r--r--sys/dev/agp/agpreg.h22
2 files changed, 33 insertions, 531 deletions
diff --git a/sys/dev/agp/agp_i810.c b/sys/dev/agp/agp_i810.c
index c9ebcc5..7df5d84 100644
--- a/sys/dev/agp/agp_i810.c
+++ b/sys/dev/agp/agp_i810.c
@@ -86,7 +86,6 @@ struct agp_i810_match;
static int agp_i810_check_active(device_t bridge_dev);
static int agp_i830_check_active(device_t bridge_dev);
static int agp_i915_check_active(device_t bridge_dev);
-static int agp_sb_check_active(device_t bridge_dev);
static void agp_82852_set_desc(device_t dev,
const struct agp_i810_match *match);
@@ -97,12 +96,10 @@ static void agp_i830_dump_regs(device_t dev);
static void agp_i855_dump_regs(device_t dev);
static void agp_i915_dump_regs(device_t dev);
static void agp_i965_dump_regs(device_t dev);
-static void agp_sb_dump_regs(device_t dev);
static int agp_i810_get_stolen_size(device_t dev);
static int agp_i830_get_stolen_size(device_t dev);
static int agp_i915_get_stolen_size(device_t dev);
-static int agp_sb_get_stolen_size(device_t dev);
static int agp_i810_get_gtt_mappable_entries(device_t dev);
static int agp_i830_get_gtt_mappable_entries(device_t dev);
@@ -111,7 +108,6 @@ static int agp_i915_get_gtt_mappable_entries(device_t dev);
static int agp_i810_get_gtt_total_entries(device_t dev);
static int agp_i965_get_gtt_total_entries(device_t dev);
static int agp_gen5_get_gtt_total_entries(device_t dev);
-static int agp_sb_get_gtt_total_entries(device_t dev);
static int agp_i810_install_gatt(device_t dev);
static int agp_i830_install_gatt(device_t dev);
@@ -131,14 +127,11 @@ static void agp_i965_install_gtt_pte(device_t dev, u_int index,
vm_offset_t physical, int flags);
static void agp_g4x_install_gtt_pte(device_t dev, u_int index,
vm_offset_t physical, int flags);
-static void agp_sb_install_gtt_pte(device_t dev, u_int index,
- vm_offset_t physical, int flags);
static void agp_i810_write_gtt(device_t dev, u_int index, uint32_t pte);
static void agp_i915_write_gtt(device_t dev, u_int index, uint32_t pte);
static void agp_i965_write_gtt(device_t dev, u_int index, uint32_t pte);
static void agp_g4x_write_gtt(device_t dev, u_int index, uint32_t pte);
-static void agp_sb_write_gtt(device_t dev, u_int index, uint32_t pte);
static u_int32_t agp_i810_read_gtt_pte(device_t dev, u_int index);
static u_int32_t agp_i915_read_gtt_pte(device_t dev, u_int index);
@@ -147,7 +140,6 @@ static u_int32_t agp_g4x_read_gtt_pte(device_t dev, u_int index);
static vm_paddr_t agp_i810_read_gtt_pte_paddr(device_t dev, u_int index);
static vm_paddr_t agp_i915_read_gtt_pte_paddr(device_t dev, u_int index);
-static vm_paddr_t agp_sb_read_gtt_pte_paddr(device_t dev, u_int index);
static int agp_i810_set_aperture(device_t dev, u_int32_t aperture);
static int agp_i830_set_aperture(device_t dev, u_int32_t aperture);
@@ -174,7 +166,6 @@ enum {
CHIP_G33, /* G33/Q33/Q35 */
CHIP_IGD, /* Pineview */
CHIP_G4X, /* G45/Q45 */
- CHIP_SB, /* SandyBridge */
};
/* The i810 through i855 have the registers at BAR 1, and the GATT gets
@@ -196,12 +187,7 @@ static struct resource_spec agp_i915_res_spec[] = {
static struct resource_spec agp_i965_res_spec[] = {
{ SYS_RES_MEMORY, AGP_I965_GTTMMADR, RF_ACTIVE | RF_SHAREABLE },
- { -1, 0 }
-};
-
-static struct resource_spec agp_g4x_res_spec[] = {
- { SYS_RES_MEMORY, AGP_G4X_MMADR, RF_ACTIVE | RF_SHAREABLE },
- { SYS_RES_MEMORY, AGP_G4X_GTTADR, RF_ACTIVE | RF_SHAREABLE },
+ { SYS_RES_MEMORY, AGP_I965_APBASE, RF_ACTIVE | RF_SHAREABLE },
{ -1, 0 }
};
@@ -392,22 +378,22 @@ static const struct agp_i810_driver agp_i810_i915_driver = {
.chipset_flush = agp_i915_chipset_flush,
};
-static const struct agp_i810_driver agp_i810_g965_driver = {
- .chiptype = CHIP_I965,
- .gen = 4,
+static const struct agp_i810_driver agp_i810_g33_driver = {
+ .chiptype = CHIP_G33,
+ .gen = 3,
.busdma_addr_mask_sz = 36,
- .res_spec = agp_i965_res_spec,
+ .res_spec = agp_i915_res_spec,
.check_active = agp_i915_check_active,
.set_desc = agp_i810_set_desc,
.dump_regs = agp_i965_dump_regs,
.get_stolen_size = agp_i915_get_stolen_size,
.get_gtt_mappable_entries = agp_i915_get_gtt_mappable_entries,
.get_gtt_total_entries = agp_i965_get_gtt_total_entries,
- .install_gatt = agp_i965_install_gatt,
+ .install_gatt = agp_i830_install_gatt,
.deinstall_gatt = agp_i830_deinstall_gatt,
- .write_gtt = agp_i965_write_gtt,
- .install_gtt_pte = agp_i965_install_gtt_pte,
- .read_gtt_pte = agp_i965_read_gtt_pte,
+ .write_gtt = agp_i915_write_gtt,
+ .install_gtt_pte = agp_i915_install_gtt_pte,
+ .read_gtt_pte = agp_i915_read_gtt_pte,
.read_gtt_pte_paddr = agp_i915_read_gtt_pte_paddr,
.set_aperture = agp_i915_set_aperture,
.chipset_flush_setup = agp_i965_chipset_flush_setup,
@@ -415,14 +401,14 @@ static const struct agp_i810_driver agp_i810_g965_driver = {
.chipset_flush = agp_i915_chipset_flush,
};
-static const struct agp_i810_driver agp_i810_g33_driver = {
- .chiptype = CHIP_G33,
+static const struct agp_i810_driver agp_i810_igd_driver = {
+ .chiptype = CHIP_IGD,
.gen = 3,
.busdma_addr_mask_sz = 36,
.res_spec = agp_i915_res_spec,
.check_active = agp_i915_check_active,
.set_desc = agp_i810_set_desc,
- .dump_regs = agp_i965_dump_regs,
+ .dump_regs = agp_i915_dump_regs,
.get_stolen_size = agp_i915_get_stolen_size,
.get_gtt_mappable_entries = agp_i915_get_gtt_mappable_entries,
.get_gtt_total_entries = agp_i965_get_gtt_total_entries,
@@ -438,22 +424,22 @@ static const struct agp_i810_driver agp_i810_g33_driver = {
.chipset_flush = agp_i915_chipset_flush,
};
-static const struct agp_i810_driver agp_i810_igd_driver = {
- .chiptype = CHIP_IGD,
- .gen = 3,
+static const struct agp_i810_driver agp_i810_g965_driver = {
+ .chiptype = CHIP_I965,
+ .gen = 4,
.busdma_addr_mask_sz = 36,
- .res_spec = agp_i915_res_spec,
+ .res_spec = agp_i965_res_spec,
.check_active = agp_i915_check_active,
.set_desc = agp_i810_set_desc,
- .dump_regs = agp_i915_dump_regs,
+ .dump_regs = agp_i965_dump_regs,
.get_stolen_size = agp_i915_get_stolen_size,
.get_gtt_mappable_entries = agp_i915_get_gtt_mappable_entries,
.get_gtt_total_entries = agp_i965_get_gtt_total_entries,
- .install_gatt = agp_i830_install_gatt,
+ .install_gatt = agp_i965_install_gatt,
.deinstall_gatt = agp_i830_deinstall_gatt,
- .write_gtt = agp_i915_write_gtt,
- .install_gtt_pte = agp_i915_install_gtt_pte,
- .read_gtt_pte = agp_i915_read_gtt_pte,
+ .write_gtt = agp_i965_write_gtt,
+ .install_gtt_pte = agp_i965_install_gtt_pte,
+ .read_gtt_pte = agp_i965_read_gtt_pte,
.read_gtt_pte_paddr = agp_i915_read_gtt_pte_paddr,
.set_aperture = agp_i915_set_aperture,
.chipset_flush_setup = agp_i965_chipset_flush_setup,
@@ -484,75 +470,6 @@ static const struct agp_i810_driver agp_i810_g4x_driver = {
.chipset_flush = agp_i915_chipset_flush,
};
-static const struct agp_i810_driver agp_i810_sb_driver = {
- .chiptype = CHIP_SB,
- .gen = 6,
- .busdma_addr_mask_sz = 40,
- .res_spec = agp_g4x_res_spec,
- .check_active = agp_sb_check_active,
- .set_desc = agp_i810_set_desc,
- .dump_regs = agp_sb_dump_regs,
- .get_stolen_size = agp_sb_get_stolen_size,
- .get_gtt_mappable_entries = agp_i915_get_gtt_mappable_entries,
- .get_gtt_total_entries = agp_sb_get_gtt_total_entries,
- .install_gatt = agp_g4x_install_gatt,
- .deinstall_gatt = agp_i830_deinstall_gatt,
- .write_gtt = agp_sb_write_gtt,
- .install_gtt_pte = agp_sb_install_gtt_pte,
- .read_gtt_pte = agp_g4x_read_gtt_pte,
- .read_gtt_pte_paddr = agp_sb_read_gtt_pte_paddr,
- .set_aperture = agp_i915_set_aperture,
- .chipset_flush_setup = agp_i810_chipset_flush_setup,
- .chipset_flush_teardown = agp_i810_chipset_flush_teardown,
- .chipset_flush = agp_i810_chipset_flush,
-};
-
-static const struct agp_i810_driver agp_i810_hsw_driver = {
- .chiptype = CHIP_SB,
- .gen = 7,
- .busdma_addr_mask_sz = 40,
- .res_spec = agp_g4x_res_spec,
- .check_active = agp_sb_check_active,
- .set_desc = agp_i810_set_desc,
- .dump_regs = agp_sb_dump_regs,
- .get_stolen_size = agp_sb_get_stolen_size,
- .get_gtt_mappable_entries = agp_i915_get_gtt_mappable_entries,
- .get_gtt_total_entries = agp_sb_get_gtt_total_entries,
- .install_gatt = agp_g4x_install_gatt,
- .deinstall_gatt = agp_i830_deinstall_gatt,
- .write_gtt = agp_sb_write_gtt,
- .install_gtt_pte = agp_sb_install_gtt_pte,
- .read_gtt_pte = agp_g4x_read_gtt_pte,
- .read_gtt_pte_paddr = agp_sb_read_gtt_pte_paddr,
- .set_aperture = agp_i915_set_aperture,
- .chipset_flush_setup = agp_i810_chipset_flush_setup,
- .chipset_flush_teardown = agp_i810_chipset_flush_teardown,
- .chipset_flush = agp_i810_chipset_flush,
-};
-
-static const struct agp_i810_driver agp_i810_valleyview_driver = {
- .chiptype = CHIP_SB,
- .gen = 7,
- .busdma_addr_mask_sz = 40,
- .res_spec = agp_g4x_res_spec,
- .check_active = agp_sb_check_active,
- .set_desc = agp_i810_set_desc,
- .dump_regs = agp_sb_dump_regs,
- .get_stolen_size = agp_sb_get_stolen_size,
- .get_gtt_mappable_entries = agp_i915_get_gtt_mappable_entries,
- .get_gtt_total_entries = agp_sb_get_gtt_total_entries,
- .install_gatt = agp_g4x_install_gatt,
- .deinstall_gatt = agp_i830_deinstall_gatt,
- .write_gtt = agp_sb_write_gtt,
- .install_gtt_pte = agp_sb_install_gtt_pte,
- .read_gtt_pte = agp_g4x_read_gtt_pte,
- .read_gtt_pte_paddr = agp_sb_read_gtt_pte_paddr,
- .set_aperture = agp_i915_set_aperture,
- .chipset_flush_setup = agp_i810_chipset_flush_setup,
- .chipset_flush_teardown = agp_i810_chipset_flush_teardown,
- .chipset_flush = agp_i810_chipset_flush,
-};
-
/* For adding new devices, devid is the id of the graphics controller
* (pci:0:2:0, for example). The placeholder (usually at pci:0:2:1) for the
* second head should never be added. The bridge_offset is the offset to
@@ -724,266 +641,6 @@ static const struct agp_i810_match {
.driver = &agp_i810_g4x_driver
},
{
- .devid = 0x01028086,
- .name = "SandyBridge desktop GT1 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01128086,
- .name = "SandyBridge desktop GT2 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01228086,
- .name = "SandyBridge desktop GT2+ IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01068086,
- .name = "SandyBridge mobile GT1 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01168086,
- .name = "SandyBridge mobile GT2 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01268086,
- .name = "SandyBridge mobile GT2+ IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x010a8086,
- .name = "SandyBridge server IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01528086,
- .name = "IvyBridge desktop GT1 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01628086,
- .name = "IvyBridge desktop GT2 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01568086,
- .name = "IvyBridge mobile GT1 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x01668086,
- .name = "IvyBridge mobile GT2 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x015a8086,
- .name = "IvyBridge server GT1 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x016a8086,
- .name = "IvyBridge server GT2 IG",
- .driver = &agp_i810_sb_driver
- },
- {
- .devid = 0x04028086,
- .name = "Haswell GT1 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x04068086,
- .name = "Haswell GT1 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x040A8086,
- .name = "Haswell GT1 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x04128086,
- .name = "Haswell GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x04168086,
- .name = "Haswell GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x041A8086,
- .name = "Haswell GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x04228086,
- .name = "Haswell GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x04268086,
- .name = "Haswell GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x042A8086,
- .name = "Haswell GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A028086,
- .name = "Haswell ULT GT1 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A068086,
- .name = "Haswell ULT GT1 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A0A8086,
- .name = "Haswell ULT GT1 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A128086,
- .name = "Haswell ULT GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A168086,
- .name = "Haswell ULT GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A1A8086,
- .name = "Haswell ULT GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A228086,
- .name = "Haswell ULT GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A268086,
- .name = "Haswell ULT GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0A2A8086,
- .name = "Haswell ULT GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C028086,
- .name = "Haswell SDV GT1 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C068086,
- .name = "Haswell SDV GT1 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C0A8086,
- .name = "Haswell SDV GT1 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C128086,
- .name = "Haswell SDV GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C168086,
- .name = "Haswell SDV GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C1A8086,
- .name = "Haswell SDV GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C228086,
- .name = "Haswell SDV GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C268086,
- .name = "Haswell SDV GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0C2A8086,
- .name = "Haswell SDV GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D028086,
- .name = "Haswell CRW GT1 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D068086,
- .name = "Haswell CRW GT1 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D0A8086,
- .name = "Haswell CRW GT1 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D128086,
- .name = "Haswell CRW GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D168086,
- .name = "Haswell CRW GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D1A8086,
- .name = "Haswell CRW GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D228086,
- .name = "Haswell CRW GT2 desktop",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D268086,
- .name = "Haswell CRW GT2 mobile",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x0D2A8086,
- .name = "Haswell CRW GT2 server",
- .driver = &agp_i810_hsw_driver
- },
- {
- .devid = 0x01558086,
- .name = "Valleyview (desktop)",
- .driver = &agp_i810_valleyview_driver
- },
- {
- .devid = 0x01578086,
- .name = "Valleyview (mobile)",
- .driver = &agp_i810_valleyview_driver
- },
- {
- .devid = 0x0F308086,
- .name = "Valleyview (mobile)",
- .driver = &agp_i810_valleyview_driver
- },
- {
.devid = 0,
}
};
@@ -1061,17 +718,6 @@ agp_i915_check_active(device_t bridge_dev)
return (0);
}
-static int
-agp_sb_check_active(device_t bridge_dev)
-{
- int deven;
-
- deven = pci_read_config(bridge_dev, AGP_I915_DEVEN, 4);
- if ((deven & AGP_SB_DEVEN_D2EN) == AGP_SB_DEVEN_D2EN_DISABLED)
- return (ENXIO);
- return (0);
-}
-
static void
agp_82852_set_desc(device_t dev, const struct agp_i810_match *match)
{
@@ -1200,17 +846,6 @@ agp_i965_dump_regs(device_t dev)
pci_read_config(sc->bdev, AGP_I965_MSAC, 1));
}
-static void
-agp_sb_dump_regs(device_t dev)
-{
- struct agp_i810_softc *sc = device_get_softc(dev);
-
- device_printf(dev, "AGP_SNB_GFX_MODE: %08x\n",
- bus_read_4(sc->sc_res[0], AGP_SNB_GFX_MODE));
- device_printf(dev, "AGP_SNB_GCC1: 0x%04x\n",
- pci_read_config(sc->bdev, AGP_SNB_GCC1, 2));
-}
-
static int
agp_i810_get_stolen_size(device_t dev)
{
@@ -1236,11 +871,11 @@ agp_i830_get_stolen_size(device_t dev)
sc->stolen = (512 - 132) * 1024 / 4096;
sc->stolen_size = 512 * 1024;
break;
- case AGP_I830_GCC1_GMS_STOLEN_1024:
+ case AGP_I830_GCC1_GMS_STOLEN_1024:
sc->stolen = (1024 - 132) * 1024 / 4096;
sc->stolen_size = 1024 * 1024;
break;
- case AGP_I830_GCC1_GMS_STOLEN_8192:
+ case AGP_I830_GCC1_GMS_STOLEN_8192:
sc->stolen = (8192 - 132) * 1024 / 4096;
sc->stolen_size = 8192 * 1024;
break;
@@ -1396,68 +1031,6 @@ agp_i915_get_stolen_size(device_t dev)
}
static int
-agp_sb_get_stolen_size(device_t dev)
-{
- struct agp_i810_softc *sc;
- uint16_t gmch_ctl;
-
- sc = device_get_softc(dev);
- gmch_ctl = pci_read_config(sc->bdev, AGP_SNB_GCC1, 2);
- switch (gmch_ctl & AGP_SNB_GMCH_GMS_STOLEN_MASK) {
- case AGP_SNB_GMCH_GMS_STOLEN_32M:
- sc->stolen_size = 32 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_64M:
- sc->stolen_size = 64 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_96M:
- sc->stolen_size = 96 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_128M:
- sc->stolen_size = 128 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_160M:
- sc->stolen_size = 160 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_192M:
- sc->stolen_size = 192 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_224M:
- sc->stolen_size = 224 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_256M:
- sc->stolen_size = 256 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_288M:
- sc->stolen_size = 288 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_320M:
- sc->stolen_size = 320 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_352M:
- sc->stolen_size = 352 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_384M:
- sc->stolen_size = 384 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_416M:
- sc->stolen_size = 416 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_448M:
- sc->stolen_size = 448 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_480M:
- sc->stolen_size = 480 * 1024 * 1024;
- break;
- case AGP_SNB_GMCH_GMS_STOLEN_512M:
- sc->stolen_size = 512 * 1024 * 1024;
- break;
- }
- sc->stolen = (sc->stolen_size - 4) / 4096;
- return (0);
-}
-
-static int
agp_i810_get_gtt_mappable_entries(device_t dev)
{
struct agp_i810_softc *sc;
@@ -1600,30 +1173,6 @@ agp_gen5_get_gtt_total_entries(device_t dev)
}
static int
-agp_sb_get_gtt_total_entries(device_t dev)
-{
- struct agp_i810_softc *sc;
- uint16_t gcc1;
-
- sc = device_get_softc(dev);
-
- gcc1 = pci_read_config(sc->bdev, AGP_SNB_GCC1, 2);
- switch (gcc1 & AGP_SNB_GTT_SIZE_MASK) {
- default:
- case AGP_SNB_GTT_SIZE_0M:
- printf("Bad GTT size mask: 0x%04x\n", gcc1);
- return (ENXIO);
- case AGP_SNB_GTT_SIZE_1M:
- sc->gtt_total_entries = 1024 * 1024 / 4;
- break;
- case AGP_SNB_GTT_SIZE_2M:
- sc->gtt_total_entries = 2 * 1024 * 1024 / 4;
- break;
- }
- return (0);
-}
-
-static int
agp_i810_install_gatt(device_t dev)
{
struct agp_i810_softc *sc;
@@ -2024,38 +1573,6 @@ agp_g4x_write_gtt(device_t dev, u_int index, uint32_t pte)
CTR2(KTR_AGP_I810, "g4x_pte %x %x", index, pte);
}
-static void
-agp_sb_install_gtt_pte(device_t dev, u_int index, vm_offset_t physical,
- int flags)
-{
- int type_mask, gfdt;
- uint32_t pte;
-
- pte = (u_int32_t)physical | I810_PTE_VALID;
- type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT;
- gfdt = (flags & AGP_USER_CACHED_MEMORY_GFDT) != 0 ? GEN6_PTE_GFDT : 0;
-
- if (type_mask == AGP_USER_MEMORY)
- pte |= GEN6_PTE_UNCACHED;
- else if (type_mask == AGP_USER_CACHED_MEMORY_LLC_MLC)
- pte |= GEN6_PTE_LLC_MLC | gfdt;
- else
- pte |= GEN6_PTE_LLC | gfdt;
-
- pte |= (physical & 0x000000ff00000000ull) >> 28;
- agp_sb_write_gtt(dev, index, pte);
-}
-
-static void
-agp_sb_write_gtt(device_t dev, u_int index, uint32_t pte)
-{
- struct agp_i810_softc *sc;
-
- sc = device_get_softc(dev);
- bus_write_4(sc->sc_res[0], index * 4 + (2 * 1024 * 1024), pte);
- CTR2(KTR_AGP_I810, "sb_pte %x %x", index, pte);
-}
-
static int
agp_i810_bind_page(device_t dev, vm_offset_t offset, vm_offset_t physical)
{
@@ -2165,19 +1682,6 @@ agp_i915_read_gtt_pte_paddr(device_t dev, u_int index)
return (res);
}
-static vm_paddr_t
-agp_sb_read_gtt_pte_paddr(device_t dev, u_int index)
-{
- struct agp_i810_softc *sc;
- u_int32_t pte;
- vm_paddr_t res;
-
- sc = device_get_softc(dev);
- pte = sc->match->driver->read_gtt_pte(dev, index);
- res = (pte & ~PAGE_MASK) | ((pte & 0xff0) << 28);
- return (res);
-}
-
/*
* Writing via memory mapped registers already flushes all TLBs.
*/
diff --git a/sys/dev/agp/agpreg.h b/sys/dev/agp/agpreg.h
index dfa93a5..3f473da 100644
--- a/sys/dev/agp/agpreg.h
+++ b/sys/dev/agp/agpreg.h
@@ -296,9 +296,19 @@
#define AGP_I915_IFPADDR 0x60
/*
+ * G33 registers
+ */
+#define AGP_G33_MGGC_GGMS_MASK (3 << 8)
+#define AGP_G33_MGGC_GGMS_SIZE_1M (1 << 8)
+#define AGP_G33_MGGC_GGMS_SIZE_2M (2 << 8)
+#define AGP_G33_GCC1_GMS_STOLEN_128M 0x80
+#define AGP_G33_GCC1_GMS_STOLEN_256M 0x90
+
+/*
* G965 registers
*/
#define AGP_I965_GTTMMADR 0x10
+#define AGP_I965_APBASE 0x18
#define AGP_I965_MSAC 0x62
#define AGP_I965_MSAC_GMASIZE_128 0x00
#define AGP_I965_MSAC_GMASIZE_256 0x02
@@ -310,20 +320,8 @@
#define AGP_I965_IFPADDR 0x70
/*
- * G33 registers
- */
-#define AGP_G33_MGGC_GGMS_MASK (3 << 8)
-#define AGP_G33_MGGC_GGMS_SIZE_1M (1 << 8)
-#define AGP_G33_MGGC_GGMS_SIZE_2M (2 << 8)
-#define AGP_G33_GCC1_GMS_STOLEN_128M 0x80
-#define AGP_G33_GCC1_GMS_STOLEN_256M 0x90
-
-/*
* G4X registers
*/
-#define AGP_G4X_GMADR 0x20
-#define AGP_G4X_MMADR 0x10
-#define AGP_G4X_GTTADR 0x18
#define AGP_G4X_GCC1_GMS_STOLEN_96M 0xa0
#define AGP_G4X_GCC1_GMS_STOLEN_160M 0xb0
#define AGP_G4X_GCC1_GMS_STOLEN_224M 0xc0
OpenPOWER on IntegriCloud