Received: by 2002:ac0:8845:0:0:0:0:0 with SMTP id g63csp639161img; Thu, 28 Feb 2019 05:35:17 -0800 (PST) X-Google-Smtp-Source: AHgI3IYnPi3YQtePO85yI+tI8MJG/8c6u2g9bV1FGEH7xSfvZhEad5F0odWgW7WsBnS2fxXCvsJO X-Received: by 2002:a63:6903:: with SMTP id e3mr8519983pgc.147.1551360917381; Thu, 28 Feb 2019 05:35:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551360917; cv=none; d=google.com; s=arc-20160816; b=PShfSVisARuT8lQ4qDIu5mD0HS3bpLw3j+cDtzs54aChgPNmiU/e77HYrT0Rl1oK6w cCFt0kdrGCdtwaX1lP25gfVy+Hr+xfPNKNQddx3IMBZgEKc6qLvIGQnld3c5BIUp44F2 73YVNT9wHNZvKxh3i9WCKI1oVqPDRe0rJw94z3JOqB2mX4aloc3I3yY/KUGz4Z/2fz9S Dr3Lw7M8yE+y0aA6eyEioJ1D4UWtnjvON6UgFk/DIWMpckTuNTknnG8eMbA98+djBFpg 0nEWpRA2hIiuOKY9JnZY+2APauftrunAgTecHkQDV304WZmHBn6avjMLy7LzwIENjh36 VyCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=tKL6ZcL+b4I9P14MOG57ztvk4+/5xO9iSEwPRpKiI5U=; b=jQA4QrxxlJwwxPR5MDoM8RggKxeIfX/gM+Zv4RtvvFOvZWK/wUSoO+yQvRyvfGHmUO tIYvjzzUuaKOG6KldE/zJifMEU1/5pJmIi11/Fjy++pM2EaFhAHZnGpS6TxsjfTISXiR hP4qelcVIfH8x7RkH78k0evtARGGt9Nmiv6XD1mlMlYIwpJB6uAfxuuxd+k3XuPze5dx HEdjLcSgSK3D0PYUxlapgYR/YJFSs8nGvRR8rt0AY/KIJnKMwX/X9SfzWr6zIGxMy7vc mV0oUkqfUjny5EklxHVQR8xZKZ4De/q719Ci1xRrNgulzPbXeQPjO3N5Iv7u3quFS54n yp2w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u6si17792469pgh.438.2019.02.28.05.35.01; Thu, 28 Feb 2019 05:35:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731338AbfB1N2e (ORCPT + 99 others); Thu, 28 Feb 2019 08:28:34 -0500 Received: from relmlor1.renesas.com ([210.160.252.171]:4267 "EHLO relmlie5.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731830AbfB1N2e (ORCPT ); Thu, 28 Feb 2019 08:28:34 -0500 X-IronPort-AV: E=Sophos;i="5.58,423,1544454000"; d="scan'208";a="9122354" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 28 Feb 2019 22:28:31 +0900 Received: from renesas-VirtualBox.ree.adwin.renesas.com (unknown [10.226.37.56]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 9295343DA3C6; Thu, 28 Feb 2019 22:28:30 +0900 (JST) From: Gareth Williams To: Mark Brown Cc: Phil Edworthy , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Gareth Williams Subject: [PATCH 2/2] spi: dw: Add support for an optional interface clock Date: Thu, 28 Feb 2019 13:25:42 +0000 Message-Id: <1551360342-23981-3-git-send-email-gareth.williams.jx@renesas.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1551360342-23981-1-git-send-email-gareth.williams.jx@renesas.com> References: <1551360342-23981-1-git-send-email-gareth.williams.jx@renesas.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Phil Edworthy The Synopsys SSI Controller has an interface clock, but most SoCs hide this away. However, on some SoCs you need to explicity enable the interface clock in order to access the registers. Therefore, add support for an optional interface clock. Signed-off-by: Phil Edworthy Signed-off-by: Gareth Williams --- drivers/spi/spi-dw-mmio.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c index 4bd59a9..7cbc173 100644 --- a/drivers/spi/spi-dw-mmio.c +++ b/drivers/spi/spi-dw-mmio.c @@ -30,6 +30,7 @@ struct dw_spi_mmio { struct dw_spi dws; struct clk *clk; + struct clk *pclk; void *priv; }; @@ -172,6 +173,14 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) if (ret) return ret; + /* Optional interface clock */ + dwsmmio->pclk = devm_clk_get_optional(&pdev->dev, "pclk"); + if (IS_ERR(dwsmmio->pclk)) + return PTR_ERR(dwsmmio->pclk); + ret = clk_prepare_enable(dwsmmio->pclk); + if (ret) + goto out_clk; + dws->bus_num = pdev->id; dws->max_freq = clk_get_rate(dwsmmio->clk); @@ -199,6 +208,8 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) return 0; out: + clk_disable_unprepare(dwsmmio->pclk); +out_clk: clk_disable_unprepare(dwsmmio->clk); return ret; } @@ -208,6 +219,7 @@ static int dw_spi_mmio_remove(struct platform_device *pdev) struct dw_spi_mmio *dwsmmio = platform_get_drvdata(pdev); dw_spi_remove_host(&dwsmmio->dws); + clk_disable_unprepare(dwsmmio->pclk); clk_disable_unprepare(dwsmmio->clk); return 0; -- 2.7.4