From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754607AbbHXWAq (ORCPT ); Mon, 24 Aug 2015 18:00:46 -0400 Received: from smtp.domeneshop.no ([194.63.252.55]:38936 "EHLO smtp.domeneshop.no" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751296AbbHXWAo (ORCPT ); Mon, 24 Aug 2015 18:00:44 -0400 Subject: Re: [PATCH RFC 2/2] staging: fbtft: fix 9-bit SPI support detection To: Stefan Wahren , Thomas Petazzoni References: <1440441228-27113-1-git-send-email-stefan.wahren@i2se.com> <1440441228-27113-3-git-send-email-stefan.wahren@i2se.com> Cc: Greg Kroah-Hartman , Mark Brown , Henri Chain , devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Message-ID: <55DB9405.1080806@tronnes.org> Date: Tue, 25 Aug 2015 00:00:37 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <1440441228-27113-3-git-send-email-stefan.wahren@i2se.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Den 24.08.2015 20:33, skrev Stefan Wahren: > Since bits_per_word isn't usually checked during SPI setup the 9-bit > support must be checked manually. > > Signed-off-by: Stefan Wahren > --- > drivers/staging/fbtft/fbtft-core.c | 7 +++++++ > drivers/staging/fbtft/flexfb.c | 7 +++++++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c > index 3638554..bd71487 100644 > --- a/drivers/staging/fbtft/fbtft-core.c > +++ b/drivers/staging/fbtft/fbtft-core.c > @@ -1438,6 +1438,13 @@ int fbtft_probe_common(struct fbtft_display *display, > if (par->spi && display->buswidth == 9) { > par->spi->bits_per_word = 9; > ret = spi_setup(par->spi); > + if (!ret) { > + struct spi_master *ma = par->spi->master; > + > + if (!(ma->bits_per_word_mask & SPI_BPW_MASK(9))) > + ret = -EINVAL; > + } > + > if (ret) { There's no point in calling spi_setup() when it doesn't check bits_per_word. Apparently this changed with the commit: spi: convert drivers to use bits_per_word_mask. This has not been detected earlier, because FBTFT was previously mostly used on the Raspberry Pi which had a downstream SPI driver that did this check. How about this: - par->spi->bits_per_word = 9; - ret = par->spi->master->setup(par->spi); + if (par->spi->master->bits_per_word_mask & SPI_BPW_MASK(9)) { + par->spi->bits_per_word = 9; - if (ret) { + } 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,