1/* 2 * arch/arch/mach-ixp4xx/gateway7001-pci.c 3 * 4 * PCI setup routines for Gateway 7001 5 * 6 * Copyright (C) 2007 Imre Kaloz <kaloz@openwrt.org> 7 * 8 * based on coyote-pci.c: 9 * Copyright (C) 2002 Jungo Software Technologies. 10 * Copyright (C) 2003 MontaVista Softwrae, Inc. 11 * 12 * Maintainer: Imre Kaloz <kaloz@openwrt.org> 13 * 14 * This program is free software; you can redistribute it and/or modify 15 * it under the terms of the GNU General Public License version 2 as 16 * published by the Free Software Foundation. 17 * 18 */ 19 20#include <linux/kernel.h> 21#include <linux/pci.h> 22#include <linux/init.h> 23#include <linux/irq.h> 24 25#include <asm/mach-types.h> 26#include <mach/hardware.h> 27 28#include <asm/mach/pci.h> 29 30void __init gateway7001_pci_preinit(void) 31{ 32 set_irq_type(IRQ_IXP4XX_GPIO10, IRQ_TYPE_LEVEL_LOW); 33 set_irq_type(IRQ_IXP4XX_GPIO11, IRQ_TYPE_LEVEL_LOW); 34 35 ixp4xx_pci_preinit(); 36} 37 38static int __init gateway7001_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 39{ 40 if (slot == 1) 41 return IRQ_IXP4XX_GPIO11; 42 else if (slot == 2) 43 return IRQ_IXP4XX_GPIO10; 44 else return -1; 45} 46 47struct hw_pci gateway7001_pci __initdata = { 48 .nr_controllers = 1, 49 .preinit = gateway7001_pci_preinit, 50 .swizzle = pci_std_swizzle, 51 .setup = ixp4xx_setup, 52 .scan = ixp4xx_scan_bus, 53 .map_irq = gateway7001_map_irq, 54}; 55 56int __init gateway7001_pci_init(void) 57{ 58 if (machine_is_gateway7001()) 59 pci_common_init(&gateway7001_pci); 60 return 0; 61} 62 63subsys_initcall(gateway7001_pci_init); 64