Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
"Nothing too astounding or major: radeon, i915, vmwgfx, armada and
exynos.

Biggest ones:
- vmwgfx has one big locking regression fix
- i915 has come displayport fixes
- radeon has some stability and a memory alloc failure
- armada and exynos have some vblank fixes"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (24 commits)
drm/exynos: correct connector->dpms field before resuming
drm/exynos: enable vblank after DPMS on
drm/exynos: init kms poll at the end of initialization
drm/exynos: propagate plane initialization errors
drm/exynos: vidi: fix build warning
drm/exynos: remove explicit encoder/connector de-initialization
drm/exynos: init vblank with real number of crtcs
drm/vmwgfx: Filter out modes those cannot be supported by the current VRAM size.
drm/vmwgfx: Fix hash key computation
drm/vmwgfx: fix lock breakage
drm/i915/dp: only use training pattern 3 on platforms that support it
drm/radeon: remove some buggy dead code
drm/i915: Ignore VBT backlight check on Macbook 2, 1
drm/radeon: remove invalid pci id
drm/radeon: dpm fixes for asrock systems
radeon: clean up coding style differences in radeon_get_bios()
drm/radeon: Use drm_malloc_ab instead of kmalloc_array
drm/radeon/dpm: disable ulv support on SI
drm/i915: Fix GMBUSFREQ on vlv/chv
drm/i915: Ignore long hpds on eDP ports
...

