05 May, 2007

40 commits

  • Install the built-in macsonic interrupt handler on both IRQs when using
    via_alt_mapping. Otherwise the rare interrupt that still comes from the
    nubus slot will wedge the nubus.

    $ cat /proc/interrupts
    auto 2: 89176 via2
    auto 3: 744367 sonic
    auto 4: 0 scc
    auto 6: 318363 via1
    auto 7: 0 NMI
    mac 9: 119413 framebuffer vbl
    mac 10: 1971 ADB
    mac 14: 198517 timer
    mac 17: 89104 nubus
    mac 19: 72 Mac ESP SCSI
    mac 56: 629 sonic
    mac 62: 1142593 ide0

    Version 1 of this patch had a bug where a nubus sonic card would register
    two interrupt handlers. Only a built-in sonic needs both.

    Versions 2 and 3 needed some cleanups, as Raylynn Knight and Christoph
    Hellwig pointed out (thanks).

    Signed-off-by: Finn Thain
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Fix a potential problem in the timeout handling: don't free the DMA buffers
    before resetting the chip.

    Also a trivial cleanup. Bring macsonic and jazzsonic into sync.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Fix a race condition in the transmit code, where the dma interrupt could update
    the free tx buffer count concurrently and wedge the tx queue.

    Fix the misuse of the rx frame status and rx frame length registers: no more
    "fifo overrun" errors caused by the OFLOW bit being tested in the frame length
    register (instead of the status register), and no more missed packets due to
    incorrect length taken from status register (instead of the frame length
    register).

    Fix a panic (skb_over_panic BUG) caused by allocating and then copying an
    incoming packet while the packet length register was changing.

    Cut-and-paste the reset code from the powermac mace driver (mace.c), so the NIC
    functions when MacOS does not initialise it (important for anyone wanting to
    use the Emile boot loader).

    Cut-and-paste the error counting and timeout recovery code from mace.c.

    Fix over allocation of rx buffer memory (it's page order, not page count).

    Converted to driver model.

    Converted to DMA API.

    Since I've run out of ways to make it fail, and since it performs well now,
    promote the driver from EXPERIMENTAL status. Tested on both quadra 840av and
    660av.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Fix the flakiness in the CUDA ADB driver on m68k macs (keypresses getting
    wedged down or ADB just going AWOL altogether).

    The only IRQ used by this driver is the VIA shift register IRQ. The PowerMac
    conditional code disables the other VIA IRQ sources, so don't mess with the
    other IRQ flags in the common code -- m68k macs need them.

    When polling, don't disable local interrupts when we only need to disable the
    CUDA interrupt.

    Unless polling, don't clear the shift register IRQ flag. On m68k macs this
    creates a race that often breaks CUDA ADB.

    Tested on Quadra 840av and LC630 (both m68k); also Beige G3 (powerpc).

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Fix a crash caused by requests placed in the queue with the completed flag
    already set. This lead to some ADB_SYNC requests returning early and their
    request structs being popped off the stack while still queued. Stack corruption
    ensued or an invalid request callback pointer was invoked or both. Eliminate
    macii_retransmit() and its buggy implementation of macii_write(). Have
    macii_queue_poll() fully initialise the request queues.

    Fix a bug in macii_queue_poll() where the last_req pointer was not being set.
    This caused some requests to leave the queue before being completed (and would
    also corrupt the stack under certain conditions).

    Fix a race in macii_start that could set the state machine to "reading" while
    current_req was null.

    No longer send poll commands with the ADBREQ_REPLY flag -- doing that caused
    the replies to be stored in the request buffer where they were forgotten
    about.

    Don't autopoll by continuously sending new Talk commands. Get the controller to
    do that for us. This reduces the ADB interrupt rate on an idle bus to about 5
    per second. Only autopoll the devices that were probed.

    Explicitly clear the interrupt flag when polling.

    Use disable_irq rather than local_irq_save when polling.

    Remove excess local_irq_save/restore pairs.

    Improve bus timeout and service request detection.

    Remove unused code (last_reply, adb_dir etc) and unneeded code (prefix_len,
    first_byte etc).

    Change TIP and TACK to their correct names on this ADB controller (ST_EVEN and
    ST_ODD).

    Add some commentry.

    Add a generous quantity of sanity checks (BUG_ONs).

    Let m68k macs use the adb_sync boot param too.

    Tested on Mac II, Mac IIci, Quadra 650, Quadra 700 etc.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • There are no slow IRQs on Macs since Roman Zippel's IRQ reorganisation that
    went into 2.6.16 and removed mac_irq_list[] and the do_mac_irq_list()
    dispatcher. (They were implemented in do_mac_irq_list() by lowering the IPL.)
    Hence there's no more use for mutual exclusion in the Mac interrupt
    dispatchers. Remove it.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Some Macs lack a slot interrupt enable register. So the existing code makes
    disabled and unregistered slot IRQ lines outputs set high. This seems to work
    on quadras, but does not work on genuine VIAs (perhaps the card still succeeds
    in pulling the line low, or perhaps because this increases the settle time on
    the port A input, meaning that the CA1 IRQ could fire before the slot line
    reads active).

    Because of this, the nubus_active flags were used to mask IRQs, which is
    actually worse than the problem it tries to solve. Any interrupt masked by
    nubus_active will remain asserted and prevent further transitions on CA1. And
    so the nubus gets wedged regardless of hardware (emulated VIA ASIC, real VIA
    chip or RBV).

    The best solution to this hardware limitation of genuine VIAs is to disable the
    umbrella SLOTS IRQ when disabling a slot on those machines. Unfortunately, this
    means all slot IRQs get disabled when any slot IRQ is disabled. But it is only
    a problem when there's more than 1 device using nubus interrupts.

    Another potential problem for genuine VIAs is an unregistered nubus IRQ.
    Eventually it will be possible to enable the CA1 interrupt by installing its
    handler only _after_ all nubus drivers have loaded but _before_ the kernel
    needs them, at which time this last problem can be fixed. For now it can be
    worked around:

    - disable MacOS extensions
    - don't boot MacOS (use the Emile bootloader instead)
    - get the bootloaders to disable ROM drivers (Penguin does this for video
    cards already, don't know about Emile)
    - physically remove unsupported cards

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Make sure that there are no slot IRQs asserted before leaving the nubus
    handler. If there are and we don't then the nubus gets wedged because this
    prevents a CA1 transition, which means no more nubus IRQs.

    Make the interrupt dispatch loops terminate sooner.

    Explicitly initialise the VIA latches to make the code more easily understood.

    Also some cleanups.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Reverse the last of a monumental brown-paper-bag commit that went into the 2.3
    kernel.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Fix the support for C/NET nubus ethernet cards etc. Sync up the DP8390 driver
    with the latest code in the mac68k repo.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Sync the nubus defines with the latest code in the mac68k repo. Some of these
    are needed for DP8390 driver update in the next patch.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Add some more machines that support A/UX interrupt priorities. There are
    probably others as well, but I've only tested these ones so far.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • The asm-m68k/adb.h header is unused. Some definitions are wrong and the rest
    are duplicated in linux/adb.h. Remove it.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Add missing code to the Amiga A2065 and Ariadne drivers to update
    net_device_stats.tx_bytes.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Fixes a "static qualifier follows non-static qualifier" error from gcc 4.

    Signed-off-by: Finn Thain
    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Finn Thain
     
  • Workqueue updates for the Atari SCSI driver

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Only attempt to initialize the amount of interrupts a sun3 actually has...

    Signed-off-by: Sam Creasey
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Sam Creasey
     
  • Add early parameter support and convert current users to it.

    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • hilkbd: Kill compiler warning and fix comment dyslexia

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Reformat various m68k files, so they actually look like Linux sources.

    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • Add missing disable/enable irq variant

    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • Macintosh CS89x0 Ethernet: Netif updates
    Addition of netif_stop_queue() before transmission by Michael Schmitz
    skb_copy_{from,to}_linear_data() conversion by Geert Uytterhoeven

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Matthias Urlichs
     
  • Recent cross-compilers are called m68k-linux-gnu-gcc instead of m68k-linux-gcc

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Update the atari fb to 2.6 by Michael Schmitz,
    Reformatting and rewrite of bit plane functions by Roman Zippel,
    A few more fixes by Geert Uytterhoeven.

    Signed-off-by: Michael Schmitz
    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Michael Schmitz
     
  • Atari keyboard and mouse support.
    (reformating and Kconfig fixes by Roman Zippel)

    Signed-off-by: Michael Schmitz
    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Michael Schmitz
     
  • Atari SCSI driver compile fixes

    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • Reformat the Atari SCSI driver

    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • SCSI should be working on a TT (but someone should really try!) but causes
    trouble on a Falcon (as in: it ate a filesystem of mine) at least when
    used concurrently with IDE. I have the notion it's because locking of the
    ST-DMA interrupt by IDE is broken in 2.6 (the IDE driver always complains
    about trying to release an already-released ST-DMA). Needs more work, but
    that's on the IDE or m68k interrupt side rather than SCSI.

    Signed-off-by: Michael Schmitz
    Signed-off-by: Roman Zippel
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Michael Schmitz
     
  • * 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6: (44 commits)
    i2c-s3c2410: Fix bug in releasing driver
    i2c-s3c2410: Fix I2C SDA to SCL setup time
    i2c: New i2c-tiny-usb bus driver
    i2c: Documentation update
    i2c: SPIN_LOCK_UNLOCKED cleanup
    i2c: Obsolete i2c-ixp2000, i2c-ixp4xx and scx200_i2c
    i2c: New Simtec I2C bus driver
    i2c: Bitbanging I2C bus driver using the GPIO API
    Use menuconfig objects - I2C
    i2c: Restore i2c_smbus_read_block_data
    i2c-pxa: Clean transaction stop
    i2c-algo-bit: Improve debugging
    i2c-algo-bit: Implement a 50/50 SCL duty cycle
    i2c-omap: Switch to static adapter numbering
    i2c: Blackfin Two Wire Interface driver
    i2c-algo-sgi: Comment and whitespace cleanups
    i2c: Make i2c_del_driver a void function
    i2c: Move i2c-isa-only exported symbol declarations
    i2c: Document i2c_new_device()
    i2c: Add i2c_new_probed_device()
    ...

    Fixed trivial conflict in Documentation/feature-removal-schedule.txt manually.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • I am no longer with CTI. The Support Department will handle all
    inquiries regarding the WH.

    Signed-off-by: Stuart MacDonald
    Signed-off-by: Linus Torvalds

    Stuart MacDonald
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ] Report the number of processors in PowerNow-k8 correctly
    [CPUFREQ] do not declare undefined functions
    [CPUFREQ] cleanup kconfig options
    [CPUFREQ] Longhaul - Revert Longhaul ver. 2
    [CPUFREQ] Remove deprecated /proc/acpi/processor/performance write support
    [CPUFREQ] Fix limited cpufreq when booted on battery
    Fix preemption warnings in speedstep-centrino.c
    [CPUFREQ] Longhaul - Correct PCI code
    [CPUFREQ] p4-clockmod: switch to rdmsr_on_cpu/wrmsr_on_cpu

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:
    [AGPGART] sworks-agp: Switch to PCI ref counting APIs
    [AGPGART] Nvidia AGP: Use refcount aware PCI interfaces
    [AGPGART] Fix sparse warning in sgi-agp.c
    [AGPGART] Intel-agp adjustments
    [AGPGART] Move [un]map_page_into_agp into asm/agp.h
    [AGPGART] Add missing calls to global_flush_tlb() to ali-agp
    [AGPGART] prevent probe collision of sis-agp and amd64_agp

    Linus Torvalds
     
  • Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Instead of the deprecated read_conf_data(), implement a new function
    tape_3590_read_dev_chars().

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • Instead of the deprecated read_conf_data(), implement a new function
    qeth_read_conf_data().

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • Instead of the deprecated read_dev_chars() and read_conf_data_lpm(),
    implement dasd_generic_read_dev_chars() and dasd_eckd_read_conf_lpm().
    These should even recover better from error than the original cio
    functions.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • These helper functions are a leftover from 2.4 sync I/O and are a
    notorious source for bugs. They lead to device driver specific code
    creeping into cio, and some issues can't really be fixed at all.

    Device drivers can easily implement those functions themselves in a
    more robust manner, so let's get rid of them.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • Use atomic_t/atomic64_t to make qdio performance statistics smp safe.
    Remove temporarily calculation of "total time of inbound actions".

    Signed-off-by: Ursula Braun
    Signed-off-by: Martin Schwidefsky

    Ursula Braun
     
  • Commit c1821c2e9711adc3cd298a16b7237c92a2cee78d introduced the
    uaccess structure that is used to select the correct set of user
    copy functions for the different execution modes (standard vs.
    noexec vs. z9 optimized user copy). The uaccess symbol is exported
    with EXPORT_SYMBOL_GPL. This breaks all non-gpl modules that use
    user copy. To make them work again change the export to
    EXPORT_SYMBOL.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Register aes-s390 algorithms with the actual supported max keylen size

    Signed-off-by: Jan Glauber
    Signed-off-by: Martin Schwidefsky

    Jan Glauber