spi: imx: native chip selects and devicetree
Get series with b4
b4 am 20170320073538.GC3443@dragonVersions newest first
- v1 Latest2 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/2 | spi: imx: set correct chip_select in platform setup | +0 | 1 reply | |
| 2/2 | spi: imx: fix use of native chip-selects with devicetree | +0 | 0 replies |
Reviews trailers per patch
1 of 2 patches has a Reviewed-by or Acked-by.
| Patch | Shawn Guo |
|---|---|
| 1/2 | |
| 2/2 | A-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH 0/2] spi: imx: native chip selects and devicetree
Quoted 31 lines · Greg Ungerer
Selecting native chip selects for iMX SPI devices in a devicetree configuration does not work. That is the case for imx25 based SoC parts, and I think for imx31 SoC as well. There is no problem with configuring SPI ports to use a GPIO as chip select.
Selecting native chip selects via the old platform setup code will work, it is only devicetree configurations that are broken.
With platform configuration you specify a native chip select by setting the
cs_gpiofor the SPI device to be "32 - chipselect", This will be a negative number - and thus not a valid GPIO number. And that "chipselect" is the actual hardware native chip select number.You cannot specify the
cs_gpioin dvicetree as a negative number, so this whole scheme does not work. The common method in devicetree is to set thecs_gpioentry for your device to be "<0>". If you do this to configure your SPI device to use a native chip select it is valid, but the SPI device cannot be accessed (no valid read data returned from it).The problem lies in the way the
spi-imx.cdriver sets up the controlling registers of the iMX SPI block. It doesn't have the correct logic for using nativce chip selects in the devicetree case.The best fix is to use the "
chip_select" associated with the SPI device as passed in from the devicetree (as the "reg" tag) or directly in the platform data structure. The hitch with that is that field is not set correctly by some platform device code.
Quoted 8 lines
The following patches fix the platform setup code to correctly set the "
chip_select" for the SPI device and to set the SPI registers correctly based on that.These changes affect the iMX machine code and
drivers/spisubsystem so I have sent this to both lists for feedback.Signed-off-by Greg Ungerer <[email protected]>
The device tree support was added for imx spi driver with only the case of GPIO being chip select in consideration, as that's the case for all recent i.MX SoCs. So, yes, native chip select never worked for device tree case before. Thanks for getting it work.
Shawn