22 Jun, 2005

40 commits

  • This series of patches reworks the configuration and internal structure
    of the SGI IOC4 I/O controller device drivers.

    These changes are motivated by several factors:

    - The IOC4 chip PCI resources are of mixed use between functions (i.e.
    multiple functions are handled in the same address range, sometimes
    within the same register), muddling resource ownership and initialization
    issues. Centralizing this ownership in a core driver is desirable.

    - The IOC4 chip implements multiple functions (serial, IDE, others not
    yet implemented in the mainline kernel) but is not a multifunction
    PCI device. In order to properly handle device addition and removal
    as well as module insertion and deletion, an intermediary IOC4-specific
    driver layer is needed to handle these operations cleanly.

    - All IOC4 drivers are currently enabled by a single CONFIG value. As
    not all systems need all IOC4 functions, it is desireable to enable
    these drivers independently.

    - The current IOC4 core driver will trigger loading of all function-level
    drivers, as it makes direct calls to them. This situation should be
    reversed (i.e. function-level drivers cause loading of core driver)
    in order to maintain a clear and least-surprise driver loading model.

    - IOC4 hardware design necessitates some driver-level dependency on
    the PCI bus clock speed. Current code assumes a 66MHz bus, but the
    speed should be autodetected and appropriate compensation taken.

    This patch series effects the above changes by a newly and better designed
    IOC4 core driver with which the function-level drivers can register and
    deregister themselves upon module insertion/removal. By tracking these
    modules, device addition/removal is also handled properly. PCI resource
    management and ownership issues are centralized in this core driver, and
    IOC4-wide configuration actions such as bus speed detection are also
    handled in this core driver.

    This patch:

    The SGI IOC4 I/O controller chip implements multiple functions, though it is
    not a multi-function PCI device. Additionally, various PCI resources of the
    IOC4 are shared by multiple hardware functions, and thus resource ownership by
    driver is not clearly delineated. Due to the current driver design, all core
    and subordinate drivers must be loaded, or none, which is undesirable if not
    all IOC4 hardware features are being used.

    This patch reorganizes the IOC4 drivers so that the core driver provides a
    subdriver registration service. Through appropriate callbacks the subdrivers
    can now handle device addition and removal, as well as module insertion and
    deletion (though the IOC4 IDE driver requires further work before module
    deletion will work). The core driver now takes care of allocating PCI
    resources and data which must be shared between subdrivers, to clearly
    delineate module ownership of these items.

    Signed-off-by: Brent Casavant
    Acked-by: Pat Gefre
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brent Casavant
     
  • Add vr41xx gpio support.

    Signed-off-by: Yoichi Yuasa
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yoichi Yuasa
     
  • Allow the SMT bit to be set/reset at boot, like the ALTIVEC bit. This
    means we will enable SMT on unknown cpus that support it.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • We dont use the hardware referenced and changed bits and setting them early
    avoids a store to memory. We already do this for userspace hptes but not
    kernel ones. Do it.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • Currently we dynamically allocate the fake parent device for all devices on
    the vio bus. This patch statically allocates it. This also allows us to
    reuse it for the iSeries "generic" vio device (that is used for passing to
    dma routines when communicating with the hypervisor without a device
    involved). Also unexport vio_bus_type as it is never used in modules.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch allows iSeries to build with CONFIG_PCI=n. This is useful for
    partitions that have only virtual I/O.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch just removes some dead code, fixes messages that referred to the
    file this code used to be in and inserts XmPciLpEvent_init into its caller.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch just merges XmPciLpEvent.c into iSeries_irq.c (the only caller of
    its only external function). XmPciLpEvent.c just contained the lowlevel
    iSeries irq code.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch is just simple cleanups to the iSeries irq code.
    - whitespace and comments
    - rearrange some functions to avoid forward declarations
    - remove XmPciLpEvent.h as its functions were declared elsewhere
    - remove decaration of function that no longer exists
    No semantic changes.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The AgentId, PhbId, FrameId, CardLocation and Location members of
    iSeries_Device_Node are stored early in the boot process just so that a
    message about the device can be printed later in the boot process. Remove
    them and construct the message by doing the VPD parsing at the time the
    message is printed.

    Also remove a few unused defines in iSeries_VpdInfo.c.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The IoRetry member of iSeries_Devide_Node is really only used locally, so
    remove it and replace it with a local variable.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Remove no longer used things from iSeries_pci.h.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Clean up iSeries_VpdInfo.c:
    - white space and comment fixes
    - make a function static
    - the functions here are only called from iSeries_pci.c, so
    CONFIG_PCI will be set (so remove check)
    - only build when CONFIG_PCI is set
    - remove unneeded includes and cast

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The iommu_table_cb structure is iSeries specific, so move it to the header
    file that declares the function we pass it to. vio_tce_table and
    iommu_setup_iSeries no longer exist, so remove their declarations.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The file arch/ppc64/kernel/iSeries_pci_reset contains only one function that
    is not use anywhere (any more). Remove it. This function is the only user of
    the ReturnCode member of iSeries_Device_Node, so remove that as well.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Last of this round of the iSeries header cleanups
    - don't have two defines for the same thing (HvMaxArchitectedLps
    and HvMaxArchitectedVirtualLans)
    - HvCallSc.h only needs linux/types.h
    - remove unused struct definition
    - add "extern" to some more function declarations

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch removes some unused bits from HvCall.h and some unneeded #includes
    from other files. Also includes ItLpQueue.h in paca.h in preference to a stub
    declaration of struct ItLpQueue.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Just white space cleaups and move process_iSeries_events into its only caller.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Now that the only users of things in HvCallCfg.h are in HvLpConfig.h, merge in
    the bit we need and remove HvCallCfg.h.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch removes from the iSeries header files a large number of inline
    functions that are not used. It also changes the only caller of a HvCallCfg
    function that is outside HvLpConfig.h to its equivalent HvLpConfig function
    and no longer includes HvCallCfg.h where it is not needed.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • include/asm-ppc64/iSeries/LparData.h just included a whole lot of other files
    to declare variables that would be better declared in those other files. So,
    remove it. This will reduce that number of things needed to be included in
    most cases to access the relevant variables.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch does some obvious code cleanups in the iSeries headers files.
    - simplifies the bodies of lots of inline functions
    - parenthesises a macros result
    - removes C++ wrapping
    - adds "extern" to some function declarations
    There are no semantic changes.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch just contains white space and comment cleanups in the iSeries
    headers files. There are no semantic changes.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch just contains white space and comment cleanups in the iSeries
    headers files. There are no semantic changes.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • include/asm-ppc64/iSeries/iSeries_proc.h just contains a declaration of a
    function that no longer exists. Remove it.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The following kind of calls currently fails :

    make ARCH=ppc64 CC="gcc-3.4"

    Since the code for detecting a biarch compiler and adding the needed 64bit
    magic argument fails if the AS/LD/CC commands are overriden in the command
    line.

    The attached patch fixes this by using the make override and += directive,
    but i am not 100% sure this will work without gmake, as i am no Makefile
    expert.

    Cc: Paul Mackerras
    Cc: Anton Blanchard
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sven Luther
     
  • Currently ppc64 has two mm_structs for the kernel, init_mm and also
    ioremap_mm. The latter really isn't necessary: this patch abolishes it,
    instead restricting vmallocs to the lower 1TB of the init_mm's range and
    placing io mappings in the upper 1TB. This simplifies the code in a number
    of places and eliminates an unecessary set of pagetables. It also tweaks
    the unmap/free path a little, allowing us to remove the unmap_im_area() set
    of page table walkers, replacing them with unmap_vm_area().

    Signed-off-by: David Gibson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Gibson
     
  • This patch kills the whole embedded System.map mecanism and the
    bootloader-passed System.map that was used to provide symbol resolution in
    xmon. Instead, xmon now uses kallsyms like ppc64 does.

    No hurry getting that in Linus tree, let it be tested in -mm for a while
    first and make sure it doesn't break various embedded configs.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch avoids recursive crash (leading to kernel stack overflow) in
    die() on CHRP/PReP machines when CONFIG_PMAC_BACKLIGHT=y. set_backlight_*
    functions are placed in pmac section, which is discarded when _machine !=
    _MACH_Pmac.

    Signed-off-by: Jakub Bogusz
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jakub Bogusz
     
  • Fight the Good Fight: Limit prom.h header creep.

    Signed-off-by: Jon Loeliger
    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • 4xx and Book-E PPC's have several exception levels. The code to handle
    each level is fairly regular. Turning the code into macro's will ease the
    handling of future exception levels (debug) in forth coming chips.

    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • Made the number of TLB CAM entries private and converted the board
    consumers to use num_tlbcam_entries which is setup at boot time from
    configuration registers. This way the only consumers of the #define
    NUM_TLBCAMS are the arrays used to manage the TLB.

    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • The MPC8548 has 48 internal interrupts and 12 external interrupts. The
    previous generation PowerQUICC III devices only had 32 internal and 12
    external interrupts on the primary interrupt controller.

    Expanded the number of internal interrupts to 48 for all PowerQUICC III
    processors and moved the interrupt numbers for the external after the 48
    internal interrupt lines, rather than putting the 12 new internal
    interrupts at the end and ifdef'ng the whole mess. As parted of this
    created a macro which represents the internal interrupt senses since they
    are the same on all PQ3 processors.

    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • Removes ppc4xx_kgdb.c which is no longer being used. Pointed out by Andrei
    Konovalov.

    Signed-off-by: Matt Porter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Porter
     
  • Added platform device initialization for the two 8250 style UARTs that
    exist on the MPC8245. Additionally, updated the Sandpoint code to enable
    one of these UARTs if an MPC8245 is connected to it.

    Signed-off-by: Matt McClintock
    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • This patch is virtually identical to my previous 44x one. It removes
    0x8000'0000 TASK_SIZE hardcoded assumption from head_4xx.S.

    Signed-off-by: Eugene Surovegin
    Signed-off-by: Matt Porter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Porter
     
  • Adds SCC2 pin routing specific to the GP3 board.

    Signed-off-by: Matt Porter
    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Porter
     
  • Converted the MPC10x bridge support (used by MPC10x and 8240/1/5) to used
    the standard platform device model.

    Signed-off-by: Matt McClintock
    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • Previously we needed CONFIG_CPM2 enabled to get the proper IRQ ifdef's for
    CPM interrupts. Recent changes have caused that to be no longer necessary.

    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala
     
  • Adds support for using the MPC8548 processor on the CDS reference board.
    Currently all the major busses (PCI, PCI-X, PCI-Express, sRIO) and eTSEC3
    and eTSEC4 are not supported.

    Signed-off-by: Kumar Gala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kumar Gala