From patchwork Wed Feb 22 13:19:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonas Gorski X-Patchwork-Id: 9586827 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5338460578 for ; Wed, 22 Feb 2017 13:20:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 343D8284C2 for ; Wed, 22 Feb 2017 13:20:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 292BB286C1; Wed, 22 Feb 2017 13:20:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CAFA328689 for ; Wed, 22 Feb 2017 13:20:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932522AbdBVNUn (ORCPT ); Wed, 22 Feb 2017 08:20:43 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34170 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932519AbdBVNUm (ORCPT ); Wed, 22 Feb 2017 08:20:42 -0500 Received: by mail-wm0-f67.google.com with SMTP id i186so431903wmf.1; Wed, 22 Feb 2017 05:20:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dnKULIiXyrymJBLbLryJNkhvijrSLP8yEq146bvrebM=; b=Agdate+xVBMECapCTH6r6Ag8TKaH+frCqRn9SzzFPwjDk1gGNP2154n8V0bemAQHMk DNDLx1C6Y2V7BM6SpDKaZihuBCgehv5XlB/jDF3y0iQND8hw+74yIka1a2Z8kzHHOXYC Za6L3AkXRvKn9m96HnCv+EoEpcdtu73ChB7mP5q2mlTLT18LMn7WH/Kw3j0ZQekKrlB9 LmvJq4cPL3oHXIob5HGDtw6aZd4rBq6o8j3JpJaxkiwiMtxrDhKHzDz2RgOxzBadHj/V lhVqI2T5kfScS2DtCJtTix+uIK3tEPQKzGT3fWgGHW0PNoVZ/antOZLZugdeO/Ifw6As qsqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dnKULIiXyrymJBLbLryJNkhvijrSLP8yEq146bvrebM=; b=oWrrQ+0L01IS+otM5BlkkA1jZqbq8RUzem6FaE/ZLpfusAQTy2BqEwIf7bhj1fnJEq YhdmJg/nPvm2OL/yGjaVgkLBgLW/g8Y9lF0XgVIrg7zOZjP/Y0tpPrCTJVLH1Ll8Q8JS edryixf0N92QmCpqmgg+7jeAS8o8Tm0wmnSlWbBwlQ4w48fz3ypgcmsL7EHtcG+ls+N8 faC5r9clAqxbWcROs2cD4x+GToDuxTYj55PNYQajXl3juuJxyrpasm8l1+tKQfH2bLmp p3iYsAWo9hKtko4Q3hB918oPW/UtfCKPsuvUuTNXryQmZVPXotYO728acYZ/UqQET5Rc OwXQ== X-Gm-Message-State: AMke39nHQA1z9eoIsrR/z7ETbisxhqXU/lTnHhojKMBxqcN7+9r5gtlq5g1UqpGNAGLAXA== X-Received: by 10.28.169.197 with SMTP id s188mr2451021wme.24.1487769640226; Wed, 22 Feb 2017 05:20:40 -0800 (PST) Received: from localhost.localdomain ([2001:470:9e39::48e]) by smtp.gmail.com with ESMTPSA id e6sm1738937wrc.30.2017.02.22.05.20.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Feb 2017 05:20:39 -0800 (PST) From: Jonas Gorski To: linux-spi@vger.kernel.org, devicetree@vger.kernel.org Cc: Mark Brown , Rob Herring , Mark Rutland , Florian Fainelli , bcm-kernel-feedback-list@broadcom.com Subject: [PATCH 3/3] spi/bcm63xx-hsspi: allow for probing through devicetree Date: Wed, 22 Feb 2017 14:19:40 +0100 Message-Id: <20170222131940.31085-3-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170222131940.31085-1-jonas.gorski@gmail.com> References: <20170222131940.31085-1-jonas.gorski@gmail.com> Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add required binding support to probe through device tree. Signed-off-by: Jonas Gorski Acked-by: Florian Fainelli --- drivers/spi/spi-bcm63xx-hsspi.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/spi/spi-bcm63xx-hsspi.c b/drivers/spi/spi-bcm63xx-hsspi.c index 79096d17ebde..77c249a22c9b 100644 --- a/drivers/spi/spi-bcm63xx-hsspi.c +++ b/drivers/spi/spi-bcm63xx-hsspi.c @@ -19,6 +19,7 @@ #include #include #include +#include #define HSSPI_GLOBAL_CTRL_REG 0x0 #define GLOBAL_CTRL_CS_POLARITY_SHIFT 0 @@ -91,6 +92,7 @@ #define HSSPI_MAX_SYNC_CLOCK 30000000 +#define HSSPI_SPI_MAX_CS 8 #define HSSPI_BUS_NUM 1 /* 0 is legacy SPI */ struct bcm63xx_hsspi { @@ -332,7 +334,7 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct clk *clk; int irq, ret; - u32 reg, rate; + u32 reg, rate, num_cs = HSSPI_SPI_MAX_CS; irq = platform_get_irq(pdev, 0); if (irq < 0) { @@ -382,8 +384,20 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev) mutex_init(&bs->bus_mutex); init_completion(&bs->done); - master->bus_num = HSSPI_BUS_NUM; - master->num_chipselect = 8; + if (dev->of_node) { + master->dev.of_node = dev->of_node; + + of_property_read_u32(dev->of_node, "num-cs", &num_cs); + if (num_cs > 8) { + dev_warn(dev, "unsupported number of cs (%i), reducing to 8\n", + num_cs); + num_cs = HSSPI_SPI_MAX_CS; + } + } else { + master->bus_num = HSSPI_BUS_NUM; + } + + master->num_chipselect = num_cs; master->setup = bcm63xx_hsspi_setup; master->transfer_one_message = bcm63xx_hsspi_transfer_one; master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | @@ -469,10 +483,16 @@ static int bcm63xx_hsspi_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(bcm63xx_hsspi_pm_ops, bcm63xx_hsspi_suspend, bcm63xx_hsspi_resume); +static const struct of_device_id bcm63xx_hsspi_of_match[] = { + { .compatible = "brcm,bcm6328-hsspi", }, + { }, +}; + static struct platform_driver bcm63xx_hsspi_driver = { .driver = { .name = "bcm63xx-hsspi", .pm = &bcm63xx_hsspi_pm_ops, + .of_match_table = bcm63xx_hsspi_of_match, }, .probe = bcm63xx_hsspi_probe, .remove = bcm63xx_hsspi_remove,