diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_device.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 835516d2d257..14671406212f 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c | |||
@@ -99,14 +99,18 @@ static const char radeon_family_name[][16] = { | |||
99 | "KAVERI", | 99 | "KAVERI", |
100 | "KABINI", | 100 | "KABINI", |
101 | "HAWAII", | 101 | "HAWAII", |
102 | "MULLINS", | ||
102 | "LAST", | 103 | "LAST", |
103 | }; | 104 | }; |
104 | 105 | ||
105 | #if defined(CONFIG_VGA_SWITCHEROO) | 106 | bool radeon_is_px(struct drm_device *dev) |
106 | bool radeon_is_px(void); | 107 | { |
107 | #else | 108 | struct radeon_device *rdev = dev->dev_private; |
108 | static inline bool radeon_is_px(void) { return false; } | 109 | |
109 | #endif | 110 | if (rdev->flags & RADEON_IS_PX) |
111 | return true; | ||
112 | return false; | ||
113 | } | ||
110 | 114 | ||
111 | /** | 115 | /** |
112 | * radeon_program_register_sequence - program an array of registers. | 116 | * radeon_program_register_sequence - program an array of registers. |
@@ -1082,7 +1086,7 @@ static void radeon_switcheroo_set_state(struct pci_dev *pdev, enum vga_switchero | |||
1082 | { | 1086 | { |
1083 | struct drm_device *dev = pci_get_drvdata(pdev); | 1087 | struct drm_device *dev = pci_get_drvdata(pdev); |
1084 | 1088 | ||
1085 | if (radeon_is_px() && state == VGA_SWITCHEROO_OFF) | 1089 | if (radeon_is_px(dev) && state == VGA_SWITCHEROO_OFF) |
1086 | return; | 1090 | return; |
1087 | 1091 | ||
1088 | if (state == VGA_SWITCHEROO_ON) { | 1092 | if (state == VGA_SWITCHEROO_ON) { |
@@ -1301,9 +1305,7 @@ int radeon_device_init(struct radeon_device *rdev, | |||
1301 | * ignore it */ | 1305 | * ignore it */ |
1302 | vga_client_register(rdev->pdev, rdev, NULL, radeon_vga_set_decode); | 1306 | vga_client_register(rdev->pdev, rdev, NULL, radeon_vga_set_decode); |
1303 | 1307 | ||
1304 | if (radeon_runtime_pm == 1) | 1308 | if (rdev->flags & RADEON_IS_PX) |
1305 | runtime = true; | ||
1306 | if ((radeon_runtime_pm == -1) && radeon_is_px()) | ||
1307 | runtime = true; | 1309 | runtime = true; |
1308 | vga_switcheroo_register_client(rdev->pdev, &radeon_switcheroo_ops, runtime); | 1310 | vga_switcheroo_register_client(rdev->pdev, &radeon_switcheroo_ops, runtime); |
1309 | if (runtime) | 1311 | if (runtime) |
@@ -1531,11 +1533,6 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon) | |||
1531 | 1533 | ||
1532 | radeon_restore_bios_scratch_regs(rdev); | 1534 | radeon_restore_bios_scratch_regs(rdev); |
1533 | 1535 | ||
1534 | if (fbcon) { | ||
1535 | radeon_fbdev_set_suspend(rdev, 0); | ||
1536 | console_unlock(); | ||
1537 | } | ||
1538 | |||
1539 | /* init dig PHYs, disp eng pll */ | 1536 | /* init dig PHYs, disp eng pll */ |
1540 | if (rdev->is_atom_bios) { | 1537 | if (rdev->is_atom_bios) { |
1541 | radeon_atom_encoder_init(rdev); | 1538 | radeon_atom_encoder_init(rdev); |
@@ -1560,6 +1557,12 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon) | |||
1560 | } | 1557 | } |
1561 | 1558 | ||
1562 | drm_kms_helper_poll_enable(dev); | 1559 | drm_kms_helper_poll_enable(dev); |
1560 | |||
1561 | if (fbcon) { | ||
1562 | radeon_fbdev_set_suspend(rdev, 0); | ||
1563 | console_unlock(); | ||
1564 | } | ||
1565 | |||
1563 | return 0; | 1566 | return 0; |
1564 | } | 1567 | } |
1565 | 1568 | ||