Re: [U-Boot] [PATCH V2] ati_radeon: Support PCI virtual not eq bus mapping.

2010-04-08 Thread Anatolij Gustschin
On Wed, 31 Mar 2010 15:52:40 -0500
Ed Swarthout ed.swarth...@freescale.com wrote:

 Use pci_bus_to_virt() to convert the bus address from the BARs to
 virtual address' to eliminate the direct mapping requirement.
 
 Rename variables to better match usage (_phys - _bus or no-suffix)
 
 This fixes the mpc8572ds CONFIG_PHYS_64BIT mode failure:
 videoboot: Video ROM failed to map!
 
 Tested on mpc8572ds with and without CONFIG_PHYS_64BIT.
 
 Signed-off-by: Ed Swarthout ed.swarth...@freescale.com
 ---
 
 V2: 
 
  Fix typos and warnings as pointed out by Anatolij Gustschin. -thanks
 
  Fixed checkpatch error:
 
  ERROR: do not use assignment in if condition
  #41: FILE: drivers/bios_emulator/atibios.c:198:
  +if ((BIOSImageBus = PCI_findBIOSAddr(pcidev, BIOSImageBAR)) == 0) {
 
  drivers/bios_emulator/atibios.c |   10 +---
  drivers/video/ati_radeon_fb.c   |   47 --
  drivers/video/ati_radeon_fb.h   |4 +-
  3 files changed, 33 insertions(+), 28 deletions(-)

Applied to u-boot-video/master. Thanks!

Anatolij
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH V2] ati_radeon: Support PCI virtual not eq bus mapping.

2010-03-31 Thread Ed Swarthout
Use pci_bus_to_virt() to convert the bus address from the BARs to
virtual address' to eliminate the direct mapping requirement.

Rename variables to better match usage (_phys - _bus or no-suffix)

This fixes the mpc8572ds CONFIG_PHYS_64BIT mode failure:
videoboot: Video ROM failed to map!

Tested on mpc8572ds with and without CONFIG_PHYS_64BIT.

Signed-off-by: Ed Swarthout ed.swarth...@freescale.com
---

V2: 

 Fix typos and warnings as pointed out by Anatolij Gustschin. -thanks

 Fixed checkpatch error:

 ERROR: do not use assignment in if condition
 #41: FILE: drivers/bios_emulator/atibios.c:198:
 +  if ((BIOSImageBus = PCI_findBIOSAddr(pcidev, BIOSImageBAR)) == 0) {

 drivers/bios_emulator/atibios.c |   10 +---
 drivers/video/ati_radeon_fb.c   |   47 --
 drivers/video/ati_radeon_fb.h   |4 +-
 3 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/drivers/bios_emulator/atibios.c b/drivers/bios_emulator/atibios.c
index 2881449..dbb5e8c 100644
--- a/drivers/bios_emulator/atibios.c
+++ b/drivers/bios_emulator/atibios.c
@@ -173,7 +173,7 @@ Maps a pointer to the BIOS image on the graphics card on 
the PCI bus.
 /
 void *PCI_mapBIOSImage(pci_dev_t pcidev)
 {
-   u32 BIOSImagePhys;
+   u32 BIOSImageBus;
int BIOSImageBAR;
u8 *BIOSImage;
 
@@ -195,16 +195,18 @@ void *PCI_mapBIOSImage(pci_dev_t pcidev)
 specific programming for different cards to solve this problem.
*/
 
-   if ((BIOSImagePhys = PCI_findBIOSAddr(pcidev, BIOSImageBAR)) == 0) {
+   BIOSImageBus = PCI_findBIOSAddr(pcidev, BIOSImageBAR);
+   if (BIOSImageBus == 0) {
printf(Find bios addr error\n);
return NULL;
}
 
-   BIOSImage = (u8 *) BIOSImagePhys;
+   BIOSImage = pci_bus_to_virt(pcidev, BIOSImageBus,
+   PCI_REGION_MEM, 0, MAP_NOCACHE);
 
/*Change the PCI BAR registers to map it onto the bus.*/
pci_write_config_dword(pcidev, BIOSImageBAR, 0);
-   pci_write_config_dword(pcidev, PCI_ROM_ADDRESS, BIOSImagePhys | 0x1);
+   pci_write_config_dword(pcidev, PCI_ROM_ADDRESS, BIOSImageBus | 0x1);
 
udelay(1);
 
diff --git a/drivers/video/ati_radeon_fb.c b/drivers/video/ati_radeon_fb.c
index 529ddae..f797104 100644
--- a/drivers/video/ati_radeon_fb.c
+++ b/drivers/video/ati_radeon_fb.c
@@ -210,7 +210,7 @@ static void radeon_identify_vram(struct radeonfb_info 
*rinfo)
 * ToDo: identify these cases
 */
 
-   DPRINT(radeonfb: Found %ldk of %s %d bits wide videoram\n,
+   DPRINT(radeonfb: Found %dk of %s %d bits wide videoram\n,
   rinfo-video_ram / 1024,
   rinfo-vram_ddr ? DDR : SDRAM,
   rinfo-vram_width);
@@ -586,14 +586,16 @@ int radeon_probe(struct radeonfb_info *rinfo)
rinfo-pdev.device = did;
rinfo-family = get_radeon_id_family(rinfo-pdev.device);
pci_read_config_dword(pdev, PCI_BASE_ADDRESS_0,
-   rinfo-fb_base_phys);
+   rinfo-fb_base_bus);
pci_read_config_dword(pdev, PCI_BASE_ADDRESS_2,
-   rinfo-mmio_base_phys);
-   rinfo-fb_base_phys = 0xf000;
-   rinfo-mmio_base_phys = ~0x04;
-
-   rinfo-mmio_base = (void *)rinfo-mmio_base_phys;
-   DPRINT(rinfo-mmio_base = 0x%x\n,rinfo-mmio_base);
+   rinfo-mmio_base_bus);
+   rinfo-fb_base_bus = 0xf000;
+   rinfo-mmio_base_bus = ~0x04;
+
+   rinfo-mmio_base = pci_bus_to_virt(pdev, rinfo-mmio_base_bus,
+   PCI_REGION_MEM, 0, MAP_NOCACHE);
+   DPRINT(rinfo-mmio_base = 0x%x bus=0x%x\n,
+  rinfo-mmio_base, rinfo-mmio_base_bus);
rinfo-fb_local_base = INREG(MC_FB_LOCATION)  16;
DPRINT(rinfo-fb_local_base = 0x%x\n,rinfo-fb_local_base);
/* PostBIOS with x86 emulater */
@@ -611,14 +613,15 @@ int radeon_probe(struct radeonfb_info *rinfo)
 
rinfo-mapped_vram = min_t(unsigned long, MAX_MAPPED_VRAM,
rinfo-video_ram);
-   rinfo-fb_base = (void *)rinfo-fb_base_phys;
-
-   DPRINT(Radeon: framebuffer base phy address 0x%08x, \
- MMIO base phy address 0x%08x, \
- framebuffer local base 0x%08x.\n ,
- rinfo-fb_base_phys, rinfo-mmio_base_phys,
- rinfo-fb_local_base);
-
+   rinfo-fb_base = pci_bus_to_virt(pdev, rinfo-fb_base_bus,
+   PCI_REGION_MEM, 0, MAP_NOCACHE);
+   DPRINT(Radeon: framebuffer base address 0x%08x, 
+  bus address 0x%08x\n
+  MMIO base