1. 05 Aug, 2016 1 commit
  2. 25 Jul, 2016 2 commits
    • Mark Brown's avatar
    • Mark Brown's avatar
      spi: Split bus and I/O locking · ef4d96ec
      Mark Brown authored
      The current SPI code attempts to use bus_lock_mutex for two purposes. One
      is to implement spi_bus_lock() which grants exclusive access to the bus.
      The other is to serialize access to the physical hardware. This duplicate
      purpose causes confusion which leads to cases where access is not locked
      when a caller holds the bus lock mutex. Fix this by splitting out the I/O
      functionality into a new io_mutex.
      
      This means taking both mutexes in the DMA path, replacing the existing
      mutex with the new I/O one in the message pump (the mutex now always
      being taken in the message pump) and taking the bus lock mutex in
      spi_sync(), allowing __spi_sync() to have no mutex handling.
      
      While we're at it hoist the mutex further up the message pump before we
      power up the device so that all power up/down of the block is covered by
      it and there are no races with in-line pumping of messages.
      Reported-by: default avatarRich Felker <dalias@libc.org>
      Tested-by: default avatarRich Felker <dalias@libc.org>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      ef4d96ec
  3. 24 Jul, 2016 16 commits
  4. 23 Jul, 2016 21 commits