/* * linux/arch/alpha/kernel/core_marvel.c * * Code common to all Marvel based systems. */ #define __EXTERN_INLINE inline #include #include #undef __EXTERN_INLINE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "proto.h" #include "pci_impl.h" /* * Debug helpers */ #define DEBUG_CONFIG 0 #if DEBUG_CONFIG # define DBG_CFG(args) printk args #else # define DBG_CFG(args) #endif /* * Private data */ static struct io7 *io7_head = NULL; /* * Helper functions */ static unsigned long __attribute__ ((unused)) read_ev7_csr(int pe, unsigned long offset) { ev7_csr *ev7csr = EV7_CSR_KERN(pe, offset); unsigned long q; mb(); q = ev7csr->csr; mb(); return q; } static void __attribute__ ((unused)) write_ev7_csr(int pe, unsigned long offset, unsigned long q) { ev7_csr *ev7csr = EV7_CSR_KERN(pe, offset); mb(); ev7csr->csr = q; mb(); } static char * __init mk_resource_name(int pe, int port, char *str) { char tmp[80]; char *name; sprintf(tmp, "PCI %s PE %d PORT %d", str, pe, port); name = alloc_bootmem(strlen(tmp) + 1); strcpy(name, tmp); return name; } inline struct io7 * marvel_next_io7(struct io7 *prev) { return (prev ? prev->next : io7_head); } struct io7 * marvel_find_io7(int pe) { struct io7 *io7; for (io7 = io7_head; io7 && io7->pe != pe; io7 = io7->next) continue; return io7; } static struct io7 * __init alloc_io7(unsigned int pe) { struct io7 *io7; struct io7 *insp; int h; if (marvel_find_io7(pe)) { printk(KERN_WARNING "IO7 at PE %d already allocated!\n", pe); return NULL; }