From patchwork Wed Dec 18 12:58:44 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonas Jensen X-Patchwork-Id: 3370081 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 6BB47C0D4A for ; Wed, 18 Dec 2013 12:59:46 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2164C2044B for ; Wed, 18 Dec 2013 12:59:45 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AE0E620435 for ; Wed, 18 Dec 2013 12:59:43 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VtGis-00025U-Dr; Wed, 18 Dec 2013 12:59:34 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VtGip-0005Qy-8d; Wed, 18 Dec 2013 12:59:31 +0000 Received: from mail-lb0-x22c.google.com ([2a00:1450:4010:c04::22c]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VtGil-0005QF-Ui for linux-arm-kernel@lists.infradead.org; Wed, 18 Dec 2013 12:59:29 +0000 Received: by mail-lb0-f172.google.com with SMTP id x18so2070897lbi.31 for ; Wed, 18 Dec 2013 04:59:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=EeHaklhlwG/KKB2u9H0iaohyn7/3ss4QDIlH066kxQg=; b=nSudtavOXFRPiATvXdfOW6ZvleP6TImg2Xad/kBNlzfvQ288ANwZV2dLIBIoFVklGp HgGfe6/swCIIcjr5I8m12PtJOSV0wyCoa6ENQwZwgOPKZWezSyU+pZUV4DAhWTvgIodl Rxf+PS4zm62+Cxo2xkuLotB+Gvn5Ta9juu7r+NC4sA1M0eYC8s9k4901HoWzfm5yM/TC 9SPcjzxP+oq9xDa/IooLfLbbmKPO3ocxWLMQVuFjTgUQRQJ9GfF9/4QxX5lhb+O7+Z6J pZKFMF1IYtApWyfYH5J04xZ/sXPHqESl7kkt7/A0+PJ1fGzt2XUfZqFS3mXjVS5A2Pbz WNog== X-Received: by 10.112.131.197 with SMTP id oo5mr771907lbb.77.1387371545123; Wed, 18 Dec 2013 04:59:05 -0800 (PST) Received: from Ildjarn.ath.cx (static-213-115-41-10.sme.bredbandsbolaget.se. [213.115.41.10]) by mx.google.com with ESMTPSA id r10sm28133979lag.7.2013.12.18.04.59.02 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 18 Dec 2013 04:59:04 -0800 (PST) From: Jonas Jensen To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 0/2] ARM: mach-moxart: add MOXA ART SoC support Date: Wed, 18 Dec 2013 13:58:44 +0100 Message-Id: <1387371526-15309-1-git-send-email-jonas.jensen@gmail.com> X-Mailer: git-send-email 1.8.2.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20131218_075928_336280_AEB98CB0 X-CRM114-Status: GOOD ( 18.15 ) X-Spam-Score: -2.0 (--) Cc: devicetree@vger.kernel.org, peter.crosthwaite@xilinx.com, linux@arm.linux.org.uk, arnd@arndb.de, linux-kernel@vger.kernel.org, Jonas Jensen , arm@kernel.org, linux@roeck-us.net, olof@lixom.net, soren.brinkmann@xilinx.com X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable 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 Thanks for the replies! This should tick the boxes on feedback except for one detail on the fixed rate clock: Moving fixed-clock "ref12" from .dtsi to .dts proved problematic for other clocks, this is why ref12 is still in SoC. My assertion is that "fixed-clock" clocks are probed later when placed in .dts (see diff and boot log below). of_clk_get() from clk_pll in .dtsi fails, i.e. fixed-clock ref12 is not added as a provider in time before clk_pll loads. Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 3.13.0-rc4-next-20131218+ (i@Ildjarn) (gcc version 4.6.3 (crosstool-NG 1.16.0) ) #1387 PREEMPT Wed Dec 18 12:20:50 CET 2013 [ 0.000000] CPU: FA526 [66015261] revision 1 (ARMv4), cr=0000397f [ 0.000000] CPU: VIVT data cache, VIVT instruction cache [ 0.000000] Machine model: MOXA UC-7112-LX [ 0.000000] bootconsole [earlycon0] enabled [ 0.000000] Memory policy: Data cache writeback [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 [ 0.000000] Kernel command line: console=ttyS0,115200n8 earlyprintk root=/dev/mmcblk0p1 rw rootwait [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Memory: 29616K/32768K available (2266K kernel code, 71K rwdata, 216K rodata, 103K init, 111K bss, 3152K reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xc2800000 - 0xff000000 ( 968 MB) [ 0.000000] lowmem : 0xc0000000 - 0xc2000000 ( 32 MB) [ 0.000000] .text : 0xc0008000 - 0xc0274c44 (2484 kB) [ 0.000000] .init : 0xc0275000 - 0xc028ed50 ( 104 kB) [ 0.000000] .data : 0xc0290000 - 0xc02a1ee0 ( 72 kB) [ 0.000000] .bss : 0xc02a1eec - 0xc02bdb64 ( 112 kB) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] of_clk_get_from_provider: no providers [ 0.000000] /soc/clk_pll@98100000: of_clk_get failed [ 0.000000] of_clk_get_from_provider: no providers [ 0.000000] /soc/clk_apb@98100000: of_clk_get failed [ 0.000000] of_fixed_clk_setup: of_clk_add_provider node=c02ff5bc [ 0.000000] of_clk_get_from_provider: provider->node=c02ff5bc clkspec->np=c02fe7dc [ 0.000000] of_clk_get_from_provider: provider->get() failed [ 0.000000] of_clk_get_from_provider: no providers [ 0.000000] Kernel panic - not syncing: /soc/timer@98400000: of_clk_get failed Changes since v5: 1. change Makefile objects list order, sort alphabetically 2. add "clocks = <&ref12>" to clk_pll node in board file, remove it from SoC 3. move PHY nodes from SoC to board Applies to next-20131218 Jonas Jensen (2): ARM: mach-moxart: add MOXA ART SoC platform files ARM: mach-moxart: add MOXA ART SoC device tree files Documentation/devicetree/bindings/arm/moxart.txt | 12 ++ arch/arm/Kconfig | 2 + arch/arm/Makefile | 1 + arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/moxart-uc7112lx.dts | 109 ++++++++++++++++ arch/arm/boot/dts/moxart.dtsi | 154 +++++++++++++++++++++++ arch/arm/configs/moxart_defconfig | 149 ++++++++++++++++++++++ arch/arm/mach-moxart/Kconfig | 31 +++++ arch/arm/mach-moxart/Makefile | 3 + arch/arm/mach-moxart/moxart.c | 15 +++ 10 files changed, 477 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/moxart.txt create mode 100644 arch/arm/boot/dts/moxart-uc7112lx.dts create mode 100644 arch/arm/boot/dts/moxart.dtsi create mode 100644 arch/arm/configs/moxart_defconfig create mode 100644 arch/arm/mach-moxart/Kconfig create mode 100644 arch/arm/mach-moxart/Makefile create mode 100644 arch/arm/mach-moxart/moxart.c diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c index 1ed591a..89dc8ca 100644 --- a/drivers/clk/clk-fixed-rate.c +++ b/drivers/clk/clk-fixed-rate.c @@ -98,8 +98,10 @@ void of_fixed_clk_setup(struct device_node *node) of_property_read_string(node, "clock-output-names", &clk_name); clk = clk_register_fixed_rate(NULL, clk_name, NULL, CLK_IS_ROOT, rate); - if (!IS_ERR(clk)) + if (!IS_ERR(clk)) { + pr_info("%s: of_clk_add_provider node=%p\n", __func__, node); of_clk_add_provider(node, of_clk_src_simple_get, clk); + } } EXPORT_SYMBOL_GPL(of_fixed_clk_setup); CLK_OF_DECLARE(fixed_clk, "fixed-clock", of_fixed_clk_setup); diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 8312736..bd6c0c6 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -2192,13 +2192,21 @@ struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec) /* Check if we have such a provider in our array */ mutex_lock(&of_clk_lock); list_for_each_entry(provider, &of_clk_providers, link) { + pr_info("%s: provider->node=%p clkspec->np=%p\n", __func__, provider->node, clkspec->np); if (provider->node == clkspec->np) clk = provider->get(clkspec, provider->data); - if (!IS_ERR(clk)) + if (!IS_ERR(clk)) { break; + } else { + pr_info("%s: provider->get() failed\n", __func__); + } } mutex_unlock(&of_clk_lock); + if (IS_ERR(clk)) { + pr_info("%s: no providers\n", __func__); + } + return clk; } diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c index 442a313..57b2fc6 100644 --- a/drivers/clk/clkdev.c +++ b/drivers/clk/clkdev.c @@ -36,8 +36,10 @@ struct clk *of_clk_get(struct device_node *np, int index) rc = of_parse_phandle_with_args(np, "clocks", "#clock-cells", index, &clkspec); - if (rc) + if (rc) { + pr_info("%s: of_parse_phandle_with_args() failed\n", __func__); return ERR_PTR(rc); + } clk = of_clk_get_from_provider(&clkspec); of_node_put(clkspec.np);