From patchwork Thu Oct 15 20:51:45 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Franklin Cooper X-Patchwork-Id: 7409781 Return-Path: X-Original-To: patchwork-linux-spi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 41F2D9F302 for ; Thu, 15 Oct 2015 20:52:20 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6B1062078D for ; Thu, 15 Oct 2015 20:52:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 75EE42078B for ; Thu, 15 Oct 2015 20:52:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753214AbbJOUwC (ORCPT ); Thu, 15 Oct 2015 16:52:02 -0400 Received: from mail-ob0-f193.google.com ([209.85.214.193]:36391 "EHLO mail-ob0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753186AbbJOUwA (ORCPT ); Thu, 15 Oct 2015 16:52:00 -0400 Received: by obclh8 with SMTP id lh8so6641975obc.3; Thu, 15 Oct 2015 13:52:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=from:to:cc:subject:date:message-id; bh=sUGSUk215i9/SGFGY/b4COGCpUPX0gsj4L9yRNDrBe0=; b=cwS2tn9oe6hk6WeykAp6z0y/DzZQ2IbCpJMqrzqml+a3cME0wFvGq8DqYQhWDlw8vm RZP/yxcO1Q5xEM31ZJrDOIPAZrZ4a9wYze9gabFdsmkP/N+eBy0YaiemGb4OTOBxzmkh FXHbZOY2Z2Ps/UNynMnA85y+VEYqSvEvMbIG/9/MvLXQKBMpC13WRPW66100Tv5kdALu 3neVT/huE2APC0v3Y1B3dqSBlsVlhvXXretTU7CS7S7YFxg5GGOIrVuMuLoTN0yed1UI 2IxnCH8vPJlhomAV/iXpm3FSe9xBcwTVrmnVftkhJot5IN7D6DkXUnY310RhRrA3gYdz Da3A== X-Received: by 10.182.60.168 with SMTP id i8mr7108148obr.81.1444942320229; Thu, 15 Oct 2015 13:52:00 -0700 (PDT) Received: from localhost.localdomain (pool-71-97-41-79.dllstx.fios.verizon.net. [71.97.41.79]) by smtp.gmail.com with ESMTPSA id k3sm7022789oes.13.2015.10.15.13.51.58 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 15 Oct 2015 13:51:59 -0700 (PDT) From: Franklin S Cooper Jr To: linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org, broonie@kernel.org, nsekhar@ti.com, ssantosh@kernel.org, iivanov@mm-sol.com, m-karicheri2@ti.com, iivanov.xz@gmail.com, andy.shevchenko@gmail.com, jarkko.nikula@linux.intel.com, hkallweit1@gmail.com Cc: Franklin S Cooper Jr Subject: [PATCH] spi: Setup the master controller driver before setting the chipselect Date: Thu, 15 Oct 2015 15:51:45 -0500 Message-Id: <1444942305-24038-1-git-send-email-fcooper@ti.com> X-Mailer: git-send-email 2.6.1 Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some devices depend on the master controller driver setup function being called before calling any chipselect functions. Insure that this is done otherwise uninitialized structures may be accessed causing a kernel panic. Tested-by: Andy Shevchenko Signed-off-by: Franklin S Cooper Jr --- Keystone 2 devices currently fail to boot in linux-next after the below commit was applied: spi: bitbang: switch to the generic implementation of transfer_one_message commit: 0037686596832572bbca05ab168d9884d7d704c1 This patch allows Keystone 2 devices to boot again in linux-next. Tested this patch on K2E evm and am437 starterkit which both have SPI devices to insure regressions aren't seen. drivers/spi/spi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 4c638f3..9d5525a 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -2059,11 +2059,11 @@ int spi_setup(struct spi_device *spi) if (!spi->max_speed_hz) spi->max_speed_hz = spi->master->max_speed_hz; - spi_set_cs(spi, false); - if (spi->master->setup) status = spi->master->setup(spi); + spi_set_cs(spi, false); + dev_dbg(&spi->dev, "setup mode %d, %s%s%s%s%u bits/w, %u Hz max --> %d\n", (int) (spi->mode & (SPI_CPOL | SPI_CPHA)), (spi->mode & SPI_CS_HIGH) ? "cs_high, " : "",