1. 16 Dec, 2011 5 commits
    • Benjamin Herrenschmidt's avatar
      powerpc/pmac: Simplify old pmac PIC interrupt handling · 8e609d5e
      Benjamin Herrenschmidt authored
      In the old days, we treated all interrupts from the legacy Apple home made
      interrupt controllers as level, with a trick reading the "level" register
      along with the "event" register to work arounds bugs where it would
      occasionally fail to latch some events.
      
      Doing so appeared to work fine for both level and edge interrupts.
      
      Later on, we discovered in Darwin source the magic masks that define which
      interrupts are actually level and which are edge, and implemented a
      different algorithm, more similar to what Apple does, that treats those
      differently.
      
      I recently discovered however that this caused problems (including loss
      of interrupts) with an old Wallstreet PowerBook when trying to use the
      internal modem (connected to a cascaded controller).
      
      It looks like some interrupts are treated as edge while they are really
      level and I'm starting to seriously doubt the correctness of the Darwin
      code (which has other obvious bugs when you read it, so ...)
      
      This patch reverts to our original behaviour of treating everything as
      a level interrupt. It appears to solve the problems with the modem on
      the Wallstreet and everything else seems to be working properly as well.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8e609d5e
    • Benjamin Herrenschmidt's avatar
      tty/serial/pmac_zilog: Fix suspend & resume · a79dd5ae
      Benjamin Herrenschmidt authored
      This patch reworks & simplifies pmac_zilog handling of suspend/resume,
      essentially removing all the specific code in there and using the
      generic uart helpers.
      
      This required properly registering the tty as a child of the macio (or platform)
      device, so I had to delay the registration a bit (we used to register the ports
      very very early). We still register the kernel console early though.
      
      I removed a couple of unused or useless flags as well, relying on the
      core to not call us when asleep. I also removed the essentially useless
      interrupt mutex, simplifying the locking a bit.
      
      I removed some code for handling unexpected interrupt which should never
      be hit and could potentially be harmful (causing us to access a register
      on a powered off SCC). We diable port interrupts on close always so there
      should be no need to drain data on a closed port.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      a79dd5ae
    • Benjamin Herrenschmidt's avatar
      Merge branch 'kexec' into next · 43ca5d34
      Benjamin Herrenschmidt authored
      43ca5d34
    • Benjamin Herrenschmidt's avatar
      Merge branch 'ps3' into next · efdad722
      Benjamin Herrenschmidt authored
      efdad722
    • Benjamin Herrenschmidt's avatar
      Merge branch 'cpuidle' into next · e6f08d37
      Benjamin Herrenschmidt authored
      e6f08d37
  2. 08 Dec, 2011 30 commits
  3. 07 Dec, 2011 5 commits