From patchwork Fri Oct 19 02:45:55 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kim Kukjin X-Patchwork-Id: 1652961 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id 26FF240135 for ; Fri, 26 Oct 2012 17:42:49 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TRnux-0003um-8u; Fri, 26 Oct 2012 17:41:59 +0000 Received: from mail-pa0-f49.google.com ([209.85.220.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TRnXd-0000Mt-6B for linux-arm-kernel@lists.infradead.org; Fri, 26 Oct 2012 17:17:54 +0000 Received: by mail-pa0-f49.google.com with SMTP id bi5so1910019pad.36 for ; Fri, 26 Oct 2012 10:17:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=udw/mTZoJDaPeemnxqelRcMJCLJ28gdOK1gOqm3DmYI=; b=dE3o6rBI0eraj0iTAYVrgfKcnWbHvasvqO8jFnGryDwi/lZfCGdJmYcvODXaUwialF btGRLS6oWEhzh2JK9GZuNl1D1nuTEMCczd3HKCc2GcUPo+RY+zhILKsXD2Dcef6dUb7g ZI99F94tpW4NpuEK6PBpXGWZBK6anD4DwbySMYWKGhETDePaR74FExGLevmXJmOMzvSz Qk4e1GY1kFiNQvmfJMgQYDGX+2Vxg9UbaCpCTO62bpsn/E+AQQiM+3QaIswgv8AtL9cW CN7wMAah9/77ZeoU7Yp8qrDyVdrovnHcd5PWQUO586OuLw6BkrrFR8fIdF7fGePTLLjq +TCg== Received: by 10.66.79.168 with SMTP id k8mr63364394pax.12.1351271872919; Fri, 26 Oct 2012 10:17:52 -0700 (PDT) Received: from localhost.localdomain ([121.136.168.198]) by mx.google.com with ESMTPS id qn1sm1445449pbc.55.2012.10.26.10.17.46 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 26 Oct 2012 10:17:50 -0700 (PDT) From: Kukjin Kim To: linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH 1/7] ARM: EXYNOS: add support for EXYNOS5440 SoC Date: Fri, 19 Oct 2012 11:45:55 +0900 Message-Id: <1350614759-1852-3-git-send-email-kgene.kim@samsung.com> X-Mailer: git-send-email 1.7.4.4 In-Reply-To: <1350614759-1852-1-git-send-email-kgene.kim@samsung.com> References: <1350614759-1852-1-git-send-email-kgene.kim@samsung.com> X-Spam-Note: CRM114 invocation failed X-Spam-Note: SpamAssassin invocation failed Cc: Kukjin Kim , Thomas Abraham , Mike Turquette X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org This patch adds clock controller configuration support based on common clock framework for Samsung EXYNOS5440. Signed-off-by: Thomas Abraham Cc: Mike Turquette Signed-off-by: Kukjin Kim --- drivers/clk/samsung/Makefile | 1 + drivers/clk/samsung/clk-exynos5440.c | 66 ++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 0 deletions(-) create mode 100644 drivers/clk/samsung/clk-exynos5440.c diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile index 69487f7..27aab2c 100644 --- a/drivers/clk/samsung/Makefile +++ b/drivers/clk/samsung/Makefile @@ -4,3 +4,4 @@ obj-$(CONFIG_PLAT_SAMSUNG) += clk.o obj-$(CONFIG_ARCH_EXYNOS4) += clk-exynos4.o +obj-$(CONFIG_SOC_EXYNOS5440) += clk-exynos5440.o diff --git a/drivers/clk/samsung/clk-exynos5440.c b/drivers/clk/samsung/clk-exynos5440.c new file mode 100644 index 0000000..da3b918 --- /dev/null +++ b/drivers/clk/samsung/clk-exynos5440.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include +#include +#include +#include +#include +#include + +#include "clk.h" + +static void __iomem *clk_base; + +/* register a fixed factor clock type instantiated from device tree */ +void __init samsung_of_clk_register_fixed_factor(struct device_node *np) +{ + struct clk *clk; + const char *clk_name = np->name; + const char *parent_name; + u32 mul = 1, div = 1; + + of_property_read_string(np, "clock-output-names", &clk_name); + parent_name = of_clk_get_parent_name(np, 0); + of_property_read_u32(np, "clock-fixed-factor-mul", &mul); + of_property_read_u32(np, "clock-fixed-factor-div", &div); + + clk = clk_register_fixed_factor(NULL, clk_name, parent_name, 0, + mul, div); + if (clk) + of_clk_add_provider(np, of_clk_src_simple_get, clk); +} + +static const __initconst struct of_device_id clk_match[] = { + { .compatible = "fixed-clock", + .data = of_fixed_clk_setup, }, + { .compatible = "samsung,clock-gate", + .data = samsung_of_clk_register_gate, }, + { .compatible = "samsung,fixed-factor-clock", + .data = samsung_of_clk_register_fixed_factor, }, + {}, +}; + +void __init exynos5440_of_clk_init(void) +{ + struct device_node *np; + + np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-xmu"); + if (!np) { + pr_err("%s: clock controller node not found\n", __func__); + return; + } + + clk_base = of_iomap(np, 0); + WARN(!clk_base, "unable to map clocks registers\n"); + + samsung_clk_set_ctrl_base(clk_base); + of_clk_init(clk_match); +} + +arch_initcall(exynos5440_of_clk_init);