Sfoglia il codice sorgente

i386: Misc PCI fixups

Change PCI_REGION_MEMORY to PCI_REGION_SYS_MEMORY (Originally done in
commit ff4e66e93c1a, regressed by commit 6d7f610b09f8)

Cast PCI_ROM_ADDRESS_MASK to u32

Wrap probe_pci_video() call inside #ifdef CONFIG_VIDEO

Change call to pci_find_class() to pci_find_devices(). This is based on a
patch submitted on 1st March 2007 (Patch that fixes the compilation errors
for sc520_cdp board) by mushtaq_k

This patch requires that PCI_VIDEO_VENDOR_ID and PCI_VIDEO_DEVICE_ID be
specified in the board config file.  Dummy values have been added for the
SC520 CDP board to enable compilation, but since I do not have one of these,
I do know what the values should be

Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
Graeme Russ 16 anni fa
parent
commit
d754902409

+ 1 - 0
board/sc520_cdp/sc520_cdp.c

@@ -27,6 +27,7 @@
 #include <asm/io.h>
 #include <asm/io.h>
 #include <asm/pci.h>
 #include <asm/pci.h>
 #include <asm/ic/sc520.h>
 #include <asm/ic/sc520.h>
+#include <asm/ic/pci.h>
 #include <ali512x.h>
 #include <ali512x.h>
 #include <spi.h>
 #include <spi.h>
 #include <netdev.h>
 #include <netdev.h>

+ 1 - 1
cpu/i386/sc520/sc520_pci.c

@@ -124,7 +124,7 @@ void pci_sc520_init(struct pci_controller *hose)
 		       SC520_PCI_MEMORY_BUS,
 		       SC520_PCI_MEMORY_BUS,
 		       SC520_PCI_MEMORY_PHYS,
 		       SC520_PCI_MEMORY_PHYS,
 		       SC520_PCI_MEMORY_SIZE,
 		       SC520_PCI_MEMORY_SIZE,
-		       PCI_REGION_MEM | PCI_REGION_MEMORY);
+		       PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
 
 
 	/* PCI memory space */
 	/* PCI memory space */
 	pci_set_region(hose->regions + 1,
 	pci_set_region(hose->regions + 1,

+ 2 - 0
include/configs/sc520_cdp.h

@@ -206,6 +206,8 @@
  ************************************************************/
  ************************************************************/
 #ifndef GRUSS_TESTING
 #ifndef GRUSS_TESTING
 #define CONFIG_VIDEO			/* To enable video controller support */
 #define CONFIG_VIDEO			/* To enable video controller support */
+#define PCI_VIDEO_VENDOR_ID 0		/*Use the appropriate vendor ID*/
+#define PCI_VIDEO_DEVICE_ID 0		/*Use the appropriate Device ID*/
 #else
 #else
 #undef CONFIG_VIDEO
 #undef CONFIG_VIDEO
 #endif
 #endif

+ 1 - 1
lib_i386/pci.c

@@ -60,7 +60,7 @@ int pci_shadow_rom(pci_dev_t dev, unsigned char *dest)
 	       vendor, device, class_code);
 	       vendor, device, class_code);
 #endif
 #endif
 	/* Enable the rom addess decoder */
 	/* Enable the rom addess decoder */
-	pci_write_config_dword(dev, PCI_ROM_ADDRESS, PCI_ROM_ADDRESS_MASK);
+	pci_write_config_dword(dev, PCI_ROM_ADDRESS, (u32)PCI_ROM_ADDRESS_MASK);
 	pci_read_config_dword(dev, PCI_ROM_ADDRESS, &addr_reg);
 	pci_read_config_dword(dev, PCI_ROM_ADDRESS, &addr_reg);
 
 
 	if (!addr_reg) {
 	if (!addr_reg) {

+ 9 - 9
lib_i386/video_bios.c

@@ -76,18 +76,22 @@ void print_bios_bios_stat(void)
 }
 }
 #endif
 #endif
 
 
+#ifdef CONFIG_VIDEO
+
 #define PCI_CLASS_VIDEO             3
 #define PCI_CLASS_VIDEO             3
 #define PCI_CLASS_VIDEO_STD         0
 #define PCI_CLASS_VIDEO_STD         0
 #define PCI_CLASS_VIDEO_PROG_IF_VGA 0
 #define PCI_CLASS_VIDEO_PROG_IF_VGA 0
 
 
+static struct pci_device_id supported[] = {
+	{PCI_VIDEO_VENDOR_ID, PCI_VIDEO_DEVICE_ID},
+	{}
+};
 
 
 static u32 probe_pci_video(void)
 static u32 probe_pci_video(void)
 {
 {
 	pci_dev_t devbusfn;
 	pci_dev_t devbusfn;
 
 
-	if ((devbusfn = pci_find_class(PCI_CLASS_VIDEO,
-				       PCI_CLASS_VIDEO_STD,
-				       PCI_CLASS_VIDEO_PROG_IF_VGA, 0)) != -1) {
+	if ((devbusfn = pci_find_devices(supported, 0) != -1)) {
 		u32 old;
 		u32 old;
 		u32 addr;
 		u32 addr;
 
 
@@ -103,7 +107,7 @@ static u32 probe_pci_video(void)
 
 
 		/* Test the ROM decoder, do the device support a rom? */
 		/* Test the ROM decoder, do the device support a rom? */
 		pci_read_config_dword(devbusfn, PCI_ROM_ADDRESS, &old);
 		pci_read_config_dword(devbusfn, PCI_ROM_ADDRESS, &old);
-		pci_write_config_dword(devbusfn, PCI_ROM_ADDRESS, PCI_ROM_ADDRESS_MASK);
+		pci_write_config_dword(devbusfn, PCI_ROM_ADDRESS, (u32)PCI_ROM_ADDRESS_MASK);
 		pci_read_config_dword(devbusfn, PCI_ROM_ADDRESS, &addr);
 		pci_read_config_dword(devbusfn, PCI_ROM_ADDRESS, &addr);
 		pci_write_config_dword(devbusfn, PCI_ROM_ADDRESS, old);
 		pci_write_config_dword(devbusfn, PCI_ROM_ADDRESS, old);
 
 
@@ -133,11 +137,6 @@ static u32 probe_pci_video(void)
 	return 0;
 	return 0;
 }
 }
 
 
-
-#endif
-
-#ifdef CONFIG_VIDEO
-
 static int probe_isa_video(void)
 static int probe_isa_video(void)
 {
 {
 	u32 ptr;
 	u32 ptr;
@@ -220,3 +219,4 @@ int video_bios_init(void)
 
 
 }
 }
 #endif
 #endif
+#endif