linux/arch/arm/mach-ixp4xx/ixdpg425-pci.c
<<
>>
Prefs
   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