Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp4491213ybb; Mon, 23 Mar 2020 23:02:30 -0700 (PDT) X-Google-Smtp-Source: ADFU+vt2xGtR/MqJS1cX/1WaCj9cqmHvcSlU8VCR8B39QRssndRNgSkeRYpVfBCYQtqdd2lRmYzn X-Received: by 2002:aca:d489:: with SMTP id l131mr2341000oig.5.1585029750810; Mon, 23 Mar 2020 23:02:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585029750; cv=none; d=google.com; s=arc-20160816; b=Les5F3DzPAYNttr/g8QZkxCa4AMi8+s6lB0QAy/JLVZ4tCgTw+l00sD6tMBOuQWeov XS7PtFHK11d1qilH/mOGw2/QAlBU9yuWtol/0SogMjBr8AVL6Dq99kMyon9bRfHxOxJB NE4eLvKrfppGxE+KT6hX4yz5lmlhfuyOAA6NyvAtEOuZJdfi5eHEtLd5NRl76JxmdZJR dL9+MK4af00RuNLUVp8GHWIwmkSDpny5KEY7+Zh2ApYrd0uwFxhJ9z93tu8YpCYrO421 UO9MWUunlw6UhS/k1SaNXsf/oEyAuU1Ri7Brnp3JerbC6WW1baoHxT/ayz3xoZpqV5W2 vQYg== 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:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=NASMMfM1v2BouRLznFM4rDUFSaPPa3sTp6p/VmzLtkE=; b=rjmGRXyYzRA3Folyb2gDhqiXxyRwqOxFi0//qA+AJvIt6LPMik4KPF8S55IqRRlTk6 ZN3MigvdXwyETE3EKhAF3iVFkm720krbppHQgbG8311Q2HI/cNQFcu5PKg9vFkXkqFSi 8mBee9jCaQivmPsvjvEQ+bRNyp1FB1rTR4zfS/IPYUxroALycpg0+3x6bPaZkOaHcBoK d/7FNT5Y1SspCfDAMsRid9f0He4gJDFsp6KLJNwBGj6bHSYuo77RcWmf/FDrPy5sg7YC PrjRwH2TLK1gmwtBiFMSNng01d3oCbhGD4XMEbC/+4XDusbFIN7vG98PG4BaYnNNhZOf Bt+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=eKdoWh5G; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w73si8206474oiw.206.2020.03.23.23.02.17; Mon, 23 Mar 2020 23:02:30 -0700 (PDT) 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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=eKdoWh5G; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726257AbgCXF7x (ORCPT + 99 others); Tue, 24 Mar 2020 01:59:53 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:45707 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725853AbgCXF7w (ORCPT ); Tue, 24 Mar 2020 01:59:52 -0400 Received: by mail-pg1-f194.google.com with SMTP id o26so1978443pgc.12 for ; Mon, 23 Mar 2020 22:59:51 -0700 (PDT) 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 :in-reply-to:references; bh=NASMMfM1v2BouRLznFM4rDUFSaPPa3sTp6p/VmzLtkE=; b=eKdoWh5GvGQhmu8/Y8ftFUvGGuPKR+uYhe7mWNDAW5HOAb3Q2omC5+3UGUNx7+IxIP sOTYYUFTh9t08xr7rdDDmTdnYjfGZBKzIkagl4GV3Csvo+TeeH6D8caT3DFyVAh5F3w6 vr/n/aHIzFkQQLOZH76aVEGpBP+y+DmKxEXOxN0QvM27M33xSzS5AOc6Pc0FHuqlrYLs kZWn+HSWCbzs+0BX8SF+jXQ53pcVuvF1MPO+YF+x/kYKVeF8f1C0WSGvORBIrCeafpJB RshVkIafuxL+viPdG2zZa82llXGaba3tDs982y7tAKhd2oFhY37DuCE8qi8wCoqv4caK 5Aqw== 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:in-reply-to:references; bh=NASMMfM1v2BouRLznFM4rDUFSaPPa3sTp6p/VmzLtkE=; b=bUuGbu4Ngzq+ODvjNyov31D31h1OIwdQ7XNaOYLysFnLXqBeenNV0OhKSeT2civXSI AIPL2yWmLJU0FRwm/+CLZEVb6WI1oXvGrx9mhVHOCoFE8C89urMljMUpC5YpH8vmaz8H Nb7CQwguFVJ/i9anyd6dYdG+RM0sAZyNzByno1LfTve7LIHvW8/0aucigCDN4q5nxWAq +aa5cT9CVoO+nLQDNmy5HeqZVk/2sXij6Ol23SO5cXRuQU4Izh1xKjxqse5D8KZYH1Wj EmZYUG8wrI9sa8CshjdZ8WSW6+Z5f8oOW8h4T+E0q/S9zCIgYGf5FFojsiBZy07b8+Se GGpw== X-Gm-Message-State: ANhLgQ3f/TVV4RCEBvsCXE8EWwlDdFovf8g6UteZB469IuaTAD55n+0p TanINSflMV9K7DdxRkJxSLI= X-Received: by 2002:a63:514f:: with SMTP id r15mr24814945pgl.432.1585029590697; Mon, 23 Mar 2020 22:59:50 -0700 (PDT) Received: from sh03840pcu.spreadtrum.com ([117.18.48.82]) by smtp.gmail.com with ESMTPSA id s12sm13921742pgi.38.2020.03.23.22.59.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 23 Mar 2020 22:59:50 -0700 (PDT) From: Baolin Wang To: daniel.lezcano@linaro.org, tglx@linutronix.de Cc: saravanak@google.com, orsonzhai@gmail.com, zhang.lyra@gmail.com, baolin.wang7@gmail.com, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] clocksource/drivers/sprd: Add module support to Spreadtrum timer Date: Tue, 24 Mar 2020 13:59:37 +0800 Message-Id: <182aae1ed5e5d2b124f1a32686e5566c9a27c980.1585021186.git.baolin.wang7@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Timers still have devices created for them. So, when compiling a timer driver as a module, implement it as a normal platform device driver. Signed-off-by: Saravana Kannan Signed-off-by: Baolin Wang --- drivers/clocksource/Kconfig | 2 +- drivers/clocksource/timer-sprd.c | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig index cc909e4..404f7dc 100644 --- a/drivers/clocksource/Kconfig +++ b/drivers/clocksource/Kconfig @@ -481,7 +481,7 @@ config MTK_TIMER Support for Mediatek timer driver. config SPRD_TIMER - bool "Spreadtrum timer driver" if EXPERT + tristate "Spreadtrum timer driver" if EXPERT depends on HAS_IOMEM depends on (ARCH_SPRD || COMPILE_TEST) default ARCH_SPRD diff --git a/drivers/clocksource/timer-sprd.c b/drivers/clocksource/timer-sprd.c index 430cb99..5461789 100644 --- a/drivers/clocksource/timer-sprd.c +++ b/drivers/clocksource/timer-sprd.c @@ -5,6 +5,8 @@ #include #include +#include +#include #include "timer-of.h" @@ -141,7 +143,7 @@ static irqreturn_t sprd_timer_interrupt(int irq, void *dev_id) }, }; -static int __init sprd_timer_init(struct device_node *np) +static int sprd_timer_init(struct device_node *np) { int ret; @@ -190,7 +192,7 @@ static void sprd_suspend_timer_disable(struct clocksource *cs) .flags = CLOCK_SOURCE_IS_CONTINUOUS | CLOCK_SOURCE_SUSPEND_NONSTOP, }; -static int __init sprd_suspend_timer_init(struct device_node *np) +static int sprd_suspend_timer_init(struct device_node *np) { int ret; @@ -204,6 +206,37 @@ static int __init sprd_suspend_timer_init(struct device_node *np) return 0; } +#ifdef MODULE +static int sprd_timer_probe(struct platform_device *pdev) +{ + struct device_node *np = pdev->dev.of_node; + + if (of_property_read_bool(np, "interrupts")) + return sprd_timer_init(np); + + return sprd_suspend_timer_init(np); +} + +static const struct of_device_id sprd_timer_match_table[] = { + { .compatible = "sprd,sc9860-suspend-timer" }, + { .compatible = "sprd,sc9860-timer" }, + { } +}; +MODULE_DEVICE_TABLE(of, sprd_timer_match_table); + +static struct platform_driver sprd_timer_driver = { + .probe = sprd_timer_probe, + .driver = { + .name = "sprd-timer", + .of_match_table = sprd_timer_match_table, + }, +}; +module_platform_driver(sprd_timer_driver); + +#else TIMER_OF_DECLARE(sc9860_timer, "sprd,sc9860-timer", sprd_timer_init); TIMER_OF_DECLARE(sc9860_persistent_timer, "sprd,sc9860-suspend-timer", sprd_suspend_timer_init); +#endif + +MODULE_LICENSE("GPL v2"); -- 1.9.1