From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756245AbbHYVEo (ORCPT ); Tue, 25 Aug 2015 17:04:44 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:62491 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756207AbbHYVEm (ORCPT ); Tue, 25 Aug 2015 17:04:42 -0400 From: Stefan Wahren To: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Thomas Petazzoni Cc: Greg Kroah-Hartman , Henri Chain , linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, Stefan Wahren Subject: [PATCH 1/2] staging: fbtft: fix 9-bit SPI support detection Date: Tue, 25 Aug 2015 21:04:11 +0000 Message-Id: <1440536652-7940-2-git-send-email-stefan.wahren@i2se.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1440536652-7940-1-git-send-email-stefan.wahren@i2se.com> References: <1440536652-7940-1-git-send-email-stefan.wahren@i2se.com> X-Provags-ID: V03:K0:pL3/5wMP7v755APkCfV6WUKYQsr+zD/W/ZVNwCGCfBn90OIT8Bc A65zC9Ubc/jiQ0SH+XBfroA+P2kH04hFwEq8I6K+XrV8v/VohKtWH1IWYUrzZHmSclzJPyt Ew8ZtX0zdRIYi1tQQNgJJtGN2VjFShSfSEb0mf1UxIVqcz5n9Lmvv0218FdQ+NLxBdoUl2p sbn3au40Z2xItFqbrhC3w== X-UI-Out-Filterresults: notjunk:1;V01:K0:VpH5tiKuVm8=:xoHfQVLKEFiBVVBkm2Dzmj AfoKncehIO5w0wIm3df53xEcPdIEeJb1UqBDkgkyDiFe6mO4rCzN+YPNHYqONorfHWUV6/ECp mdX5qft8/2PRoXv4u3tpp0E5rsIOnrSJk3+kFry6LfM5vUmHRPNRha/UxjAEv+ZWbNnWAd/hI RCMybs2ePu56KG0boNmC5p10MZ1xd5HRB9q8chN4z9rCsdYqVLyz/3ll1nIacmjJFJTAfnWel Wq9raYCINEpMvcakuO4oXLJa4CO8kzRVtIMmd6mGGUzPVB9f1CP6ur4LFIRqOAvmHdJIg4LIf pCv6wnduY5q67D3kVQf7E3Ylai8v+XfrQi3c5zsfWgYZwZVkKjdTiA+WvivtSFpg8n1uiYNwi fT5AoR8t3rGxLAH0Wj4VHTYrbyHFTAtDng1XYixrMViTtbjKtS/A90D+FuCj4ZdY1GE2g+Fx5 kMgDFM5OKwzEoKvTtv0amyVQ6hn7cCNeD1z9HHMYweDaWaVNz7X6LD5z7YfPrPs6A+r55nOmq Ky+NOBzEZkKe1mjpADFkUa26V7rJF/kt/IshyES2z7mm0DpH067O2JDD5tmEREmfkocbZzaZD tl8+1s0G7Is0pTAcNacCEgvvR+zQJ64asskMxfn3g8rPlXE7YBURw4m32APSyCQL9o5cMx0qi wxRY0L+RC7baXQPBt4kYAnu+pt7N2IMuKIbqoukd5GwaGu+vinkTl+fLCKnxwtI5UFOA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since the result of the setup function isn't adequate to check 9-bit SPI support, we better check bits_per_word_mask. Btw this change avoids a NULL pointer dereference with master drivers without a separate setup function. Signed-off-by: Stefan Wahren --- drivers/staging/fbtft/fbtft-core.c | 10 +++------- drivers/staging/fbtft/flexfb.c | 11 ++++------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c index 23392eb..7f5fa3d 100644 --- a/drivers/staging/fbtft/fbtft-core.c +++ b/drivers/staging/fbtft/fbtft-core.c @@ -1436,15 +1436,11 @@ int fbtft_probe_common(struct fbtft_display *display, /* 9-bit SPI setup */ if (par->spi && display->buswidth == 9) { - par->spi->bits_per_word = 9; - ret = par->spi->master->setup(par->spi); - if (ret) { + if (par->spi->master->bits_per_word_mask & SPI_BPW_MASK(9)) { + par->spi->bits_per_word = 9; + } else { dev_warn(&par->spi->dev, "9-bit SPI not available, emulating using 8-bit.\n"); - par->spi->bits_per_word = 8; - ret = par->spi->master->setup(par->spi); - if (ret) - goto out_release; /* allocate buffer with room for dc bits */ par->extra = devm_kzalloc(par->info->device, par->txbuf.len + (par->txbuf.len / 8) + 8, diff --git a/drivers/staging/fbtft/flexfb.c b/drivers/staging/fbtft/flexfb.c index c763efc..3f380a0 100644 --- a/drivers/staging/fbtft/flexfb.c +++ b/drivers/staging/fbtft/flexfb.c @@ -463,15 +463,12 @@ static int flexfb_probe_common(struct spi_device *sdev, } par->fbtftops.write_register = fbtft_write_reg8_bus9; par->fbtftops.write_vmem = fbtft_write_vmem16_bus9; - sdev->bits_per_word = 9; - ret = sdev->master->setup(sdev); - if (ret) { + if (par->spi->master->bits_per_word_mask + & SPI_BPW_MASK(9)) { + par->spi->bits_per_word = 9; + } else { dev_warn(dev, "9-bit SPI not available, emulating using 8-bit.\n"); - sdev->bits_per_word = 8; - ret = sdev->master->setup(sdev); - if (ret) - goto out_release; /* allocate buffer with room for dc bits */ par->extra = devm_kzalloc(par->info->device, par->txbuf.len + (par->txbuf.len / 8) + 8, -- 1.7.9.5