Thread (44 messages) 44 messages, 11 authors, 2012-06-20

Re: [PATCH V2 12/16] drm/radeon: Make radeon card usable for Loongson.

From: Alex Deucher <hidden>
Date: 2012-06-20 16:16:48
Also in: dri-devel

On Wed, Jun 20, 2012 at 4:28 AM, Huacai Chen [off-list ref] wrote:
On Wed, Jun 20, 2012 at 9:26 AM, Alex Deucher [off-list ref] wrote:
quoted
On Tue, Jun 19, 2012 at 9:57 AM, j.glisse [off-list ref] wrote:
quoted
On Tue, Jun 19, 2012 at 02:50:20PM +0800, Huacai Chen wrote:
quoted
1, Use 32-bit DMA as a workaround (Loongson has a hardware bug that it
   doesn't support DMA address above 4GB).
2, Read vga bios offered by system firmware.
3, Handle io prot correctly for MIPS.
4, Don't use swiotlb on Loongson machines (when use swiotlb, GPU reset
   occurs at resume from suspend).

Signed-off-by: Huacai Chen <redacted>
Signed-off-by: Hongliang Tao <redacted>
Signed-off-by: Hua Yan <redacted>
Cc: dri-devel@lists.freedesktop.org
---
 drivers/gpu/drm/drm_vm.c               |    2 +-
 drivers/gpu/drm/radeon/radeon_bios.c   |   32 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/radeon/radeon_device.c |    5 +++++
 drivers/gpu/drm/radeon/radeon_ttm.c    |    6 +++---
 drivers/gpu/drm/ttm/ttm_bo_util.c      |    2 +-
 include/drm/drm_sarea.h                |    2 ++
 6 files changed, 44 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
index 961ee08..3f06166 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -62,7 +62,7 @@ static pgprot_t drm_io_prot(uint32_t map_type, struct vm_area_struct *vma)
              tmp = pgprot_writecombine(tmp);
      else
              tmp = pgprot_noncached(tmp);
-#elif defined(__sparc__) || defined(__arm__)
+#elif defined(__sparc__) || defined(__arm__) || defined(__mips__)
      tmp = pgprot_noncached(tmp);
 #endif
      return tmp;
diff --git a/drivers/gpu/drm/radeon/radeon_bios.c b/drivers/gpu/drm/radeon/radeon_bios.c
index 501f488..2630e22 100644
--- a/drivers/gpu/drm/radeon/radeon_bios.c
+++ b/drivers/gpu/drm/radeon/radeon_bios.c
@@ -29,6 +29,7 @@
 #include "radeon_reg.h"
 #include "radeon.h"
 #include "atom.h"
+#include <asm/bootinfo.h>

 #include <linux/vga_switcheroo.h>
 #include <linux/slab.h>
@@ -73,6 +74,32 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)
      return true;
 }

+#ifdef CONFIG_CPU_LOONGSON3
+extern u64 vgabios_addr;
Ugly, is this how platform specific stuff are handled usualy ? I hope not,
i would rather see a platform specific function such as loongson3_get_vga_bios.
It could be hooked in as a pci quirk similar to how we read the vbios
from the legacy vga location on x86.
Hi, Alex, the method you said is pci_fixup_video() in arch/x86/pci/fixup.c?
Correct, although you will probably need it in arch/mips/pci for your
platform.  You may want to make your quirk specific to this pci device
unless you need it for all vga chips on your platform.

Alex
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help