33 struct radeon_agpmode_quirk {
34 u32 hostbridge_vendor;
35 u32 hostbridge_device;
43 static struct radeon_agpmode_quirk radeon_agpmode_quirk_list[] = {
123 { 0, 0, 0, 0, 0, 0, 0 },
130 struct radeon_agpmode_quirk *
p = radeon_agpmode_quirk_list;
139 ret = drm_agp_acquire(rdev->
ddev);
141 DRM_ERROR(
"Unable to acquire AGP: %d\n", ret);
147 drm_agp_release(rdev->
ddev);
148 DRM_ERROR(
"Unable to get AGP info: %d\n", ret);
152 if (rdev->
ddev->agp->agp_info.aper_size < 32) {
153 drm_agp_release(rdev->
ddev);
154 dev_warn(rdev->
dev,
"AGP aperture too small (%zuM) "
155 "need at least 32M, disabling AGP\n",
156 rdev->
ddev->agp->agp_info.aper_size);
167 agp_status = mode.
mode;
183 while (p && p->chip_device != 0) {
184 if (info.
id_vendor == p->hostbridge_vendor &&
185 info.
id_device == p->hostbridge_device &&
186 rdev->
pdev->vendor == p->chip_vendor &&
187 rdev->
pdev->device == p->chip_device &&
188 rdev->
pdev->subsystem_vendor == p->subsys_vendor &&
189 rdev->
pdev->subsystem_device == p->subsys_device) {
190 default_mode = p->default_mode;
199 DRM_ERROR(
"Illegal AGP Mode: %d (valid %s), leaving at %d\n",
237 ret = drm_agp_enable(rdev->
ddev, mode);
239 DRM_ERROR(
"Unable to enable AGP (mode = 0x%lx)\n", mode.
mode);
240 drm_agp_release(rdev->
ddev);
244 rdev->
mc.agp_base = rdev->
ddev->agp->agp_info.aper_base;
245 rdev->
mc.gtt_size = rdev->
ddev->agp->agp_info.aper_size << 20;
246 rdev->
mc.gtt_start = rdev->
mc.agp_base;
247 rdev->
mc.gtt_end = rdev->
mc.gtt_start + rdev->
mc.gtt_size - 1;
248 dev_info(rdev->
dev,
"GTT: %lluM 0x%08llX - 0x%08llX\n",
249 rdev->
mc.gtt_size >> 20, rdev->
mc.gtt_start, rdev->
mc.gtt_end);
276 if (rdev->
ddev->agp && rdev->
ddev->agp->acquired) {
277 drm_agp_release(rdev->
ddev);