From: Tony Lindgren <tony@atomide.com>
To: hvaibhav@ti.com
Cc: linux-omap@vger.kernel.org, khilman@linaro.org, paul@pwsan.com,
rnayak@ti.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 3/3] ARM: OMAP2+: Add command line parameter for debugSS module control
Date: Mon, 8 Apr 2013 10:29:37 -0700 [thread overview]
Message-ID: <20130408172936.GQ10155@atomide.com> (raw)
In-Reply-To: <1362396957-30113-4-git-send-email-hvaibhav@ti.com>
Hi,
* hvaibhav@ti.com <hvaibhav@ti.com> [130304 03:40]:
> From: Vaibhav Hiremath <hvaibhav@ti.com>
>
> Currently there is no clean mechanism to control debugSS module and
> you have to always keep clocks enabled, either,
>
> - By enabling it during boot as part of clk_init function.
> Or
> - By having HWMOD_INIT_NO_IDLE flag in hwmod data.
>
> Based on the discussion,
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg81771.html
>
> This patch introduces new kernel parameter "omap_debugss_en",
> which will allow user to control debugSS module enable/disable
> part during boot-time.
I suggest you just make this part into a standard DT only
device driver. That way the command line parsing and clock
enabling can happen the normal way.
Is there any reason why this could not be a loadable module?
Regards,
Tony
> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> Cc: Kevin Hilman <khilman@linaro.org>
> Cc: Paul Walmsley <paul@pwsan.com>
> Cc: Tony Lindgren <tony@atomide.com>
> ---
> Tested on
> - AM335x based EVM and BeagleBone platforms
>
> Documentation/kernel-parameters.txt | 3 +
> arch/arm/mach-omap2/Makefile | 2 +-
> arch/arm/mach-omap2/debugss.c | 80 +++++++++++++++++++++++++++++++++++
> 3 files changed, 84 insertions(+), 1 deletions(-)
> create mode 100644 arch/arm/mach-omap2/debugss.c
>
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index 6c72381..bf1c822 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -2051,6 +2051,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> For example, to override I2C bus2:
> omap_mux=i2c2_scl.i2c2_scl=0x100,i2c2_sda.i2c2_sda=0x100
>
> + omap_debugss_en [OMAP] Enable Debug Sub-System module required
> + for JTAG debugging.
> +
> oprofile.timer= [HW]
> Use timer interrupt instead of performance counters
>
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index d1156cf..aaf5cc2 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -5,7 +5,7 @@
> # Common support
> obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \
> common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \
> - omap_device.o sram.o
> + omap_device.o sram.o debugss.o
>
> omap-2-3-common = irq.o
> hwmod-common = omap_hwmod.o \
> diff --git a/arch/arm/mach-omap2/debugss.c b/arch/arm/mach-omap2/debugss.c
> new file mode 100644
> index 0000000..b45bf2c
> --- /dev/null
> +++ b/arch/arm/mach-omap2/debugss.c
> @@ -0,0 +1,80 @@
> +/*
> + * debugss.c: Debug Sus-System related code goes in here
> + *
> + * Copyright (C) {2013} Texas Instruments Incorporated - http://www.ti.com/
> + *
> + * This file is automatically generated from the AM33XX hardware databases.
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation version 2.
> + *
> + * This program is distributed "as is" WITHOUT ANY WARRANTY of any
> + * kind, whether express or implied; without even the implied warranty
> + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/init.h>
> +#include <linux/err.h>
> +#include <linux/clk.h>
> +
> +#include "omap_hwmod.h"
> +
> +static bool is_debugss_en;
> +
> +/**
> + * omap_debugss_en - Enable debugss clock/module based on user config
> + *
> + * During kernel bootup, omap2 hwmod framework will disable all the
> + * unused/unclaimed modules, which in turn also disables debugss module.
> + * This breaks any further debugging capability provided by HW.
> + *
> + *
> + * Introduce early param which allows user to enable clock/module -
> + *
> + * omap_debugss_en (For all OMAP2 architectures)
> + *
> + * Please note that, with this command-line param, module always remain
> + * enabled.
> + */
> +static int __init omap_debugss_en(char *str)
> +{
> + is_debugss_en = true;
> + return 0;
> +}
> +early_param("omap_debugss_en", omap_debugss_en);
> +
> +static int __init _omap2_debugss_enable(void)
> +{
> + const char oh_name[10] = "debugss";
> + struct omap_hwmod *oh;
> + int ret;
> +
> + if (is_debugss_en) {
> + struct omap_hwmod_opt_clk *oc;
> + int i;
> +
> + oh = omap_hwmod_lookup(oh_name);
> + if (!oh) {
> + pr_err("debugss device not found\n");
> + return 0;
> + }
> +
> + /* Make sure that hwmod internal data structures are setup */
> + ret = omap_hwmod_setup_one(oh_name);
> + if (ret) {
> + pr_err("failed to setup hwmod for %s\n", oh_name);
> + return 0;
> + }
> + /* Enable optional clocks */
> + for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++) {
> + if (oc->_clk)
> + clk_prepare_enable(oc->_clk);
> + }
> + /* Enable debugss clock/module */
> + omap_hwmod_enable(oh);
> + }
> +
> + return 0;
> +}
> +device_initcall(_omap2_debugss_enable);
> --
> 1.7.0.4
>
next prev parent reply other threads:[~2013-04-08 17:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-04 11:35 [RFC PATCH 3/3] ARM: OMAP2+: Add command line parameter for debugSS module control hvaibhav
2013-04-08 17:29 ` Tony Lindgren [this message]
2013-04-09 8:07 ` Hiremath, Vaibhav
2013-04-09 16:34 ` Tony Lindgren
2013-04-10 5:11 ` Hiremath, Vaibhav
2013-04-10 17:07 ` Tony Lindgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130408172936.GQ10155@atomide.com \
--to=tony@atomide.com \
--cc=hvaibhav@ti.com \
--cc=khilman@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=rnayak@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).