17 Feb, 2007

1 commit

  • get_irqnr_preamble allows machines to take some action before entering the
    get_irqnr_and_base loop. On iop we enable cp6 access.

    arch_ret_to_user is added to the userspace return path to allow individual
    architectures to take actions, like disabling coprocessor access, before
    the final return to userspace.

    Per Nicolas Pitre's note, there is no need to cp_wait on the return to user
    as the latency to return is sufficient.

    Signed-off-by: Dan Williams
    Signed-off-by: Russell King

    Dan Williams
     

28 Mar, 2006

1 commit


23 Mar, 2006

3 commits


22 Mar, 2006

4 commits

  • Patch from Lennert Buytenhek

    Move the uengine loader from arch/arm/mach-ixp2000 to arch/arm/common
    so that ixp23xx can use it too.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Deepak Saxena

    This patch adds support for Intel's IXDP28x5 platform. This
    is just and IXDP2801 with a new CPU rev but the bootloader
    has been updated to reflect a new machine ID so we just build
    support for it by default when we build IXDP2801.

    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Deepak Saxena
     
  • asm/arch/irq.h used to be included from asm/irq.h, but was removed
    from the ARM kernel a long time ago. Consequently, the contents
    of asm/arch/irq.h (which mostly contain a definition for fixup_irq())
    have not been used. Hence, remove asm/arch/irq.h.

    Some machine support files incorrectly included this file, making
    little or no use of the contents. Move the contents to a local
    include file, and remove those include statements as well.

    Signed-off-by: Russell King

    Russell King
     
  • Move the HZ definition into Kconfig, and set appropriate defaults
    for platforms. Remove mostly empty asm/arch/param.h include file.

    Signed-off-by: Russell King

    Russell King
     

14 Jan, 2006

1 commit

  • Patch from Lennert Buytenhek

    For the ixp2000 netdev driver, we need to map in a chunk of SRAM (to
    store the transmit and receive descriptors) and the scratch get/put
    area (so that we can use the scratchpad rings in the cpu for managing
    the descriptors.) These are the final two mappings needed for the
    netdev driver and the last missing piece for the driver in mainline
    to work.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Russell King

    Lennert Buytenhek
     

05 Jan, 2006

3 commits


04 Jan, 2006

3 commits


05 Nov, 2005

1 commit

  • Patch from Dave Jiang

    This provides support for IXP2xxx error interrupt handling. Previously there was a patch to remove this (although the original stuff was broken). Well, now the error bits are needed again. These are used extensively by the micro-engine drivers according to Deepak and also we will need it for the new EDAC code that Alan Cox is trying to push into the main kernel.

    Re-submit of 3072/1, generated against git tree pulled today. AFAICT, this git tree pulled in all the ARM changes that's in arm.diff. Please let me know if there are additional changes. Thx!

    Signed-off-by: Dave Jiang
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Dave Jiang
     

02 Nov, 2005

5 commits

  • Patch from Lennert Buytenhek

    This patch adds a microcode loader for the ixp2000 architecture.

    The ixp2000 is an xscale-based CPU with a number of additional small
    CPUs ('microengines') on die that can be programmed to do various
    things. Depending on the ixp2000 model, there are between 2 and 16
    microengines.

    This code provides an API that allows configuring the microengines,
    loading code into them, and starting and stopping them and reading
    out a number of status registers, and is used by the microengine
    network driver that was recently announced to netdev.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    Misc ixp2000 typo and whitespace fixes.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    Switch the users of ixp2000_reg_write that depend on writes being
    flushed out of the write buffer by the time that function returns
    over to ixp2000_reg_wrb.

    When using XCB=101, writes to the same functional unit are still
    guaranteed to complete in order, so we only need to protect against:
    - reordering of writes to different functional units
    - masking an interrupt and then reenabling the IRQ bit in CPSR

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    On the ixdp2x00, the slave CPU is currently not allowed to reset itself
    for fear that it will do something 'funky' on the PCI bus. This fear is
    ungrounded -- the slave CPU is wired up such that a CPU reset will not
    cause a PCI bus reset to be done. This patch changes arch_reset() so
    that the slave CPU also executes the reset sequence, allowing it to
    reboot itself using /sbin/reboot.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    The enp2611 version of the ixp2000 netdev driver needs to be able to
    access a number of on-board peripherals. ioremap() is not suitable
    for this, as that will cause XCB=000 mappings to be done, which will
    make the cpu susceptible to crashing on ixp2400 erratum #66. Properly
    aligned iotable mappings with MT_IXP2000_DEVICE will cause section
    mappings with XCB=101 to be done, which is safe.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     