+10 -11
drivers/gpu/drm/armada/armada_crtc.c
··· 260 260 * Tell the DRM core that vblank IRQs aren't going to happen for 261 261 * a while. This cleans up any pending vblank events for us. 262 262 */ 263 - drm_vblank_off(dev, dcrtc->num); 263 + drm_crtc_vblank_off(&dcrtc->crtc); 264 264 265 265 /* Handle any pending flip event. */ 266 266 spin_lock_irq(&dev->event_lock); ··· 289 289 armada_drm_crtc_update(dcrtc); 290 290 if (dpms_blanked(dpms)) 291 291 armada_drm_vblank_off(dcrtc); 292 + else 293 + drm_crtc_vblank_on(&dcrtc->crtc); 292 294 } 293 295 } 294 296 ··· 528 526 /* Wait for pending flips to complete */ 529 527 wait_event(dcrtc->frame_wait, !dcrtc->frame_work); 530 528 531 - drm_vblank_pre_modeset(crtc->dev, dcrtc->num); 529 + drm_crtc_vblank_off(crtc); 532 530 533 531 crtc->mode = *adj; 534 532 ··· 619 617 620 618 armada_drm_crtc_update(dcrtc); 621 619 622 - drm_vblank_post_modeset(crtc->dev, dcrtc->num); 620 + drm_crtc_vblank_on(crtc); 623 621 armada_drm_crtc_finish_fb(dcrtc, old_fb, dpms_blanked(dcrtc->dpms)); 624 622 625 623 return 0; ··· 947 945 armada_reg_queue_end(work->regs, i); 948 946 949 947 /* 950 - * Hold the old framebuffer for the work - DRM appears to drop our 951 - * reference to the old framebuffer in drm_mode_page_flip_ioctl(). 948 + * Ensure that we hold a reference on the new framebuffer. 949 + * This has to match the behaviour in mode_set. 952 950 */ 953 - drm_framebuffer_reference(work->old_fb); 951 + drm_framebuffer_reference(fb); 954 952 955 953 ret = armada_drm_crtc_queue_frame_work(dcrtc, work); 956 954 if (ret) { 957 - /* 958 - * Undo our reference above; DRM does not drop the reference 959 - * to this object on error, so that's okay. 960 - */ 961 - drm_framebuffer_unreference(work->old_fb); 955 + /* Undo our reference above */ 956 + drm_framebuffer_unreference(fb); 962 957 kfree(work); 963 958 return ret; 964 959 }
+2 -1
drivers/gpu/drm/armada/armada_drv.c
··· 190 190 if (ret) 191 191 goto err_comp; 192 192 193 + dev->irq_enabled = true; 193 194 dev->vblank_disable_allowed = 1; 194 195 195 196 ret = armada_fbdev_init(dev); ··· 332 331 .desc = "Armada SoC DRM", 333 332 .date = "20120730", 334 333 .driver_features = DRIVER_GEM | DRIVER_MODESET | 335 - DRIVER_PRIME, 334 + DRIVER_HAVE_IRQ | DRIVER_PRIME, 336 335 .ioctls = armada_ioctls, 337 336 .fops = &armada_drm_fops, 338 337 };
-5
drivers/gpu/drm/exynos/exynos_dp_core.c
··· 1355 1355 void *data) 1356 1356 { 1357 1357 struct exynos_drm_display *display = dev_get_drvdata(dev); 1358 - struct exynos_dp_device *dp = display->ctx; 1359 - struct drm_encoder *encoder = dp->encoder; 1360 1358 1361 1359 exynos_dp_dpms(display, DRM_MODE_DPMS_OFF); 1362 - 1363 - exynos_dp_connector_destroy(&dp->connector); 1364 - encoder->funcs->destroy(encoder); 1365 1360 } 1366 1361 1367 1362 static const struct component_ops exynos_dp_ops = {
+4 -1
drivers/gpu/drm/exynos/exynos_drm_crtc.c
··· 71 71 !atomic_read(&exynos_crtc->pending_flip), 72 72 HZ/20)) 73 73 atomic_set(&exynos_crtc->pending_flip, 0); 74 - drm_vblank_off(crtc->dev, exynos_crtc->pipe); 74 + drm_crtc_vblank_off(crtc); 75 75 } 76 76 77 77 if (manager->ops->dpms) 78 78 manager->ops->dpms(manager, mode); 79 79 80 80 exynos_crtc->dpms = mode; 81 + 82 + if (mode == DRM_MODE_DPMS_ON) 83 + drm_crtc_vblank_on(crtc); 81 84 } 82 85 83 86 static void exynos_drm_crtc_prepare(struct drm_crtc *crtc)
-4
drivers/gpu/drm/exynos/exynos_drm_dpi.c
··· 338 338 339 339 int exynos_dpi_remove(struct device *dev) 340 340 { 341 - struct drm_encoder *encoder = exynos_dpi_display.encoder; 342 341 struct exynos_dpi *ctx = exynos_dpi_display.ctx; 343 342 344 343 exynos_dpi_dpms(&exynos_dpi_display, DRM_MODE_DPMS_OFF); 345 - 346 - exynos_dpi_connector_destroy(&ctx->connector); 347 - encoder->funcs->destroy(encoder); 348 344 349 345 if (ctx->panel) 350 346 drm_panel_detach(ctx->panel);
+25 -18
drivers/gpu/drm/exynos/exynos_drm_drv.c
··· 87 87 88 88 plane = exynos_plane_init(dev, possible_crtcs, 89 89 DRM_PLANE_TYPE_OVERLAY); 90 - if (IS_ERR(plane)) 91 - goto err_mode_config_cleanup; 92 - } 90 + if (!IS_ERR(plane)) 91 + continue; 93 92 94 - /* init kms poll for handling hpd */ 95 - drm_kms_helper_poll_init(dev); 96 - 97 - ret = drm_vblank_init(dev, MAX_CRTC); 98 - if (ret) 93 + ret = PTR_ERR(plane); 99 94 goto err_mode_config_cleanup; 95 + } 100 96 101 97 /* setup possible_clones. */ 102 98 exynos_drm_encoder_setup(dev); ··· 102 106 /* Try to bind all sub drivers. */ 103 107 ret = component_bind_all(dev->dev, dev); 104 108 if (ret) 105 - goto err_cleanup_vblank; 109 + goto err_mode_config_cleanup; 110 + 111 + ret = drm_vblank_init(dev, dev->mode_config.num_crtc); 112 + if (ret) 113 + goto err_unbind_all; 106 114 107 115 /* Probe non kms sub drivers and virtual display driver. */ 108 116 ret = exynos_drm_device_subdrv_probe(dev); 109 117 if (ret) 110 - goto err_unbind_all; 111 - 112 - /* force connectors detection */ 113 - drm_helper_hpd_irq_event(dev); 118 + goto err_cleanup_vblank; 114 119 115 120 /* 116 121 * enable drm irq mode. ··· 130 133 */ 131 134 dev->vblank_disable_allowed = true; 132 135 136 + /* init kms poll for handling hpd */ 137 + drm_kms_helper_poll_init(dev); 138 + 139 + /* force connectors detection */ 140 + drm_helper_hpd_irq_event(dev); 141 + 133 142 return 0; 134 143 135 - err_unbind_all: 136 - component_unbind_all(dev->dev, dev); 137 144 err_cleanup_vblank: 138 145 drm_vblank_cleanup(dev); 146 + err_unbind_all: 147 + component_unbind_all(dev->dev, dev); 139 148 err_mode_config_cleanup: 140 149 drm_mode_config_cleanup(dev); 141 150 drm_release_iommu_mapping(dev); ··· 158 155 exynos_drm_fbdev_fini(dev); 159 156 drm_kms_helper_poll_fini(dev); 160 157 161 - component_unbind_all(dev->dev, dev); 162 158 drm_vblank_cleanup(dev); 159 + component_unbind_all(dev->dev, dev); 163 160 drm_mode_config_cleanup(dev); 164 161 drm_release_iommu_mapping(dev); 165 162 ··· 194 191 195 192 drm_modeset_lock_all(dev); 196 193 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 197 - if (connector->funcs->dpms) 198 - connector->funcs->dpms(connector, connector->dpms); 194 + if (connector->funcs->dpms) { 195 + int dpms = connector->dpms; 196 + 197 + connector->dpms = DRM_MODE_DPMS_OFF; 198 + connector->funcs->dpms(connector, dpms); 199 + } 199 200 } 200 201 drm_modeset_unlock_all(dev); 201 202
-4
drivers/gpu/drm/exynos/exynos_drm_dsi.c
··· 1660 1660 void *data) 1661 1661 { 1662 1662 struct exynos_dsi *dsi = exynos_dsi_display.ctx; 1663 - struct drm_encoder *encoder = dsi->encoder; 1664 1663 1665 1664 exynos_dsi_dpms(&exynos_dsi_display, DRM_MODE_DPMS_OFF); 1666 - 1667 - exynos_dsi_connector_destroy(&dsi->connector); 1668 - encoder->funcs->destroy(encoder); 1669 1665 1670 1666 mipi_dsi_host_unregister(&dsi->dsi_host); 1671 1667 }
-4
drivers/gpu/drm/exynos/exynos_drm_vidi.c
··· 630 630 { 631 631 struct exynos_drm_manager *mgr = platform_get_drvdata(pdev); 632 632 struct vidi_context *ctx = mgr->ctx; 633 - struct drm_encoder *encoder = ctx->encoder; 634 633 635 634 if (ctx->raw_edid != (struct edid *)fake_edid_info) { 636 635 kfree(ctx->raw_edid); ··· 637 638 638 639 return -EINVAL; 639 640 } 640 - 641 - encoder->funcs->destroy(encoder); 642 - drm_connector_cleanup(&ctx->connector); 643 641 644 642 return 0; 645 643 }
-6
drivers/gpu/drm/exynos/exynos_hdmi.c
··· 2312 2312 2313 2313 static void hdmi_unbind(struct device *dev, struct device *master, void *data) 2314 2314 { 2315 - struct exynos_drm_display *display = get_hdmi_display(dev); 2316 - struct drm_encoder *encoder = display->encoder; 2317 - struct hdmi_context *hdata = display->ctx; 2318 - 2319 - hdmi_connector_destroy(&hdata->connector); 2320 - encoder->funcs->destroy(encoder); 2321 2315 } 2322 2316 2323 2317 static const struct component_ops hdmi_component_ops = {
+4 -1
drivers/gpu/drm/i915/intel_display.c
··· 4585 4585 * BSpec erroneously claims we should aim for 4MHz, but 4586 4586 * in fact 1MHz is the correct frequency. 4587 4587 */ 4588 - I915_WRITE(GMBUSFREQ_VLV, dev_priv->vlv_cdclk_freq); 4588 + I915_WRITE(GMBUSFREQ_VLV, DIV_ROUND_UP(dev_priv->vlv_cdclk_freq, 1000)); 4589 4589 } 4590 4590 4591 4591 /* Adjust CDclk dividers to allow high res or save power if possible */ ··· 12884 12884 12885 12885 /* Acer C720 Chromebook (Core i3 4005U) */ 12886 12886 { 0x0a16, 0x1025, 0x0a11, quirk_backlight_present }, 12887 + 12888 + /* Apple Macbook 2,1 (Core 2 T7400) */ 12889 + { 0x27a2, 0x8086, 0x7270, quirk_backlight_present }, 12887 12890 12888 12891 /* Toshiba CB35 Chromebook (Celeron 2955U) */ 12889 12892 { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present },
+22 -2
drivers/gpu/drm/i915/intel_dp.c
··· 2806 2806 ssize_t ret; 2807 2807 int i; 2808 2808 2809 + /* 2810 + * Sometime we just get the same incorrect byte repeated 2811 + * over the entire buffer. Doing just one throw away read 2812 + * initially seems to "solve" it. 2813 + */ 2814 + drm_dp_dpcd_read(aux, DP_DPCD_REV, buffer, 1); 2815 + 2809 2816 for (i = 0; i < 3; i++) { 2810 2817 ret = drm_dp_dpcd_read(aux, offset, buffer, size); 2811 2818 if (ret == size) ··· 3731 3724 } 3732 3725 } 3733 3726 3734 - /* Training Pattern 3 support */ 3727 + /* Training Pattern 3 support, both source and sink */ 3735 3728 if (intel_dp->dpcd[DP_DPCD_REV] >= 0x12 && 3736 - intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_TPS3_SUPPORTED) { 3729 + intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_TPS3_SUPPORTED && 3730 + (IS_HASWELL(dev_priv) || INTEL_INFO(dev_priv)->gen >= 8)) { 3737 3731 intel_dp->use_tps3 = true; 3738 3732 DRM_DEBUG_KMS("Displayport TPS3 supported\n"); 3739 3733 } else ··· 4498 4490 4499 4491 if (intel_dig_port->base.type != INTEL_OUTPUT_EDP) 4500 4492 intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT; 4493 + 4494 + if (long_hpd && intel_dig_port->base.type == INTEL_OUTPUT_EDP) { 4495 + /* 4496 + * vdd off can generate a long pulse on eDP which 4497 + * would require vdd on to handle it, and thus we 4498 + * would end up in an endless cycle of 4499 + * "vdd off -> long hpd -> vdd on -> detect -> vdd off -> ..." 4500 + */ 4501 + DRM_DEBUG_KMS("ignoring long hpd on eDP port %c\n", 4502 + port_name(intel_dig_port->port)); 4503 + return false; 4504 + } 4501 4505 4502 4506 DRM_DEBUG_KMS("got hpd irq on port %c - %s\n", 4503 4507 port_name(intel_dig_port->port),
+1 -3
drivers/gpu/drm/radeon/evergreen.c
··· 3005 3005 u32 vgt_cache_invalidation; 3006 3006 u32 hdp_host_path_cntl, tmp; 3007 3007 u32 disabled_rb_mask; 3008 - int i, j, num_shader_engines, ps_thread_count; 3008 + int i, j, ps_thread_count; 3009 3009 3010 3010 switch (rdev->family) { 3011 3011 case CHIP_CYPRESS: ··· 3302 3302 rdev->config.evergreen.tile_config |= 0 << 8; 3303 3303 rdev->config.evergreen.tile_config |= 3304 3304 ((gb_addr_config & 0x30000000) >> 28) << 12; 3305 - 3306 - num_shader_engines = (gb_addr_config & NUM_SHADER_ENGINES(3) >> 12) + 1; 3307 3305 3308 3306 if ((rdev->family >= CHIP_CEDAR) && (rdev->family <= CHIP_HEMLOCK)) { 3309 3307 u32 efuse_straps_4;
+16 -3
drivers/gpu/drm/radeon/kv_dpm.c
··· 2725 2725 2726 2726 pi->sram_end = SMC_RAM_END; 2727 2727 2728 - pi->enable_nb_dpm = true; 2728 + /* Enabling nb dpm on an asrock system prevents dpm from working */ 2729 + if (rdev->pdev->subsystem_vendor == 0x1849) 2730 + pi->enable_nb_dpm = false; 2731 + else 2732 + pi->enable_nb_dpm = true; 2729 2733 2730 2734 pi->caps_power_containment = true; 2731 2735 pi->caps_cac = true; ··· 2744 2740 pi->caps_sclk_ds = true; 2745 2741 pi->enable_auto_thermal_throttling = true; 2746 2742 pi->disable_nb_ps3_in_battery = false; 2747 - if (radeon_bapm == 0) 2743 + if (radeon_bapm == -1) { 2744 + /* There are stability issues reported on with 2745 + * bapm enabled on an asrock system. 2746 + */ 2747 + if (rdev->pdev->subsystem_vendor == 0x1849) 2748 + pi->bapm_enable = false; 2749 + else 2750 + pi->bapm_enable = true; 2751 + } else if (radeon_bapm == 0) { 2748 2752 pi->bapm_enable = false; 2749 - else 2753 + } else { 2750 2754 pi->bapm_enable = true; 2755 + } 2751 2756 pi->voltage_drop_t = 0; 2752 2757 pi->caps_sclk_throttle_low_notification = false; 2753 2758 pi->caps_fps = false; /* true? */
+2 -4
drivers/gpu/drm/radeon/radeon_bios.c
··· 658 658 r = igp_read_bios_from_vram(rdev); 659 659 if (r == false) 660 660 r = radeon_read_bios(rdev); 661 - if (r == false) { 661 + if (r == false) 662 662 r = radeon_read_disabled_bios(rdev); 663 - } 664 - if (r == false) { 663 + if (r == false) 665 664 r = radeon_read_platform_bios(rdev); 666 - } 667 665 if (r == false || rdev->bios == NULL) { 668 666 DRM_ERROR("Unable to locate a BIOS ROM\n"); 669 667 rdev->bios = NULL;
+1 -1
drivers/gpu/drm/radeon/radeon_cs.c
··· 450 450 kfree(parser->track); 451 451 kfree(parser->relocs); 452 452 kfree(parser->relocs_ptr); 453 - kfree(parser->vm_bos); 453 + drm_free_large(parser->vm_bos); 454 454 for (i = 0; i < parser->nchunks; i++) 455 455 drm_free_large(parser->chunks[i].kdata); 456 456 kfree(parser->chunks);
+2 -2
drivers/gpu/drm/radeon/radeon_ring.c
··· 314 314 } 315 315 316 316 /* and then save the content of the ring */ 317 - *data = kmalloc_array(size, sizeof(uint32_t), GFP_KERNEL); 317 + *data = drm_malloc_ab(size, sizeof(uint32_t)); 318 318 if (!*data) { 319 319 mutex_unlock(&rdev->ring_lock); 320 320 return 0; ··· 356 356 } 357 357 358 358 radeon_ring_unlock_commit(rdev, ring, false); 359 - kfree(data); 359 + drm_free_large(data); 360 360 return 0; 361 361 } 362 362
+2 -2
drivers/gpu/drm/radeon/radeon_vm.c
··· 132 132 struct radeon_cs_reloc *list; 133 133 unsigned i, idx; 134 134 135 - list = kmalloc_array(vm->max_pde_used + 2, 136 - sizeof(struct radeon_cs_reloc), GFP_KERNEL); 135 + list = drm_malloc_ab(vm->max_pde_used + 2, 136 + sizeof(struct radeon_cs_reloc)); 137 137 if (!list) 138 138 return NULL; 139 139
+1 -1
drivers/gpu/drm/radeon/si_dpm.c
··· 6256 6256 if ((rps->class2 & ATOM_PPLIB_CLASSIFICATION2_ULV) && 6257 6257 index == 0) { 6258 6258 /* XXX disable for A0 tahiti */ 6259 - si_pi->ulv.supported = true; 6259 + si_pi->ulv.supported = false; 6260 6260 si_pi->ulv.pl = *pl; 6261 6261 si_pi->ulv.one_pcie_lane_in_ulv = false; 6262 6262 si_pi->ulv.volt_change_delay = SISLANDS_ULVVOLTAGECHANGEDELAY_DFLT;
+2 -1
drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
··· 246 246 struct drm_hash_item *hash; 247 247 int ret; 248 248 249 - ret = drm_ht_find_item(&man->resources, user_key, &hash); 249 + ret = drm_ht_find_item(&man->resources, user_key | (res_type << 24), 250 + &hash); 250 251 if (likely(ret != 0)) 251 252 return -EINVAL; 252 253
+5 -1
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
··· 688 688 goto out_err0; 689 689 } 690 690 691 - if (unlikely(dev_priv->prim_bb_mem < dev_priv->vram_size)) 691 + /* 692 + * Limit back buffer size to VRAM size. Remove this once 693 + * screen targets are implemented. 694 + */ 695 + if (dev_priv->prim_bb_mem > dev_priv->vram_size) 692 696 dev_priv->prim_bb_mem = dev_priv->vram_size; 693 697 694 698 mutex_unlock(&dev_priv->hw_mutex);
+17 -7
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
··· 187 187 * can do this since the caller in the drm core doesn't check anything 188 188 * which is protected by any looks. 189 189 */ 190 - drm_modeset_unlock(&crtc->mutex); 190 + drm_modeset_unlock_crtc(crtc); 191 191 drm_modeset_lock_all(dev_priv->dev); 192 192 193 193 /* A lot of the code assumes this */ ··· 252 252 ret = 0; 253 253 out: 254 254 drm_modeset_unlock_all(dev_priv->dev); 255 - drm_modeset_lock(&crtc->mutex, NULL); 255 + drm_modeset_lock_crtc(crtc); 256 256 257 257 return ret; 258 258 } ··· 273 273 * can do this since the caller in the drm core doesn't check anything 274 274 * which is protected by any looks. 275 275 */ 276 - drm_modeset_unlock(&crtc->mutex); 276 + drm_modeset_unlock_crtc(crtc); 277 277 drm_modeset_lock_all(dev_priv->dev); 278 278 279 279 vmw_cursor_update_position(dev_priv, shown, ··· 281 281 du->cursor_y + du->hotspot_y); 282 282 283 283 drm_modeset_unlock_all(dev_priv->dev); 284 - drm_modeset_lock(&crtc->mutex, NULL); 284 + drm_modeset_lock_crtc(crtc); 285 285 286 286 return 0; 287 287 } ··· 1950 1950 DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) 1951 1951 }; 1952 1952 int i; 1953 + u32 assumed_bpp = 2; 1954 + 1955 + /* 1956 + * If using screen objects, then assume 32-bpp because that's what the 1957 + * SVGA device is assuming 1958 + */ 1959 + if (dev_priv->sou_priv) 1960 + assumed_bpp = 4; 1953 1961 1954 1962 /* Add preferred mode */ 1955 1963 { ··· 1968 1960 mode->vdisplay = du->pref_height; 1969 1961 vmw_guess_mode_timing(mode); 1970 1962 1971 - if (vmw_kms_validate_mode_vram(dev_priv, mode->hdisplay * 2, 1972 - mode->vdisplay)) { 1963 + if (vmw_kms_validate_mode_vram(dev_priv, 1964 + mode->hdisplay * assumed_bpp, 1965 + mode->vdisplay)) { 1973 1966 drm_mode_probed_add(connector, mode); 1974 1967 } else { 1975 1968 drm_mode_destroy(dev, mode); ··· 1992 1983 bmode->vdisplay > max_height) 1993 1984 continue; 1994 1985 1995 - if (!vmw_kms_validate_mode_vram(dev_priv, bmode->hdisplay * 2, 1986 + if (!vmw_kms_validate_mode_vram(dev_priv, 1987 + bmode->hdisplay * assumed_bpp, 1996 1988 bmode->vdisplay)) 1997 1989 continue; 1998 1990
-1
include/drm/drm_pciids.h
··· 74 74 {0x1002, 0x4C64, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ 75 75 {0x1002, 0x4C66, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ 76 76 {0x1002, 0x4C67, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ 77 - {0x1002, 0x4C6E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280|RADEON_IS_MOBILITY}, \ 78 77 {0x1002, 0x4E44, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ 79 78 {0x1002, 0x4E45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ 80 79 {0x1002, 0x4E46, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \