1/* 2 * arch/arm/mach-ixp4xx/ixdpg425-pci.c 3 * 4 * PCI setup routines for Intel IXDPG425 Platform 5 * 6 * Copyright (C) 2004 MontaVista Softwrae, Inc. 7 * 8 * Maintainer: Deepak Saxena <dsaxena@plexity.net> 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 as 12 * published by the Free Software Foundation. 13 * 14 */ 15 16#include <linux/kernel.h> 17#include <linux/pci.h> 18#include <linux/init.h> 19#include <linux/irq.h> 20 21#include <asm/mach-types.h> 22#include <mach/hardware.h> 23 24#include <asm/mach/pci.h> 25 26void __init ixdpg425_pci_preinit(void) 27{ 28 irq_set_irq_type(IRQ_IXP4XX_GPIO6, IRQ_TYPE_LEVEL_LOW); 29 irq_set_irq_type(IRQ_IXP4XX_GPIO7, IRQ_TYPE_LEVEL_LOW); 30 31 ixp4xx_pci_preinit(); 32} 33 34static int __init ixdpg425_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 35{ 36 if (slot == 12 || slot == 13) 37 return IRQ_IXP4XX_GPIO7; 38 else if (slot == 14) 39 return IRQ_IXP4XX_GPIO6; 40 else return -1; 41} 42 43struct hw_pci ixdpg425_pci __initdata = { 44 .nr_controllers = 1, 45 .ops = &ixp4xx_ops, 46 .preinit = ixdpg425_pci_preinit, 47 .setup = ixp4xx_setup, 48 .map_irq = ixdpg425_map_irq, 49}; 50 51int __init ixdpg425_pci_init(void) 52{ 53 if (machine_is_ixdpg425()) 54 pci_common_init(&ixdpg425_pci); 55 return 0; 56} 57 58subsys_initcall(ixdpg425_pci_init); 59