31 Oct, 2005

1 commit


30 Oct, 2005

1 commit


29 Oct, 2005

3 commits

  • Patch from Lennert Buytenhek

    Introduce ixp2000_reg_wrb, which is a variant of ixp2000_reg_write
    that does a readback from the target register, to make sure that
    the write has been flushed out of the write buffer.

    Unlike the previous (ineffective) readback in ixp2000_reg_write, this
    readback is followed by an instruction that depends on the value of
    the readback so that the CPU actually stalls until the readback has
    completed.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    Turn ixp2000_reg_read into an inline function.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    The workaround that we do for avoiding triggering ixp2400 erratum #66
    involves mapping I/O pages using XCB=101 instead of XCB=000 so that we
    prevent the I/O signal to the gasket from being asserted (which can
    cause data corruption.) But XCB=101 mappings are write-buffered while
    mappings using XCB=000 are not, which is why if we use XCB=101 mappings
    we do a readback for every CSR store in an attempt to make sure that
    the store has been pushed out of the xscale core and the gasket.

    Unfortunately, there are two issues with this:
    - we do a readback for every CSR store, which is wrong, because the
    register we are writing to might have unwanted side-effects on read,
    for example, in the case of the scratchpad ring enqueue/dequeue
    registers; and
    - the readback is totally ineffective in the way we currently do it,
    because we just issue a load but do not issue any instruction that
    depends on the return value of that load, so the xscale core does
    not wait for the load to complete before continuing.

    See this linux-arm-kernel mailing list post for further information:
    http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2005-September/031314.html

    This means that my ixp2400 boxes have been running for many months
    without a working readback in ixp2000_reg_write, without any apparent
    adverse effects. Two of them have been running for a week now with
    the actual readback deleted from ixp2000_reg_write, also without any
    apparent ill effects.

    So, because in its current form it does more harm than good, the
    readback in ixp2000_reg_write should simply be killed, as the patch
    below does.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     

28 Oct, 2005

2 commits


15 Sep, 2005

2 commits

  • Patch from Lennert Buytenhek

    The intel docs call it IXP2000_PRODUCT_ID, and we have a definition
    for IXP2000_PRODUCT_ID as well, so IXP2000_PROD_ID can go. It's only
    used in one place.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    This patch:
    - changes the ixp2000_reg_write accessor to take a 'volatile void *'
    instead of a 'volatile unsigned long *', which then allows passing in
    a u32 * as first argument without being greeted with a warning; and
    - adds an ixp2000_reg_read accessor.
    We can then use these accessors in ixp2000 code to access on-chip
    peripherals, instead of directly dereferencing pointers. This is for
    use by the ixp2000 microengine driver which was recently announced on
    netdev. We can't use readl/writel on the ixp2000 since it is usually
    run in big-endian mode, and on big-endian platforms, readl/writel
    perform byteswapping.
    A future patch will remove the readback from ixp2000_reg_write, since
    it's not needed to prevent erratum #66, and add manual readbacks to the
    places that need them (writes are not synchronous since we map in device
    space using XCB=101 nowadays), such as interrupt disabling and GPIO
    manipulation. See also:
    http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2005-February/027084.html
    Patch has been ACKed by Jeff Garzik.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Russell King

    Lennert Buytenhek
     

11 Jul, 2005

1 commit


27 Jun, 2005

4 commits

  • Patch from Lennert Buytenhek

    Add a mapping for the ixp2400 and ixp2800 msf unit. The msf is the
    ixp2000's 'media and switch fabric' unit, which handles the networking
    part of the chip.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    Add a comment to asm/arch-ixp2000/ixp2000-regs.h describing the
    ixp2000 virtual memory map layout.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    As the ixdp cpld mappings now live at 0xfe000000, we can push
    VMALLOC_END upwards to 0xfb000000, where the first iotable mapping
    begins.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     
  • Patch from Lennert Buytenhek

    All ixdp platforms currently have a cpld mapped in at 0xfafff000.
    Since this address is not 1M-aligned, a regular page mapping will be
    used instead of a section mapping, which opens up the possibility of
    triggering ixp2400 erratum #66 as we only do the XCB=101 workaround
    thing for section mappings.
    There is still a lot of space higher up in the virtual memory map
    for 1M mappings, so move the cpld mapping to 0xfe000000 and make it
    1M big so that a section mapping will be used for it.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Deepak Saxena
    Signed-off-by: Russell King

    Lennert Buytenhek
     

26 Jun, 2005

1 commit


25 Jun, 2005

3 commits