|  | /* | 
|  | * arch/sh/stboard/setup.c | 
|  | * | 
|  | * Copyright (C) 2001 Stuart Menefy (stuart.menefy@st.com) | 
|  | * | 
|  | * May be copied or modified under the terms of the GNU General Public | 
|  | * License.  See linux/COPYING for more information. | 
|  | * | 
|  | * STMicroelectronics ST40STB1 HARP and compatible support. | 
|  | */ | 
|  |  | 
|  | #include <linux/config.h> | 
|  | #include <linux/kernel.h> | 
|  | #include <linux/init.h> | 
|  | #include <asm/io.h> | 
|  | #include <asm/harp/harp.h> | 
|  |  | 
|  | const char *get_system_type(void) | 
|  | { | 
|  | return "STB1 Harp"; | 
|  | } | 
|  |  | 
|  | /* | 
|  | * Initialize the board | 
|  | */ | 
|  | int __init platform_setup(void) | 
|  | { | 
|  | #ifdef CONFIG_SH_STB1_HARP | 
|  | unsigned long ic8_version, ic36_version; | 
|  |  | 
|  | ic8_version = ctrl_inl(EPLD_REVID2); | 
|  | ic36_version = ctrl_inl(EPLD_REVID1); | 
|  |  | 
|  | printk("STMicroelectronics STB1 HARP initialisaton\n"); | 
|  | printk("EPLD versions: IC8: %d.%02d, IC36: %d.%02d\n", | 
|  | (ic8_version >> 4) & 0xf, ic8_version & 0xf, | 
|  | (ic36_version >> 4) & 0xf, ic36_version & 0xf); | 
|  | #elif defined(CONFIG_SH_STB1_OVERDRIVE) | 
|  | unsigned long version; | 
|  |  | 
|  | version = ctrl_inl(EPLD_REVID); | 
|  |  | 
|  | printk("STMicroelectronics STB1 Overdrive initialisaton\n"); | 
|  | printk("EPLD version: %d.%02d\n", | 
|  | (version >> 4) & 0xf, version & 0xf); | 
|  | #else | 
|  | #error Undefined machine | 
|  | #endif | 
|  |  | 
|  | /* Currently all STB1 chips have problems with the sleep instruction, | 
|  | * so disable it here. | 
|  | */ | 
|  | disable_hlt(); | 
|  |  | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /* | 
|  | * pcibios_map_platform_irq | 
|  | * | 
|  | * This is board specific and returns the IRQ for a given PCI device. | 
|  | * It is used by the PCI code (arch/sh/kernel/st40_pci*) | 
|  | * | 
|  | */ | 
|  |  | 
|  | #define HARP_PCI_IRQ    1 | 
|  | #define HARP_BRIDGE_IRQ 2 | 
|  | #define OVERDRIVE_SLOT0_IRQ 0 | 
|  |  | 
|  |  | 
|  | int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin) | 
|  | { | 
|  | switch (slot) { | 
|  | #ifdef CONFIG_SH_STB1_HARP | 
|  | case 2:		/*This is the PCI slot on the */ | 
|  | return HARP_PCI_IRQ; | 
|  | case 1:		/* this is the bridge */ | 
|  | return HARP_BRIDGE_IRQ; | 
|  | #elif defined(CONFIG_SH_STB1_OVERDRIVE) | 
|  | case 1: | 
|  | case 2: | 
|  | case 3: | 
|  | return slot - 1; | 
|  | #else | 
|  | #error Unknown board | 
|  | #endif | 
|  | default: | 
|  | return -1; | 
|  | } | 
|  | } | 
|  |  |