2019-05-27 08:55:05 +02:00
// SPDX-License-Identifier: GPL-2.0-or-later
2005-04-16 15:20:36 -07:00
/*
* arch / arm / mach - ixp4xx / gtwx5715 - pci . c
*
* Gemtek GTWX5715 ( Linksys WRV54G ) board setup
*
* Copyright ( C ) 2004 George T . Joseph
* Derived from Coyote
*/
# include <linux/pci.h>
# include <linux/init.h>
# include <linux/delay.h>
2007-05-31 12:27:14 +01:00
# include <linux/irq.h>
2005-04-16 15:20:36 -07:00
# include <asm/mach-types.h>
2008-08-05 16:14:15 +01:00
# include <mach/hardware.h>
2005-04-16 15:20:36 -07:00
# include <asm/mach/pci.h>
2018-12-29 15:47:52 +01:00
# include "irqs.h"
2009-11-17 18:48:23 +01:00
# define SLOT0_DEVID 0
# define SLOT1_DEVID 1
2009-11-18 00:39:01 +01:00
# define INTA 10 /* slot 1 has INTA and INTB crossed */
# define INTB 11
2009-11-16 23:24:57 +01:00
2005-08-29 22:46:30 +01:00
/*
* Slot 0 isn ' t actually populated with a card connector but
* we initialize it anyway in case a future version has the
* slot populated or someone with good soldering skills has
* some free time .
*/
2005-04-16 15:20:36 -07:00
void __init gtwx5715_pci_preinit ( void )
{
2011-03-24 13:25:22 +01:00
irq_set_irq_type ( IXP4XX_GPIO_IRQ ( INTA ) , IRQ_TYPE_LEVEL_LOW ) ;
irq_set_irq_type ( IXP4XX_GPIO_IRQ ( INTB ) , IRQ_TYPE_LEVEL_LOW ) ;
2005-04-16 15:20:36 -07:00
ixp4xx_pci_preinit ( ) ;
}
2011-06-10 15:30:21 +01:00
static int __init gtwx5715_map_irq ( const struct pci_dev * dev , u8 slot , u8 pin )
2005-04-16 15:20:36 -07:00
{
2009-11-18 00:39:01 +01:00
int rc = - 1 ;
2005-04-16 15:20:36 -07:00
2009-11-18 00:39:01 +01:00
if ( ( slot = = SLOT0_DEVID & & pin = = 1 ) | |
( slot = = SLOT1_DEVID & & pin = = 2 ) )
rc = IXP4XX_GPIO_IRQ ( INTA ) ;
else if ( ( slot = = SLOT0_DEVID & & pin = = 2 ) | |
( slot = = SLOT1_DEVID & & pin = = 1 ) )
rc = IXP4XX_GPIO_IRQ ( INTB ) ;
2005-04-16 15:20:36 -07:00
2009-11-17 18:48:23 +01:00
printk ( KERN_INFO " %s: Mapped slot %d pin %d to IRQ %d \n " ,
__func__ , slot , pin , rc ) ;
return rc ;
2005-04-16 15:20:36 -07:00
}
struct hw_pci gtwx5715_pci __initdata = {
. nr_controllers = 1 ,
2012-03-10 12:49:16 +00:00
. ops = & ixp4xx_ops ,
2005-04-16 15:20:36 -07:00
. preinit = gtwx5715_pci_preinit ,
. setup = ixp4xx_setup ,
. map_irq = gtwx5715_map_irq ,
} ;
int __init gtwx5715_pci_init ( void )
{
if ( machine_is_gtwx5715 ( ) )
pci_common_init ( & gtwx5715_pci ) ;
return 0 ;
}
subsys_initcall ( gtwx5715_pci_init ) ;