On Thu, Jun 25, 2020 at 10:02:52PM +0200, Linus Walleij wrote: > This converts the two Freescale i.MX SPI drivers > Freescale i.MX (CONFIG_SPI_IMX) and Freescale i.MX LPSPI > (CONFIG_SPI_FSL_LPSPI) to use GPIO descriptors handled in > the SPI core for GPIO chip selects whether defined in > the device tree or a board file. > > The reason why both are converted at the same time is > that they were both using the same platform data and > platform device population helpers when using > board files intertwining the code so this gives a cleaner > cut. > > The platform device creation was passing a platform data > container from each boardfile down to the driver using > struct spi_imx_master from <linux/platform_data/spi-imx.h>, > but this was only conveying the number of chipselects and > an int * array of the chipselect GPIO numbers. > > The imx27 and imx31 platforms had code passing the > now-unused platform data when creating the platform devices, > this has been repurposed to pass around GPIO descriptor > tables. The platform data struct that was just passing an > array of integers and number of chip selects for the GPIO > lines has been removed. > > The number of chipselects used to be passed from the board > file, because this number also limits the number of native > chipselects that the platform can use. To deal with this we > just augment the i.MX (CONFIG_SPI_IMX) driver to support 3 > chipselects if the platform does not define "num-cs" as a > device property (such as from the device tree). This covers > all the legacy boards as these use <= 3 native chip selects > (or GPIO lines, and in that case the number of chip selects > is determined by the core from the number of available > GPIO lines). Any new boards should use device tree, so > this is a reasonable simplification to cover all old > boards. > > The LPSPI driver never assigned the number of chipselects > and thus always fall back to the core default of 1 chip > select if no GPIOs are defined in the device tree. > > The Freescale i.MX driver was already partly utilizing > the SPI core to obtain the GPIO numbers from the device tree, > so this completes the transtion to let the core handle all > of it. > > All board files and the core i.MX boardfile registration > code is augmented to account for these changes. > > This has been compile-tested with the imx_v4_v5_defconfig > and the imx_v6_v7_defconfig. > > Cc: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > Cc: Robin Gong <yibin.gong@xxxxxxx> > Cc: Trent Piepho <tpiepho@xxxxxxxxxx> > Cc: Clark Wang <xiaoning.wang@xxxxxxx> > Cc: Shawn Guo <shawnguo@xxxxxxxxxx> Acked-by: Shawn Guo <shawnguo@xxxxxxxxxx>