diff options
author | Anatolij Gustschin <agust@denx.de> | 2011-05-13 06:52:29 -0400 |
---|---|---|
committer | Anatolij Gustschin <agust@denx.de> | 2011-05-24 10:28:51 -0400 |
commit | 12ed0c4baa4144ab3560ae793b5120316d74c0fe (patch) | |
tree | 9f11d4848972490c5b8a4825428ebfbe5a211e4d /drivers/video/mb862xx/mb862xxfb.c | |
parent | 3cadf9455c31de340ed77394dfad330caeb66b58 (diff) |
video: mb862xxfb: relocate register space to get contiguous vram
By default the GDC registers are located in the middle of the 64MiB
area for video RAM and registers. When 32MiB VRAM or more is used,
relocate the register space to the top of the 64MiB space so that
we get the contiguous VRAM for GDC frame buffer layers, drawing
frames, capture and cursor buffers.
Signed-off-by: Anatolij Gustschin <agust@denx.de>
Diffstat (limited to 'drivers/video/mb862xx/mb862xxfb.c')
-rw-r--r-- | drivers/video/mb862xx/mb862xxfb.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/video/mb862xx/mb862xxfb.c b/drivers/video/mb862xx/mb862xxfb.c index a1b81e73394c..ffb6a2c36d3c 100644 --- a/drivers/video/mb862xx/mb862xxfb.c +++ b/drivers/video/mb862xx/mb862xxfb.c | |||
@@ -742,6 +742,12 @@ static int coralp_init(struct mb862xxfb_par *par) | |||
742 | 742 | ||
743 | par->refclk = GC_DISP_REFCLK_400; | 743 | par->refclk = GC_DISP_REFCLK_400; |
744 | 744 | ||
745 | if (par->mapped_vram >= 0x2000000) { | ||
746 | /* relocate gdc registers space */ | ||
747 | writel(1, par->fb_base + MB862XX_MMIO_BASE + GC_RSW); | ||
748 | udelay(1); /* wait at least 20 bus cycles */ | ||
749 | } | ||
750 | |||
745 | ver = inreg(host, GC_CID); | 751 | ver = inreg(host, GC_CID); |
746 | cn = (ver & GC_CID_CNAME_MSK) >> 8; | 752 | cn = (ver & GC_CID_CNAME_MSK) >> 8; |
747 | ver = ver & GC_CID_VERSION_MSK; | 753 | ver = ver & GC_CID_VERSION_MSK; |
@@ -907,7 +913,13 @@ static int __devinit mb862xx_pci_probe(struct pci_dev *pdev, | |||
907 | case PCI_DEVICE_ID_FUJITSU_CORALPA: | 913 | case PCI_DEVICE_ID_FUJITSU_CORALPA: |
908 | par->fb_base_phys = pci_resource_start(par->pdev, 0); | 914 | par->fb_base_phys = pci_resource_start(par->pdev, 0); |
909 | par->mapped_vram = CORALP_MEM_SIZE; | 915 | par->mapped_vram = CORALP_MEM_SIZE; |
910 | par->mmio_base_phys = par->fb_base_phys + MB862XX_MMIO_BASE; | 916 | if (par->mapped_vram >= 0x2000000) { |
917 | par->mmio_base_phys = par->fb_base_phys + | ||
918 | MB862XX_MMIO_HIGH_BASE; | ||
919 | } else { | ||
920 | par->mmio_base_phys = par->fb_base_phys + | ||
921 | MB862XX_MMIO_BASE; | ||
922 | } | ||
911 | par->mmio_len = MB862XX_MMIO_SIZE; | 923 | par->mmio_len = MB862XX_MMIO_SIZE; |
912 | par->type = BT_CORALP; | 924 | par->type = BT_CORALP; |
913 | break; | 925 | break; |