1. 15 Dec, 2023 2 commits
  2. 13 Dec, 2023 2 commits
  3. 12 Dec, 2023 1 commit
  4. 11 Dec, 2023 29 commits
  5. 09 Dec, 2023 1 commit
  6. 08 Dec, 2023 3 commits
  7. 07 Dec, 2023 2 commits
    • Mark Brown's avatar
      spi: Add support for stacked/parallel memories · 88a50c16
      Mark Brown authored
      Merge series from Amit Kumar Mahapatra <amit.kumar-mahapatra@amd.com>:
      
      This patch series adds support to the SPI framework for using multiple
      chip selects.
      88a50c16
    • Amit Kumar Mahapatra's avatar
      spi: Add multi-cs memories support in SPI core · 4d8ff6b0
      Amit Kumar Mahapatra authored
      AMD-Xilinx GQSPI controller has two advanced mode that allows the
      controller to consider two flashes as one single device.
      
      One of these two mode is the parallel mode in which each byte of data is
      stored in both devices, the even bits in the lower flash & the odd bits in
      the upper flash. The byte split is automatically handled by the QSPI
      controller.
      
      The other mode is the stacked mode in which both the flashes share the
      same SPI bus but each of the device contain half of the data. In this mode,
      the controller does not follow CS requests but instead internally wires the
      two CS levels with the value of the most significant address bit.
      
      For supporting both these modes SPI core need to be updated for providing
      multiple CS for a single SPI device.
      
      For adding multi CS support the SPI device need to be aware of all the CS
      values. So, the "chip_select" member in the spi_device structure is now an
      array that holds all the CS values.
      
      spi_device structure now has a "cs_index_mask" member. This acts as an
      index to the chip_select array. If nth bit of spi->cs_index_mask is set
      then the driver would assert spi->chip_select[n].
      
      In parallel mode all the chip selects are asserted/de-asserted
      simultaneously and each byte of data is stored in both devices, the even
      bits in one, the odd bits in the other. The split is automatically handled
      by the GQSPI controller. The GQSPI controller supports a maximum of two
      flashes connected in parallel mode. A SPI_CONTROLLER_MULTI_CS flag bit is
      added in the spi controller flags, through ctlr->flags the spi core
      will make sure that the controller is capable of handling multiple chip
      selects at once.
      
      For supporting multiple CS via GPIO the cs_gpiod member of the spi_device
      structure is now an array that holds the gpio descriptor for each
      chipselect.
      
      CS GPIO is not tested on our hardware, but it has been tested by @Stefan
      https://lore.kernel.org/all/005001da1efc$619ad5a0$24d080e0$@opensource.cirrus.com/Signed-off-by: default avatarAmit Kumar Mahapatra <amit.kumar-mahapatra@amd.com>
      Tested-by: default avatarStefan Binding <sbinding@opensource.cirrus.com>
      Link: https://lore.kernel.org/r/20231125092137.2948-4-amit.kumar-mahapatra@amd.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      4d8ff6b0