2005-02-01 15:02:37 +03:00
/*
* Copyright ( C ) 2003 , 2004 Ralf Baechle ( ralf @ linux - mips . org )
* Copyright ( C ) 2005 MIPS Technologies , Inc . All rights reserved .
* Author : Maciej W . Rozycki < macro @ mips . com >
*
* This program is free software ; you can distribute it and / or modify it
* under the terms of the GNU General Public License ( Version 2 ) as
* published by the Free Software Foundation .
*
* This program is distributed in the hope it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License
* for more details .
*
* You should have received a copy of the GNU General Public License along
* with this program ; if not , write to the Free Software Foundation , Inc . ,
* 59 Temple Place - Suite 330 , Boston MA 02111 - 1307 , USA .
*/
2005-04-17 02:20:36 +04:00
# include <linux/init.h>
# include <linux/pci.h>
2005-02-01 15:02:37 +03:00
2005-04-17 02:20:36 +04:00
# include <asm/mips-boards/atlasint.h>
2006-09-12 22:12:18 +04:00
# define PCIA ATLAS_INT_PCIA
# define PCIB ATLAS_INT_PCIB
# define PCIC ATLAS_INT_PCIC
# define PCID ATLAS_INT_PCID
# define INTA ATLAS_INT_INTA
# define INTB ATLAS_INT_INTB
# define ETH ATLAS_INT_ETH
# define INTC ATLAS_INT_INTC
# define SCSI ATLAS_INT_SCSI
# define INTD ATLAS_INT_INTD
2005-04-17 02:20:36 +04:00
static char irq_tab [ ] [ 5 ] __initdata = {
/* INTA INTB INTC INTD */
{ 0 , 0 , 0 , 0 , 0 } , /* 0: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 1: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 2: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 3: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 4: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 5: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 6: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 7: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 8: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 9: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 10: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 11: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 12: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 13: Unused */
{ 0 , 0 , 0 , 0 , 0 } , /* 14: Unused */
2005-02-01 15:02:37 +03:00
{ 0 , PCIA , PCIB , PCIC , PCID } , /* 15: cPCI (behind 21150) */
2005-04-17 02:20:36 +04:00
{ 0 , SCSI , 0 , 0 , 0 } , /* 16: SYM53C810A SCSI */
{ 0 , 0 , 0 , 0 , 0 } , /* 17: Core */
2005-02-01 15:02:37 +03:00
{ 0 , INTA , INTB , INTC , INTD } , /* 18: PCI Slot */
{ 0 , ETH , 0 , 0 , 0 } , /* 19: SAA9730 Eth. et al. */
{ 0 , 0 , 0 , 0 , 0 } , /* 20: Unused */
{ 0 , 0 , 0 , 0 , 0 } /* 21: Unused */
2005-04-17 02:20:36 +04:00
} ;
2007-07-10 20:33:00 +04:00
int __init pcibios_map_irq ( const struct pci_dev * dev , u8 slot , u8 pin )
2005-04-17 02:20:36 +04:00
{
return irq_tab [ slot ] [ pin ] ;
}
/* Do platform specific device initialization at pci_enable_device() time */
int pcibios_plat_dev_init ( struct pci_dev * dev )
{
return 0 ;
}
# ifdef CONFIG_KGDB
/*
* The PCI scan may have moved the saa9730 I / O address , so reread
* the address here .
* This does mean that it ' s not possible to debug the PCI bus configuration
* code , but it is better than nothing . . .
*/
2007-10-12 02:46:15 +04:00
static void atlas_saa9730_base_fixup ( struct pci_dev * pdev )
2005-04-17 02:20:36 +04:00
{
extern void * saa9730_base ;
if ( pdev - > bus = = 0 & & PCI_SLOT ( pdev - > devfn ) = = 19 )
2007-10-12 02:46:15 +04:00
( void ) pci_read_config_dword ( pdev , 0x14 , ( u32 * ) & saa9730_base ) ;
printk ( " saa9730_base = %x \n " , saa9730_base ) ;
2005-04-17 02:20:36 +04:00
}
DECLARE_PCI_FIXUP_HEADER ( PCI_VENDOR_ID_PHILIPS , PCI_DEVICE_ID_PHILIPS_SAA9730 ,
atlas_saa9730_base_fixup ) ;
# endif