From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pd0-x229.google.com ([2607:f8b0:400e:c02::229]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VE7VP-0005Fx-RS for linux-mtd@lists.infradead.org; Tue, 27 Aug 2013 00:51:36 +0000 Received: by mail-pd0-f169.google.com with SMTP id r10so4171171pdi.28 for ; Mon, 26 Aug 2013 17:51:14 -0700 (PDT) From: wangyuhang To: broonie@kernel.org, linux-spi@vger.kernel.org, devicetree@vger.kernel.org, linux-mtd@lists.infradead.org Subject: [PATCH V2 1/2] spi: dual and quad support(device tree) Date: Tue, 27 Aug 2013 08:50:02 +0800 Message-Id: <1377564603-4030-1-git-send-email-wangyuhang2014@gmail.com> Cc: sourav.poddar@ti.com, pekon@ti.com, wangyuhang List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , fix two things in patch: commit id:f477b7fb13df2b843997559ff34e87d054ba6538 1.change the name of property: spi-tx-nbits and spi-rx-nbits to spi-tmax-nbits and spi-rmax-nbits, aimed to make that name different from the member of spi_transfer(tx_nbits and rx_nbits). using tmax and rmax here to describe that it is the max transfer bits that the members in spi_transfer(tx_nbits and rx_nbits) can reach. 2.change property spi-tmax-nbits and spi-rmax-nbits to optional. If User don't set spi-tmax-nbits or spi-rmax-nbits, spi device mode should be regarded as SINGLE, not return an error. In such case, user don't have to modify the old dts files to fit the new spi framework. Signed-off-by: wangyuhang --- drivers/spi/spi.c | 72 +++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 50f7fc3..8d191f2 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -870,48 +870,44 @@ static void of_register_spi_devices(struct spi_master *master) spi->mode |= SPI_3WIRE; /* Device DUAL/QUAD mode */ - prop = of_get_property(nc, "spi-tx-nbits", &len); + prop = of_get_property(nc, "spi-tmax-nbits", &len); if (!prop || len < sizeof(*prop)) { - dev_err(&master->dev, "%s has no 'spi-tx-nbits' property\n", - nc->full_name); - spi_dev_put(spi); - continue; - } - switch (be32_to_cpup(prop)) { - case SPI_NBITS_SINGLE: - break; - case SPI_NBITS_DUAL: - spi->mode |= SPI_TX_DUAL; - break; - case SPI_NBITS_QUAD: - spi->mode |= SPI_TX_QUAD; - break; - default: - dev_err(&master->dev, "spi-tx-nbits value is not supported\n"); - spi_dev_put(spi); - continue; + /* set tx mode in SINGLE as default */ + } else { + switch (be32_to_cpup(prop)) { + case SPI_NBITS_SINGLE: + break; + case SPI_NBITS_DUAL: + spi->mode |= SPI_TX_DUAL; + break; + case SPI_NBITS_QUAD: + spi->mode |= SPI_TX_QUAD; + break; + default: + dev_err(&master->dev, + "spi-tmax-nbits value is not supported\n"); + spi_dev_put(spi); + continue; } - prop = of_get_property(nc, "spi-rx-nbits", &len); + prop = of_get_property(nc, "spi-rmax-nbits", &len); if (!prop || len < sizeof(*prop)) { - dev_err(&master->dev, "%s has no 'spi-rx-nbits' property\n", - nc->full_name); - spi_dev_put(spi); - continue; - } - switch (be32_to_cpup(prop)) { - case SPI_NBITS_SINGLE: - break; - case SPI_NBITS_DUAL: - spi->mode |= SPI_RX_DUAL; - break; - case SPI_NBITS_QUAD: - spi->mode |= SPI_RX_QUAD; - break; - default: - dev_err(&master->dev, "spi-rx-nbits value is not supported\n"); - spi_dev_put(spi); - continue; + /* set rx mode in SINGLE as default */ + } else { + switch (be32_to_cpup(prop)) { + case SPI_NBITS_SINGLE: + break; + case SPI_NBITS_DUAL: + spi->mode |= SPI_RX_DUAL; + break; + case SPI_NBITS_QUAD: + spi->mode |= SPI_RX_QUAD; + break; + default: + dev_err(&master->dev, + "spi-rmax-nbits value is not supported\n"); + spi_dev_put(spi); + continue; } /* Device speed */ -- 1.7.9.5