Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/radeon/kms: add quirk to make HP DV5000 laptop resume drm/radeon/kms: fix RADEON_INFO_CRTC_FROM_ID info ioctl Fix ttm_page_alloc.c build breakage drm/radeon/kms: fix legacy LVDS dpms sequence drm/radeon/kms: drop taking lock around crtc lookup.
This commit is contained in:
Коммит
84d4db0e22
|
@ -333,7 +333,6 @@ static int evergreen_cs_packet_parse_vline(struct radeon_cs_parser *p)
|
||||||
header = radeon_get_ib_value(p, h_idx);
|
header = radeon_get_ib_value(p, h_idx);
|
||||||
crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1);
|
crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1);
|
||||||
reg = CP_PACKET0_GET_REG(header);
|
reg = CP_PACKET0_GET_REG(header);
|
||||||
mutex_lock(&p->rdev->ddev->mode_config.mutex);
|
|
||||||
obj = drm_mode_object_find(p->rdev->ddev, crtc_id, DRM_MODE_OBJECT_CRTC);
|
obj = drm_mode_object_find(p->rdev->ddev, crtc_id, DRM_MODE_OBJECT_CRTC);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
DRM_ERROR("cannot find crtc %d\n", crtc_id);
|
DRM_ERROR("cannot find crtc %d\n", crtc_id);
|
||||||
|
@ -368,7 +367,6 @@ static int evergreen_cs_packet_parse_vline(struct radeon_cs_parser *p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&p->rdev->ddev->mode_config.mutex);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1230,7 +1230,6 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p)
|
||||||
header = radeon_get_ib_value(p, h_idx);
|
header = radeon_get_ib_value(p, h_idx);
|
||||||
crtc_id = radeon_get_ib_value(p, h_idx + 5);
|
crtc_id = radeon_get_ib_value(p, h_idx + 5);
|
||||||
reg = CP_PACKET0_GET_REG(header);
|
reg = CP_PACKET0_GET_REG(header);
|
||||||
mutex_lock(&p->rdev->ddev->mode_config.mutex);
|
|
||||||
obj = drm_mode_object_find(p->rdev->ddev, crtc_id, DRM_MODE_OBJECT_CRTC);
|
obj = drm_mode_object_find(p->rdev->ddev, crtc_id, DRM_MODE_OBJECT_CRTC);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
DRM_ERROR("cannot find crtc %d\n", crtc_id);
|
DRM_ERROR("cannot find crtc %d\n", crtc_id);
|
||||||
|
@ -1264,7 +1263,6 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p)
|
||||||
ib[h_idx + 3] |= RADEON_ENG_DISPLAY_SELECT_CRTC1;
|
ib[h_idx + 3] |= RADEON_ENG_DISPLAY_SELECT_CRTC1;
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&p->rdev->ddev->mode_config.mutex);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -585,7 +585,7 @@ static int r600_cs_packet_parse_vline(struct radeon_cs_parser *p)
|
||||||
header = radeon_get_ib_value(p, h_idx);
|
header = radeon_get_ib_value(p, h_idx);
|
||||||
crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1);
|
crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1);
|
||||||
reg = CP_PACKET0_GET_REG(header);
|
reg = CP_PACKET0_GET_REG(header);
|
||||||
mutex_lock(&p->rdev->ddev->mode_config.mutex);
|
|
||||||
obj = drm_mode_object_find(p->rdev->ddev, crtc_id, DRM_MODE_OBJECT_CRTC);
|
obj = drm_mode_object_find(p->rdev->ddev, crtc_id, DRM_MODE_OBJECT_CRTC);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
DRM_ERROR("cannot find crtc %d\n", crtc_id);
|
DRM_ERROR("cannot find crtc %d\n", crtc_id);
|
||||||
|
@ -620,7 +620,6 @@ static int r600_cs_packet_parse_vline(struct radeon_cs_parser *p)
|
||||||
ib[h_idx + 4] = AVIVO_D2MODE_VLINE_STATUS >> 2;
|
ib[h_idx + 4] = AVIVO_D2MODE_VLINE_STATUS >> 2;
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&p->rdev->ddev->mode_config.mutex);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3050,6 +3050,14 @@ void radeon_combios_asic_init(struct drm_device *dev)
|
||||||
rdev->pdev->subsystem_device == 0x308b)
|
rdev->pdev->subsystem_device == 0x308b)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* quirk for rs4xx HP dv5000 laptop to make it resume
|
||||||
|
* - it hangs on resume inside the dynclk 1 table.
|
||||||
|
*/
|
||||||
|
if (rdev->family == CHIP_RS480 &&
|
||||||
|
rdev->pdev->subsystem_vendor == 0x103c &&
|
||||||
|
rdev->pdev->subsystem_device == 0x30a4)
|
||||||
|
return;
|
||||||
|
|
||||||
/* DYN CLK 1 */
|
/* DYN CLK 1 */
|
||||||
table = combios_get_table_offset(dev, COMBIOS_DYN_CLK_1_TABLE);
|
table = combios_get_table_offset(dev, COMBIOS_DYN_CLK_1_TABLE);
|
||||||
if (table)
|
if (table)
|
||||||
|
|
|
@ -128,7 +128,8 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
|
||||||
for (i = 0, found = 0; i < rdev->num_crtc; i++) {
|
for (i = 0, found = 0; i < rdev->num_crtc; i++) {
|
||||||
crtc = (struct drm_crtc *)minfo->crtcs[i];
|
crtc = (struct drm_crtc *)minfo->crtcs[i];
|
||||||
if (crtc && crtc->base.id == value) {
|
if (crtc && crtc->base.id == value) {
|
||||||
value = i;
|
struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
|
||||||
|
value = radeon_crtc->crtc_id;
|
||||||
found = 1;
|
found = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,7 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
|
||||||
udelay(panel_pwr_delay * 1000);
|
udelay(panel_pwr_delay * 1000);
|
||||||
WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
|
WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
|
||||||
WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl);
|
WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl);
|
||||||
|
udelay(panel_pwr_delay * 1000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,13 +40,13 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
#ifdef TTM_HAS_AGP
|
|
||||||
#include <asm/agp.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "ttm/ttm_bo_driver.h"
|
#include "ttm/ttm_bo_driver.h"
|
||||||
#include "ttm/ttm_page_alloc.h"
|
#include "ttm/ttm_page_alloc.h"
|
||||||
|
|
||||||
|
#ifdef TTM_HAS_AGP
|
||||||
|
#include <asm/agp.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define NUM_PAGES_TO_ALLOC (PAGE_SIZE/sizeof(struct page *))
|
#define NUM_PAGES_TO_ALLOC (PAGE_SIZE/sizeof(struct page *))
|
||||||
#define SMALL_ALLOCATION 16
|
#define SMALL_ALLOCATION 16
|
||||||
|
|
Загрузка…
Ссылка в новой задаче