Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754153Ab0HWPol (ORCPT ); Mon, 23 Aug 2010 11:44:41 -0400 Received: from comal.ext.ti.com ([198.47.26.152]:54920 "EHLO comal.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754117Ab0HWPok (ORCPT ); Mon, 23 Aug 2010 11:44:40 -0400 From: Partha Basak To: linux-kernel@vger.kernel.org Cc: "Basak, Partha" , Charulatha V , Benoit Cousson , Rajendra Nayak , Paul Walmsley , Kevin Hilman Subject: [PATCH] OMAP: HWMOD: Handle opt clocks using clk_add_alias Date: Mon, 23 Aug 2010 21:14:29 +0530 Message-Id: <1282578269-8835-1-git-send-email-p-basak2@ti.com> X-Mailer: git-send-email 1.5.6.6 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3639 Lines: 112 From: Basak, Partha For every optional clock present per hwmod per omap-device, this function adds an entry in the clocks list of the form , if an entry is already present in the list of the form . The function is called from within the framework inside omap_device_build_ss(), after omap_device_register. This allows drivers to get a pointer to its optional clocks based on its role by calling clk_get(, ). Link to discussions related to this patch: http://www.spinics.net/lists/linux-omap/msg34809.html Signed-off-by: Charulatha V Signed-off-by: Basak, Partha Signed-off-by: Benoit Cousson Signed-off-by: Rajendra Nayak Cc: Paul Walmsley Cc: Kevin Hilman --- arch/arm/plat-omap/omap_device.c | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) Index: linux-omap-pm/arch/arm/plat-omap/omap_device.c =================================================================== --- linux-omap-pm.orig/arch/arm/plat-omap/omap_device.c 2010-08-18 02:48:30.789079550 +0530 +++ linux-omap-pm/arch/arm/plat-omap/omap_device.c 2010-08-24 07:19:43.637080138 +0530 @@ -82,6 +82,7 @@ #include #include #include +#include #include #include @@ -243,7 +244,6 @@ static inline struct omap_device *_find_ return container_of(pdev, struct omap_device, pdev); } - /* Public functions for use by core code */ /** @@ -271,6 +271,47 @@ int omap_device_count_resources(struct o } /** + * omap_device_add_opt_clk_alias - Add alias for optional clocks in the + * clocks list. + * + * @od: struct omap_device *od + * + * For every optional clock present per hwmod per omap-device, this function + * adds an entry in the clocks list of the form + * if an entry is already present in it with the form + * + * The function is called from inside omap_device_build_ss(), + * after omap_device_register. + * + * This allows drivers to get a pointer to its optional clocks based on its role + * by calling clk_get(, ). + */ + +static void omap_device_add_opt_clk_alias(struct omap_device *od) +{ + int i, j; + struct omap_hwmod_opt_clk *oc; + struct omap_hwmod *oh; + + for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) + /* Add Clock alias for all optional clocks*/ + for (j = oh->opt_clks_cnt, oc = oh->opt_clks; + j > 0; j--, oc++) { + if ((oc->_clk) && + (IS_ERR(clk_get(&od->pdev.dev, oc->role)))) { + int ret; + + ret = clk_add_alias(oc->role, + dev_name(&od->pdev.dev), + (char *)oc->clk, NULL); + if (ret) + dev_err(&od->pdev.dev, "omap_device:\ + clk_add_alias for %s failed\n", + oc->role); + } + } +} +/** * omap_device_fill_resources - fill in array of struct resource * @od: struct omap_device * * @res: pointer to an array of struct resource to be filled in @@ -424,6 +465,12 @@ struct omap_device *omap_device_build_ss for (i = 0; i < oh_cnt; i++) hwmods[i]->od = od; + /* + * Add Clock alias for all optional + * clocks present in the hwmod + */ + omap_device_add_opt_clk_alias(od); + if (ret) goto odbs_exit4; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/