Merge remote branch 'korg/drm-radeon-testing' into drm-next-stage
Dave Airlie [Thu, 25 Feb 2010 03:44:04 +0000 (13:44 +1000)]
* korg/drm-radeon-testing: (62 commits)
  drm/radeon/kms: update new pll algo
  drm/radeon/kms: add support for square microtiles on r3xx-r5xx
  drm/radeon/kms: force pinning buffer into visible VRAM
  drm/radeon/kms/evergreen: fix typo in cursor code
  drm/radeon/kms: implement reading active PCIE lanes on R600+
  drm/radeon/kms: for downclocking non-mobility check PERFORMANCE state
  drm/radeon/kms: simplify storing current and requested PM mode
  drm/radeon: fixes for r6xx/r7xx gfx init
  drm/radeon/rv740: fix backend setup
  drm/radeon/kms: fix R3XX/R4XX memory controller initialization
  [rfc] drm/radeon/kms: pm debugging check for vbl.
  drm/radeon: Fix memory allocation failures in the preKMS command stream checking.
  drm: Add generic multipart buffer.
  drm/radeon/kms: simplify memory controller setup V2
  drm/radeon: Add asic hook for dma copy to r200 cards.
  drm/radeon/kms: Create asic structure for r300 pcie cards.
  drm/radeon/kms: remove unused r600_gart_clear_page
  drm/radeon/kms: remove HDP flushes from fence emit (v2)
  drm/radeon/kms: add LVDS pll quirk for Dell Studio 15
  drm/radeon/kms: simplify picking power state
  ...

Conflicts:
drivers/gpu/drm/radeon/atom.c
drivers/gpu/drm/radeon/atombios.h
drivers/gpu/drm/radeon/atombios_dp.c
drivers/gpu/drm/radeon/r600.c
drivers/gpu/drm/radeon/r600_audio.c
drivers/gpu/drm/radeon/r600_cp.c
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_connectors.c
drivers/gpu/drm/radeon/radeon_ring.c
drivers/gpu/drm/radeon/rv770.c

13 files changed:
1  2 
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/radeon/atombios_dp.c
drivers/gpu/drm/radeon/r600.c
drivers/gpu/drm/radeon/r600_audio.c
drivers/gpu/drm/radeon/radeon_atombios.c
drivers/gpu/drm/radeon/radeon_connectors.c
drivers/gpu/drm/radeon/radeon_cursor.c
drivers/gpu/drm/radeon/radeon_display.c
drivers/gpu/drm/radeon/radeon_drv.h
drivers/gpu/drm/radeon/radeon_fb.c
drivers/gpu/drm/radeon/radeon_ring.c
drivers/gpu/drm/radeon/radeon_state.c
drivers/gpu/drm/radeon/radeon_ttm.c

Simple merge
@@@ -329,32 -333,30 +333,34 @@@ bool radeon_process_aux_ch(struct radeo
  {
        struct drm_device *dev = chan->dev;
        struct radeon_device *rdev = dev->dev_private;
-       PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION args;
+       union aux_channel_transaction args;
        int index = GetIndexIntoMasterTable(COMMAND, ProcessAuxChannelTransaction);
        unsigned char *base;
 +      int retry_count = 0;
  
        memset(&args, 0, sizeof(args));
  
        base = (unsigned char *)rdev->mode_info.atom_context->scratch;
  
 +retry:
        memcpy(base, req_bytes, num_bytes);
  
-       args.lpAuxRequest = 0;
-       args.lpDataOut = 16;
-       args.ucDataOutLen = 0;
-       args.ucChannelID = chan->rec.i2c_id;
-       args.ucDelay = delay / 10;
+       args.v1.lpAuxRequest = 0;
+       args.v1.lpDataOut = 16;
+       args.v1.ucDataOutLen = 0;
+       args.v1.ucChannelID = chan->rec.i2c_id;
+       args.v1.ucDelay = delay / 10;
+       if (ASIC_IS_DCE4(rdev))
+               args.v2.ucHPD_ID = chan->rec.hpd_id;
  
        atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
  
-       if (args.ucReplyStatus && !args.ucDataOutLen) {
-               if (args.ucReplyStatus == 0x20 && retry_count++ < 10)
 -      if (args.v1.ucReplyStatus) {
 -              DRM_DEBUG("failed to get auxch %02x%02x %02x %02x 0x%02x %02x\n",
++      if (args.v1.ucReplyStatus && !args.v1.ucDataOutLen) {
++              if (args.v1.ucReplyStatus == 0x20 && retry_count++ < 10)
 +                      goto retry;
 +              DRM_DEBUG("failed to get auxch %02x%02x %02x %02x 0x%02x %02x after %d retries\n",
                          req_bytes[1], req_bytes[0], req_bytes[2], req_bytes[3],
-                         chan->rec.i2c_id, args.ucReplyStatus, retry_count);
 -                        chan->rec.i2c_id, args.v1.ucReplyStatus);
++                        chan->rec.i2c_id, args.v1.ucReplyStatus, retry_count);
                return false;
        }
  
Simple merge
@@@ -262,5 -270,6 +270,7 @@@ void r600_audio_fini(struct radeon_devi
                return;
  
        del_timer(&rdev->audio_timer);
 +      WREG32_P(R600_AUDIO_ENABLE, 0x0, ~0x81000000);
+       r600_audio_engine_enable(rdev, false);
  }
@@@ -587,11 -585,7 +585,8 @@@ static enum drm_connector_status radeon
        if (!encoder)
                ret = connector_status_disconnected;
  
-       if (radeon_connector->ddc_bus) {
-               radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
 -      dret = radeon_ddc_probe(radeon_connector);
++      if (radeon_connector->ddc_bus)
 +              dret = radeon_ddc_probe(radeon_connector);
-               radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
-       }
        if (dret) {
                if (radeon_connector->edid) {
                        kfree(radeon_connector->edid);
@@@ -742,13 -734,9 +735,10 @@@ static enum drm_connector_status radeon
        struct drm_mode_object *obj;
        int i;
        enum drm_connector_status ret = connector_status_disconnected;
 -      bool dret;
 +      bool dret = false;
  
-       if (radeon_connector->ddc_bus) {
-               radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
 -      dret = radeon_ddc_probe(radeon_connector);
++      if (radeon_connector->ddc_bus)
 +              dret = radeon_ddc_probe(radeon_connector);
-               radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
-       }
        if (dret) {
                if (radeon_connector->edid) {
                        kfree(radeon_connector->edid);
Simple merge
Simple merge
@@@ -192,6 -221,7 +223,8 @@@ void radeon_ib_pool_fini(struct radeon_
                return;
        }
        mutex_lock(&rdev->ib_pool.mutex);
+       radeon_ib_bogus_cleanup(rdev);
++
        if (rdev->ib_pool.robj) {
                r = radeon_bo_reserve(rdev->ib_pool.robj, false);
                if (likely(r == 0)) {
Simple merge
Simple merge