mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (28 commits)
PCI: make arch/i386/pci/common.c:pci_bf_sort static
PCI: ibmphp_pci.c: fix NULL dereference
pciehp: remove unnecessary pci_disable_msi
pciehp: remove unnecessary free_irq
PCI: rpaphp: change device tree examination
PCI: Change memory allocation for acpiphp slots
i2c-i801: SMBus patch for Intel ICH9
PCI: irq: irq and pci_ids patch for Intel ICH9
PCI: pci_{enable,disable}_device() nestable ports
PCI: switch pci_{enable,disable}_device() to be nestable
PCI: arch/i386/kernel/pci-dma.c: ioremap balanced with iounmap
pci/i386: style cleanups
PCI: Block on access to temporarily unavailable pci device
pci: fix __pci_register_driver error handling
pci: clear osc support flags if no _OSC method
acpiphp: fix missing acpiphp_glue_exit()
acpiphp: fix use of list_for_each macro
Altix: Initial ACPI support - ROM shadowing.
Altix: SN ACPI hotplug support.
Altix: Add initial ACPI IO support
...
This commit is contained in:
commit
72a73a69f6
54 changed files with 1400 additions and 959 deletions
|
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
#define IO_SPACE_LIMIT 0xffffffffffffffffUL
|
||||
|
||||
#define MAX_IO_SPACES_BITS 4
|
||||
#define MAX_IO_SPACES_BITS 8
|
||||
#define MAX_IO_SPACES (1UL << MAX_IO_SPACES_BITS)
|
||||
#define IO_SPACE_BITS 24
|
||||
#define IO_SPACE_SIZE (1UL << IO_SPACE_BITS)
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val,
|
|||
typedef int ia64_mv_pci_legacy_write_t (struct pci_bus *, u16 port, u32 val,
|
||||
u8 size);
|
||||
typedef void ia64_mv_migrate_t(struct task_struct * task);
|
||||
typedef void ia64_mv_pci_fixup_bus_t (struct pci_bus *);
|
||||
|
||||
/* DMA-mapping interface: */
|
||||
typedef void ia64_mv_dma_init (void);
|
||||
|
|
@ -95,6 +96,11 @@ machvec_noop_task (struct task_struct *task)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
machvec_noop_bus (struct pci_bus *bus)
|
||||
{
|
||||
}
|
||||
|
||||
extern void machvec_setup (char **);
|
||||
extern void machvec_timer_interrupt (int, void *);
|
||||
extern void machvec_dma_sync_single (struct device *, dma_addr_t, size_t, int);
|
||||
|
|
@ -159,6 +165,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
|
|||
# define platform_migrate ia64_mv.migrate
|
||||
# define platform_setup_msi_irq ia64_mv.setup_msi_irq
|
||||
# define platform_teardown_msi_irq ia64_mv.teardown_msi_irq
|
||||
# define platform_pci_fixup_bus ia64_mv.pci_fixup_bus
|
||||
# endif
|
||||
|
||||
/* __attribute__((__aligned__(16))) is required to make size of the
|
||||
|
|
@ -210,6 +217,7 @@ struct ia64_machine_vector {
|
|||
ia64_mv_migrate_t *migrate;
|
||||
ia64_mv_setup_msi_irq_t *setup_msi_irq;
|
||||
ia64_mv_teardown_msi_irq_t *teardown_msi_irq;
|
||||
ia64_mv_pci_fixup_bus_t *pci_fixup_bus;
|
||||
} __attribute__((__aligned__(16))); /* align attrib? see above comment */
|
||||
|
||||
#define MACHVEC_INIT(name) \
|
||||
|
|
@ -257,6 +265,7 @@ struct ia64_machine_vector {
|
|||
platform_migrate, \
|
||||
platform_setup_msi_irq, \
|
||||
platform_teardown_msi_irq, \
|
||||
platform_pci_fixup_bus, \
|
||||
}
|
||||
|
||||
extern struct ia64_machine_vector ia64_mv;
|
||||
|
|
@ -416,5 +425,8 @@ extern int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size
|
|||
#ifndef platform_teardown_msi_irq
|
||||
# define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL)
|
||||
#endif
|
||||
#ifndef platform_pci_fixup_bus
|
||||
# define platform_pci_fixup_bus machvec_noop_bus
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_IA64_MACHVEC_H */
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ extern ia64_mv_dma_supported sn_dma_supported;
|
|||
extern ia64_mv_migrate_t sn_migrate;
|
||||
extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq;
|
||||
extern ia64_mv_teardown_msi_irq_t sn_teardown_msi_irq;
|
||||
extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus;
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -127,6 +128,7 @@ extern ia64_mv_teardown_msi_irq_t sn_teardown_msi_irq;
|
|||
#define platform_setup_msi_irq ((ia64_mv_setup_msi_irq_t*)NULL)
|
||||
#define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL)
|
||||
#endif
|
||||
#define platform_pci_fixup_bus sn_pci_fixup_bus
|
||||
|
||||
#include <asm/sn/io.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -26,16 +26,18 @@ void pcibios_config_init(void);
|
|||
struct pci_dev;
|
||||
|
||||
/*
|
||||
* PCI_DMA_BUS_IS_PHYS should be set to 1 if there is _necessarily_ a direct correspondence
|
||||
* between device bus addresses and CPU physical addresses. Platforms with a hardware I/O
|
||||
* MMU _must_ turn this off to suppress the bounce buffer handling code in the block and
|
||||
* network device layers. Platforms with separate bus address spaces _must_ turn this off
|
||||
* and provide a device DMA mapping implementation that takes care of the necessary
|
||||
* PCI_DMA_BUS_IS_PHYS should be set to 1 if there is _necessarily_ a direct
|
||||
* correspondence between device bus addresses and CPU physical addresses.
|
||||
* Platforms with a hardware I/O MMU _must_ turn this off to suppress the
|
||||
* bounce buffer handling code in the block and network device layers.
|
||||
* Platforms with separate bus address spaces _must_ turn this off and provide
|
||||
* a device DMA mapping implementation that takes care of the necessary
|
||||
* address translation.
|
||||
*
|
||||
* For now, the ia64 platforms which may have separate/multiple bus address spaces all
|
||||
* have I/O MMUs which support the merging of physically discontiguous buffers, so we can
|
||||
* use that as the sole factor to determine the setting of PCI_DMA_BUS_IS_PHYS.
|
||||
* For now, the ia64 platforms which may have separate/multiple bus address
|
||||
* spaces all have I/O MMUs which support the merging of physically
|
||||
* discontiguous buffers, so we can use that as the sole factor to determine
|
||||
* the setting of PCI_DMA_BUS_IS_PHYS.
|
||||
*/
|
||||
extern unsigned long ia64_max_iommu_merge_mask;
|
||||
#define PCI_DMA_BUS_IS_PHYS (ia64_max_iommu_merge_mask == ~0UL)
|
||||
|
|
@ -52,9 +54,6 @@ pcibios_penalize_isa_irq (int irq, int active)
|
|||
/* We don't do dynamic PCI IRQ allocation */
|
||||
}
|
||||
|
||||
#define HAVE_ARCH_PCI_MWI 1
|
||||
extern int pcibios_prep_mwi (struct pci_dev *);
|
||||
|
||||
#include <asm-generic/pci-dma-compat.h>
|
||||
|
||||
/* pci_unmap_{single,page} is not a nop, thus... */
|
||||
|
|
|
|||
16
include/asm-ia64/sn/acpi.h
Normal file
16
include/asm-ia64/sn/acpi.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2006 Silicon Graphics, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_IA64_SN_ACPI_H
|
||||
#define _ASM_IA64_SN_ACPI_H
|
||||
|
||||
#include "acpi/acglobal.h"
|
||||
|
||||
#define SN_ACPI_BASE_SUPPORT() (acpi_gbl_DSDT->oem_revision >= 0x20101)
|
||||
|
||||
#endif /* _ASM_IA64_SN_ACPI_H */
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved.
|
||||
* Copyright (C) 1992 - 1997, 2000-2006 Silicon Graphics, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef _ASM_IA64_SN_PCI_PCIDEV_H
|
||||
#define _ASM_IA64_SN_PCI_PCIDEV_H
|
||||
|
|
@ -12,31 +12,29 @@
|
|||
|
||||
/*
|
||||
* In ia64, pci_dev->sysdata must be a *pci_controller. To provide access to
|
||||
* the pcidev_info structs for all devices under a controller, we extend the
|
||||
* definition of pci_controller, via sn_pci_controller, to include a list
|
||||
* of pcidev_info.
|
||||
* the pcidev_info structs for all devices under a controller, we keep a
|
||||
* list of pcidev_info under pci_controller->platform_data.
|
||||
*/
|
||||
struct sn_pci_controller {
|
||||
struct pci_controller pci_controller;
|
||||
struct sn_platform_data {
|
||||
void *provider_soft;
|
||||
struct list_head pcidev_info;
|
||||
};
|
||||
|
||||
#define SN_PCI_CONTROLLER(dev) ((struct sn_pci_controller *) dev->sysdata)
|
||||
#define SN_PLATFORM_DATA(busdev) \
|
||||
((struct sn_platform_data *)(PCI_CONTROLLER(busdev)->platform_data))
|
||||
|
||||
#define SN_PCIDEV_INFO(dev) sn_pcidev_info_get(dev)
|
||||
|
||||
#define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \
|
||||
(struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data))
|
||||
/*
|
||||
* Given a pci_bus, return the sn pcibus_bussoft struct. Note that
|
||||
* this only works for root busses, not for busses represented by PPB's.
|
||||
*/
|
||||
|
||||
#define SN_PCIBUS_BUSSOFT(pci_bus) \
|
||||
((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data))
|
||||
((struct pcibus_bussoft *)(SN_PLATFORM_DATA(pci_bus)->provider_soft))
|
||||
|
||||
#define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \
|
||||
(struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data))
|
||||
((struct pcibus_info *)(SN_PLATFORM_DATA(pci_bus)->provider_soft))
|
||||
/*
|
||||
* Given a struct pci_dev, return the sn pcibus_bussoft struct. Note
|
||||
* that this is not equivalent to SN_PCIBUS_BUSSOFT(pci_dev->bus) due
|
||||
|
|
@ -72,8 +70,6 @@ extern void sn_irq_fixup(struct pci_dev *pci_dev,
|
|||
struct sn_irq_info *sn_irq_info);
|
||||
extern void sn_irq_unfixup(struct pci_dev *pci_dev);
|
||||
extern struct pcidev_info * sn_pcidev_info_get(struct pci_dev *);
|
||||
extern void sn_pci_controller_fixup(int segment, int busnum,
|
||||
struct pci_bus *bus);
|
||||
extern void sn_bus_store_sysdata(struct pci_dev *dev);
|
||||
extern void sn_bus_free_sysdata(void);
|
||||
extern void sn_generate_path(struct pci_bus *pci_bus, char *address);
|
||||
|
|
|
|||
|
|
@ -44,8 +44,14 @@ extern int sn_prom_feature_available(int id);
|
|||
* Once enabled, a feature cannot be disabled.
|
||||
*
|
||||
* By default, features are disabled unless explicitly enabled.
|
||||
*
|
||||
* These defines must be kept in sync with the corresponding
|
||||
* PROM definitions in feature_sets.h.
|
||||
*/
|
||||
#define OSF_MCA_SLV_TO_OS_INIT_SLV 0
|
||||
#define OSF_FEAT_LOG_SBES 1
|
||||
#define OSF_ACPI_ENABLE 2
|
||||
#define OSF_PCISEGMENT_ENABLE 3
|
||||
|
||||
|
||||
#endif /* _ASM_IA64_SN_FEATURE_SETS_H */
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@
|
|||
#define SN_SAL_IOIF_GET_WIDGET_DMAFLUSH_LIST 0x02000058 // deprecated
|
||||
#define SN_SAL_IOIF_GET_DEVICE_DMAFLUSH_LIST 0x0200005a
|
||||
|
||||
#define SN_SAL_IOIF_INIT 0x0200005f
|
||||
#define SN_SAL_HUB_ERROR_INTERRUPT 0x02000060
|
||||
#define SN_SAL_BTE_RECOVER 0x02000061
|
||||
#define SN_SAL_RESERVED_DO_NOT_USE 0x02000062
|
||||
|
|
|
|||
Loading…
Reference in a new issue