From patchwork Thu Apr 24 21:44:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Fernandes X-Patchwork-Id: 4056491 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id CB1129F1F4 for ; Thu, 24 Apr 2014 22:54:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 0A55520374 for ; Thu, 24 Apr 2014 22:54:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3637620377 for ; Thu, 24 Apr 2014 22:54:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754104AbaDXVou (ORCPT ); Thu, 24 Apr 2014 17:44:50 -0400 Received: from comal.ext.ti.com ([198.47.26.152]:38806 "EHLO comal.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752551AbaDXVos (ORCPT ); Thu, 24 Apr 2014 17:44:48 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by comal.ext.ti.com (8.13.7/8.13.7) with ESMTP id s3OLiSwB027115; Thu, 24 Apr 2014 16:44:28 -0500 Received: from DLEE70.ent.ti.com (dlemailx.itg.ti.com [157.170.170.113]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id s3OLiRdq009686; Thu, 24 Apr 2014 16:44:27 -0500 Received: from dlep33.itg.ti.com (157.170.170.75) by DLEE70.ent.ti.com (157.170.170.113) with Microsoft SMTP Server id 14.3.174.1; Thu, 24 Apr 2014 16:44:27 -0500 Received: from legion.dal.design.ti.com (legion.dal.design.ti.com [128.247.22.53]) by dlep33.itg.ti.com (8.14.3/8.13.8) with ESMTP id s3OLiRWK004195; Thu, 24 Apr 2014 16:44:27 -0500 Received: from joel-laptop.am.dhcp.ti.com (joel-laptop.am.dhcp.ti.com [10.247.29.57]) by legion.dal.design.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id s3OLiRt29806; Thu, 24 Apr 2014 16:44:27 -0500 (CDT) From: Joel Fernandes To: Linux OMAP List , Linux ARM Kernel List , Linux Kernel Mailing List CC: Tony Lindgren , Joel Fernandes Subject: [PATCH 17/26] ARM: OMAP2+: timer: Add fallback for of_clk_get Date: Thu, 24 Apr 2014 16:44:00 -0500 Message-ID: <1398375849-6017-18-git-send-email-joelf@ti.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1398375849-6017-1-git-send-email-joelf@ti.com> References: <1398375849-6017-1-git-send-email-joelf@ti.com> MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, 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 Not all platforms currently will support of_clk_get on timer because they may not have clock property in their DT nodes. Add code to handle this case so that things are kept working. Finally we can delete this code once all system timer nodes have a clock property. Signed-off-by: Joel Fernandes --- arch/arm/mach-omap2/timer.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 519ccfd..b3db1da 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -277,13 +277,19 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, if (!timer->io_base) return -ENXIO; - timer->fclk = of_clk_get(np, 0); - if (IS_ERR(timer->fclk)) - return PTR_ERR(timer->fclk); - r = omap_dmtimer_powerup(np); if (r) return r; + + timer->fclk = of_clk_get(np, 0); + if (IS_ERR(timer->fclk)) { + /* + * Support DT platforms temporarily that don't have + * clock property in their dts yet. Ultimately this + * fall back code is to be deleted and we're to return + * PTR_ERR(timer->fclk) here. + */ + } } else { if (omap_dm_timer_reserve_systimer(timer->id)) return -ENODEV; @@ -312,12 +318,17 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, if (!timer->io_base) return -ENXIO; + omap_hwmod_setup_one(oh_name); + omap_hwmod_enable(oh); + } + + if (!timer->fclk || IS_ERR(timer->fclk)) { + oh = omap_hwmod_lookup(oh_name); + if (!oh) + return -ENODEV; timer->fclk = clk_get(NULL, omap_hwmod_get_main_clk(oh)); if (IS_ERR(timer->fclk)) return PTR_ERR(timer->fclk); - - omap_hwmod_setup_one(oh_name); - omap_hwmod_enable(oh); } /*