12 Oct, 2007

15 commits


11 Oct, 2007

25 commits

  • Signed-off-by: Kumar Gala

    Kumar Gala
     
  • asm-powerpc/mpc85xx.h was really a hold over from arch/ppc. Now that
    more decoupling has occurred we can remove and some of
    its legacy.

    As part of this we moved the definition of CPM_MAP_ADDR into cpm2.h
    for 85xx platforms. This is a stop gap until drivers stop using
    CPM_MAP_ADDR.

    Signed-off-by: Kumar Gala

    Kumar Gala
     
  • We don't use any CPM devices on these boards, but the muram node on these
    chips is different from the 8560, so it's helpful to people working with
    custom boards based on these chips.

    Signed-off-by: Scott Wood
    Signed-off-by: Kumar Gala

    Scott Wood
     
  • Signed-off-by: Scott Wood
    Signed-off-by: Kumar Gala

    Scott Wood
     
  • This is described by the muram node now.

    Signed-off-by: Scott Wood
    Signed-off-by: Kumar Gala

    Scott Wood
     
  • Josh Boyer
     
  • In testing the new clocksource and clockevent code on a PPC601
    processor, I discovered that the clockevent multiplier value for the
    decrementer clockevent was overflowing. Because the RTCL register in
    the 601 effectively counts at 1GHz (it doesn't actually, but it
    increases by 128 every 128ns), and the shift value was 32, that meant
    the multiplier value had to be 2^32, which won't fit in an unsigned
    long on 32-bit. The same problem would arise on any platform where
    the timebase frequency was 1GHz or more (not that we actually have any
    such machines today).

    This fixes it by reducing the shift value to 16. Doing the
    calculations with a resolution of 2^-16 nanoseconds (15 femtoseconds)
    should be quite adequate. :)

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • On old powermacs, we sometimes set the decrementer to 1 in order to
    trigger a decrementer interrupt, which we use to handle an interrupt
    that was pending at the time when it was re-enabled. This was causing
    the decrementer clock event device to call the event function for the
    next event early, which was causing problems when high-res timers were
    not enabled.

    This fixes the problem by recording the timebase value at which the
    next event should occur, and checking the current timebase against the
    recorded value in timer_interrupt. If it isn't time for the next
    event, it just reprograms the decrementer and returns.

    This also subtracts 1 from the value stored into the decrementer,
    which is appropriate because the decrementer interrupts on the
    transition from 0 to -1, not when the decrementer reaches 0.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • Some IBM machines supply a "logical" PVR (processor version register)
    value in the device tree in the cpu nodes rather than the real PVR.
    This is used for instance to indicate that the processors in a POWER6
    partition have been configured by the hypervisor to run in POWER5+
    mode rather than POWER6 mode. To cope with this, we call identify_cpu
    a second time with the logical PVR value (the first call is with the
    real PVR value in the very early setup code).

    However, POWER5+ machines can also supply a logical PVR value, and use
    the same value (the value that indicates a v2.04 architecture
    compliant processor). This causes problems for code that uses the
    performance monitor (such as oprofile), because the PMU registers are
    different in POWER6 (even in POWER5+ mode) from the real POWER5+.

    This change works around this problem by taking out the PMU
    information from the cputable entries for the logical PVR values, and
    changing identify_cpu so that the second call to it won't overwrite
    the PMU information that was established by the first call (the one
    with the real PVR), but does update the other fields. Specifically,
    if the cputable entry for the logical PVR value has num_pmcs == 0,
    none of the PMU-related fields get used.

    So that we can create a mixed cputable entry, we now make cur_cpu_spec
    point to a single static struct cpu_spec, and copy stuff from
    cpu_specs[i] into it. This has the side-effect that we can now make
    cpu_specs[] be initdata.

    Ultimately it would be good to move the PMU-related fields out to a
    separate structure, pointed to by the cputable entries, and change
    identify_cpu so that it saves the PMU info pointer, copies the whole
    structure, and restores the PMU info pointer, rather than identify_cpu
    having to list all the fields that are *not* PMU-related.

    Signed-off-by: Paul Mackerras
    Acked-by: Benjamin Herrenschmidt

    Paul Mackerras
     
  • Don't allow cpu hotplug on systems lacking XICS interrupt controller
    (i.e. with an MPIC interrupt controller), since the current pSeries
    platform code is hardcoded for XICS.

    This works around the bug reported by Paul Mackerras where the
    disable_nonboot_cpus() call recently added to the shutdown path will
    cause an oops on older pSeries machines.

    Signed-off-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Olof Johansson
     
  • We no longer initialise the name and owner fields of the
    of_platform_driver, but use the fields of the embedded device_driver's
    name field instead.

    Signed-off-by: Stephen Rothwell
    Acked-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • This way we only have entries in the device tree for disks that actually
    exist. A slight complication is that disks may be attached to LPARs
    at runtime.

    Signed-off-by: Stephen Rothwell
    Acked-by: Jens Axboe
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Now we will only have entries in the device tree for the actual existing
    devices (including their OS/400 properties). This way viotape.c gets
    all the information about the devices from the device tree.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Now we will only have entries in the device tree for the actual existing
    devices (including their OS/400 properties). This way viocd.c gets all
    the information about the devices from the device tree.

    Signed-off-by: Stephen Rothwell
    Acked-by: Jens Axboe
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • It was only being used to carry around dma_iommu_ops and vio_iommu_table
    which we can use directly instead. This also means that vio_bus_device
    doesn't need to refer to them either.

    Signed-off-by: Stephen Rothwell
    Acked-by: Jens Axboe
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Remove vio_dma_ops declaration (since it no longer exists) and some
    unused fields from struct vio_driver.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • There is no good reason for board platform code to mess with the
    ROOT_DEV. Remove it from all in-tree platforms except powermac.

    Signed-off-by: Grant Likely
    Signed-off-by: Paul Mackerras

    Grant Likely
     
  • Signed-off-by: Grant Likely
    Acked-by: Josh Boyer
    Signed-off-by: Paul Mackerras

    Grant Likely
     
  • This allows platforms which don't have anything to do at setup_arch time
    (like a bunch of the 4xx platforms) to eliminate an empty setup_arch hook.

    Signed-off-by: Grant Likely
    Signed-off-by: Paul Mackerras

    Grant Likely
     
  • Signed-off-by: Wolfgang Denk
    Signed-off-by: Paul Mackerras

    Wolfgang Denk
     
  • Our _GLOBAL macro does a ".align 2" so the alignment is fine for 32
    bit, but on 64 bit it is possible for it to end up only 4 byte aligned.
    I don't know if it matters, but it can't hurt to 8 byte align it.

    It also means that when we build with --emit_relocs, none of our 64 bit
    relocations are to misaligned places.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • pasemi_mac: enable iommu support

    Enable IOMMU support for pasemi_mac, but avoid using it on non-partitioned
    systems for performance reasons.

    The user can override this by selecting the PPC_PASEMI_IOMMU_DMA_FORCE
    configuration option.

    Signed-off-by: Olof Johansson
    Signed-off-by: Jeff Garzik

    Olof Johansson
     
  • Based on BenH's earlier work, this is a new version of the EMAC driver
    for the built-in ethernet found on PowerPC 4xx embedded CPUs. The
    same ASIC is also found in the Axon bridge chip. This new version is
    designed to work in the arch/powerpc tree, using the device tree to
    probe the device, rather than the old and ugly arch/ppc OCP layer.

    This driver is designed to sit alongside the old driver (that lies in
    drivers/net/ibm_emac and this one in drivers/net/ibm_newemac). The
    old driver is left in place to support arch/ppc until arch/ppc itself
    reaches its final demise (not too long now, with luck).

    This driver still has a number of things that could do with cleaning
    up, but I think they can be fixed up after merging. Specifically:
    - Should be adjusted to properly use the dma mapping API.
    Axon needs this.
    - Probe logic needs reworking, in conjuction with the general
    probing code for of_platform devices. The dependencies here between
    EMAC, MAL, ZMII etc. make this complicated. At present, it usually
    works, because we initialize and register the sub-drivers before the
    EMAC driver itself, and (being in driver code) runs after the devices
    themselves have been instantiated from the device tree.

    Signed-off-by: David Gibson
    Signed-off-by: Jeff Garzik

    David Gibson
     
  • As noted by Christoph Hellwig, pktgen was the only user so
    it can now be removed.

    [ Add missing cases caught by Adrian Bunk. -DaveM ]

    Signed-off-by: Robert Olsson
    Signed-off-by: David S. Miller

    Robert Olsson