forked from Imagelibrary/rtems
85 lines
2.3 KiB
C
85 lines
2.3 KiB
C
/*
|
|
* PCI defines and function prototypes
|
|
*
|
|
* For more information, please consult the following manuals (look at
|
|
* http://www.pcisig.com/ for how to get them):
|
|
*
|
|
* PCI BIOS Specification
|
|
* PCI Local Bus Specification
|
|
* PCI to PCI Bridge Specification
|
|
* PCI System Design Guide
|
|
*/
|
|
|
|
/*
|
|
* Copyright 1994, Drew Eckhardt
|
|
* Copyright 1997, 1998 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
|
*/
|
|
|
|
#ifndef BSP_POWERPC_PCI_H
|
|
#define BSP_POWERPC_PCI_H
|
|
|
|
#include <rtems/pci.h>
|
|
#include <stdio.h>
|
|
|
|
struct _pin_routes
|
|
{
|
|
int pin;
|
|
int int_name[4];
|
|
};
|
|
struct _int_map
|
|
{
|
|
int bus;
|
|
int slot;
|
|
int opts;
|
|
struct _pin_routes pin_route[5];
|
|
};
|
|
|
|
/* If there's a conflict between a name in the routing table and
|
|
* what's already set on the device, reprogram the device setting
|
|
* to reflect int_name[0] for the routing table entry
|
|
*/
|
|
#define PCI_FIXUP_OPT_OVERRIDE_NAME (1<<0)
|
|
|
|
/*
|
|
* This is assumed to be provided by the BSP.
|
|
*/
|
|
void detect_host_bridge(void);
|
|
|
|
void FixupPCI( const struct _int_map *, int (*swizzler)(int,int) );
|
|
|
|
/* FIXME: This probably belongs into rtems/pci.h */
|
|
extern unsigned char pci_bus_count(void);
|
|
|
|
/* FIXME: This also is generic and could go into rtems/pci.h */
|
|
|
|
/* Scan pci config space and run a user callback on each
|
|
* device present; the user callback may return 0 to
|
|
* continue the scan or a value > 0 to abort the scan.
|
|
* Return values < 0 are reserved and must not be used.
|
|
*
|
|
* RETURNS: a (opaque) handle pointing to the bus/slot/fn-triple
|
|
* just after where the scan was aborted by a callback
|
|
* returning 1 (see above) or NULL if all devices were
|
|
* scanned.
|
|
* The handle may be passed to this routine to resume the
|
|
* scan continuing with the device after the one causing the
|
|
* abort.
|
|
* Pass a NULL 'handle' argument to start scanning from
|
|
* the beginning (bus/slot/fn = 0/0/0).
|
|
*/
|
|
typedef void *BSP_PciScanHandle;
|
|
typedef int (*BSP_PciScannerCb)(int bus, int slot, int fun, void *uarg);
|
|
|
|
BSP_PciScanHandle
|
|
BSP_pciScan(BSP_PciScanHandle handle, BSP_PciScannerCb cb, void *uarg);
|
|
|
|
/* Dump basic config. space info to a file. The argument may
|
|
* be NULL in which case 'stdout' is used.
|
|
* NOTE: the C-library must be functional before you can use
|
|
* this routine.
|
|
*/
|
|
void
|
|
BSP_pciConfigDump(FILE *fp);
|
|
|
|
#endif /* BSP_POWERPC_PCI_H */
|