From: Tony Lindgren <tony@atomide.com>
To: Ulrik Bech Hald <ubh@ti.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH v4 1/2] watchdog:OMAP3:Register IVA and SECURE WDT, make clks accessible
Date: Mon, 22 Jun 2009 15:00:14 +0300 [thread overview]
Message-ID: <20090622120013.GC7352@atomide.com> (raw)
In-Reply-To: <1245265882-784-2-git-send-email-ubh@ti.com>
* Ulrik Bech Hald <ubh@ti.com> [090617 22:06]:
> Enabling registration of IVA and SECURE WDT devices. Making
> ick and fck for IVA and SECURE WDTs accessible.
>
> Tested on Zoom1 OMAP3 platform
>
> Signed-off-by: Ulrik Bech Hald <ubh@ti.com>
> ---
> arch/arm/mach-omap1/clock.c | 6 +-
> arch/arm/mach-omap2/clock24xx.c | 4 +-
> arch/arm/mach-omap2/clock34xx.c | 12 +++---
> arch/arm/plat-omap/devices.c | 91 ++++++++++++++++++++++++++++++++-------
> 4 files changed, 86 insertions(+), 27 deletions(-)
>
> diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
> index 436eed2..c0b5849 100644
> --- a/arch/arm/mach-omap1/clock.c
> +++ b/arch/arm/mach-omap1/clock.c
> @@ -85,9 +85,9 @@ static struct omap_clk omap_clks[] = {
> CLK(NULL, "arm_gpio_ck", &arm_gpio_ck, CK_1510 | CK_310),
> CLK(NULL, "armxor_ck", &armxor_ck.clk, CK_16XX | CK_1510 | CK_310),
> CLK(NULL, "armtim_ck", &armtim_ck.clk, CK_16XX | CK_1510 | CK_310),
> - CLK("omap_wdt", "fck", &armwdt_ck.clk, CK_16XX | CK_1510 | CK_310),
> - CLK("omap_wdt", "ick", &armper_ck.clk, CK_16XX),
> - CLK("omap_wdt", "ick", &dummy_ck, CK_1510 | CK_310),
> + CLK("omap_wdt.2", "fck", &armwdt_ck.clk, CK_16XX | CK_1510 | CK_310),
> + CLK("omap_wdt.2", "ick", &armper_ck.clk, CK_16XX),
> + CLK("omap_wdt.2", "ick", &dummy_ck, CK_1510 | CK_310),
> CLK(NULL, "arminth_ck", &arminth_ck1510, CK_1510 | CK_310),
> CLK(NULL, "arminth_ck", &arminth_ck16xx, CK_16XX),
> /* CK_GEN2 clocks */
> diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
> index 44de027..4fe3def
> --- a/arch/arm/mach-omap2/clock24xx.c
> +++ b/arch/arm/mach-omap2/clock24xx.c
> @@ -165,8 +165,8 @@ static struct omap_clk omap24xx_clks[] = {
> CLK(NULL, "uart3_fck", &uart3_fck, CK_243X | CK_242X),
> CLK(NULL, "gpios_ick", &gpios_ick, CK_243X | CK_242X),
> CLK(NULL, "gpios_fck", &gpios_fck, CK_243X | CK_242X),
> - CLK("omap_wdt", "ick", &mpu_wdt_ick, CK_243X | CK_242X),
> - CLK("omap_wdt", "fck", &mpu_wdt_fck, CK_243X | CK_242X),
> + CLK("omap_wdt.2", "ick", &mpu_wdt_ick, CK_243X | CK_242X),
> + CLK("omap_wdt.2", "fck", &mpu_wdt_fck, CK_243X | CK_242X),
> CLK(NULL, "sync_32k_ick", &sync_32k_ick, CK_243X | CK_242X),
> CLK(NULL, "wdt1_ick", &wdt1_ick, CK_243X | CK_242X),
> CLK(NULL, "omapctrl_ick", &omapctrl_ick, CK_243X | CK_242X),
> diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
> index 045da92..a4613e5 100644
> --- a/arch/arm/mach-omap2/clock34xx.c
> +++ b/arch/arm/mach-omap2/clock34xx.c
> @@ -215,11 +215,11 @@ static struct omap_clk omap34xx_clks[] = {
> CLK(NULL, "gpt1_fck", &gpt1_fck, CK_343X),
> CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_343X),
> CLK(NULL, "gpio1_dbck", &gpio1_dbck, CK_343X),
> - CLK("omap_wdt", "fck", &wdt2_fck, CK_343X),
> + CLK("omap_wdt.2", "fck", &wdt2_fck, CK_343X),
> CLK(NULL, "wkup_l4_ick", &wkup_l4_ick, CK_343X),
> CLK(NULL, "usim_ick", &usim_ick, CK_3430ES2),
> - CLK("omap_wdt", "ick", &wdt2_ick, CK_343X),
> - CLK(NULL, "wdt1_ick", &wdt1_ick, CK_343X),
> + CLK("omap_wdt.2", "ick", &wdt2_ick, CK_343X),
> + CLK("omap_wdt.1", "ick", &wdt1_ick, CK_343X),
> CLK(NULL, "gpio1_ick", &gpio1_ick, CK_343X),
> CLK(NULL, "omap_32ksync_ick", &omap_32ksync_ick, CK_343X),
> CLK(NULL, "gpt12_ick", &gpt12_ick, CK_343X),
> @@ -241,14 +241,14 @@ static struct omap_clk omap34xx_clks[] = {
> CLK(NULL, "gpio4_dbck", &gpio4_dbck, CK_343X),
> CLK(NULL, "gpio3_dbck", &gpio3_dbck, CK_343X),
> CLK(NULL, "gpio2_dbck", &gpio2_dbck, CK_343X),
> - CLK(NULL, "wdt3_fck", &wdt3_fck, CK_343X),
> + CLK("omap_wdt.3", "fck", &wdt3_fck, CK_343X),
> CLK(NULL, "per_l4_ick", &per_l4_ick, CK_343X),
> CLK(NULL, "gpio6_ick", &gpio6_ick, CK_343X),
> CLK(NULL, "gpio5_ick", &gpio5_ick, CK_343X),
> CLK(NULL, "gpio4_ick", &gpio4_ick, CK_343X),
> CLK(NULL, "gpio3_ick", &gpio3_ick, CK_343X),
> CLK(NULL, "gpio2_ick", &gpio2_ick, CK_343X),
> - CLK(NULL, "wdt3_ick", &wdt3_ick, CK_343X),
> + CLK("omap_wdt.3", "ick", &wdt3_ick, CK_343X),
> CLK(NULL, "uart3_ick", &uart3_ick, CK_343X),
> CLK(NULL, "gpt9_ick", &gpt9_ick, CK_343X),
> CLK(NULL, "gpt8_ick", &gpt8_ick, CK_343X),
> @@ -275,7 +275,7 @@ static struct omap_clk omap34xx_clks[] = {
> CLK(NULL, "sr_l4_ick", &sr_l4_ick, CK_343X),
> CLK(NULL, "secure_32k_fck", &secure_32k_fck, CK_343X),
> CLK(NULL, "gpt12_fck", &gpt12_fck, CK_343X),
> - CLK(NULL, "wdt1_fck", &wdt1_fck, CK_343X),
> + CLK("omap_wdt.1", "fck", &wdt1_fck, CK_343X),
> };
>
> /* CM_AUTOIDLE_PLL*.AUTO_* bit values */
> diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
> index a64b692..5614f97
> --- a/arch/arm/plat-omap/devices.c
> +++ b/arch/arm/plat-omap/devices.c
> @@ -288,42 +288,101 @@ static inline void omap_init_uwire(void) {}
>
> #if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE)
>
> -static struct resource wdt_resources[] = {
> +#define OMAP44XX_WDT2_BASE 0x4a314000
> +#define OMAP34XX_WDT1_BASE 0x4830c000
> +#define OMAP34XX_WDT2_BASE 0x48314000
> +#define OMAP34XX_WDT3_BASE 0x49030000
> +#define OMAP2430_WDT_BASE 0x49016000
> +#define OMAP2420_WDT_BASE 0x48022000
> +#define OMAP16XX_WDT_BASE 0xfffeb000
> +
> +static struct resource secure_wdt_resources[] = {
> {
> - .flags = IORESOURCE_MEM,
> + .flags = IORESOURCE_MEM,
> },
> };
>
> -static struct platform_device omap_wdt_device = {
> - .name = "omap_wdt",
> - .id = -1,
> - .num_resources = ARRAY_SIZE(wdt_resources),
> - .resource = wdt_resources,
> +static struct resource mpu_wdt_resources[] = {
> + {
> + .flags = IORESOURCE_MEM,
> + },
> +};
> +
> +static struct resource iva2_wdt_resources[] = {
> + {
> + .flags = IORESOURCE_MEM,
> + },
> +};
> +
> +static struct platform_device omap_secure_wdt_device = {
> + .name = "omap_wdt",
> + .id = 1,
> + .num_resources = ARRAY_SIZE(secure_wdt_resources),
> + .resource = secure_wdt_resources,
> + .dev = {
> + .platform_data = "watchdog_secure",
> + },
> +};
> +
> +static struct platform_device omap_mpu_wdt_device = {
> + .name = "omap_wdt",
> + .id = 2,
> + .num_resources = ARRAY_SIZE(mpu_wdt_resources),
> + .resource = mpu_wdt_resources,
> + .dev = {
> + .platform_data = "watchdog",
> + },
> +};
> +
> +static struct platform_device omap_iva2_wdt_device = {
> + .name = "omap_wdt",
> + .id = 3,
> + .num_resources = ARRAY_SIZE(iva2_wdt_resources),
> + .resource = iva2_wdt_resources,
> + .dev = {
> + .platform_data = "watchdog_iva2",
> + },
> };
>
> static void omap_init_wdt(void)
> {
> if (cpu_is_omap16xx())
> - wdt_resources[0].start = 0xfffeb000;
> + mpu_wdt_resources[0].start = OMAP16XX_WDT_BASE;
> else if (cpu_is_omap2420())
> - wdt_resources[0].start = 0x48022000; /* WDT2 */
> + mpu_wdt_resources[0].start = OMAP2420_WDT_BASE;
> else if (cpu_is_omap2430())
> - wdt_resources[0].start = 0x49016000; /* WDT2 */
> - else if (cpu_is_omap343x())
> - wdt_resources[0].start = 0x48314000; /* WDT2 */
> - else if (cpu_is_omap44xx())
> - wdt_resources[0].start = 0x4a314000;
> + mpu_wdt_resources[0].start = OMAP2430_WDT_BASE;
> + else if (cpu_is_omap343x()) {
> + secure_wdt_resources[0].start = OMAP34XX_WDT1_BASE;
> + secure_wdt_resources[0].end = secure_wdt_resources[0].start \
> + + 0x4f;
The backslash above should not be needed.
> + mpu_wdt_resources[0].start = OMAP34XX_WDT2_BASE;
> + iva2_wdt_resources[0].start = OMAP34XX_WDT3_BASE;
> + iva2_wdt_resources[0].end = iva2_wdt_resources[0].start + 0x4f;
> + } else if (cpu_is_omap44xx())
> + mpu_wdt_resources[0].start = OMAP44XX_WDT2_BASE;
> else
> return;
>
> - wdt_resources[0].end = wdt_resources[0].start + 0x4f;
> + mpu_wdt_resources[0].end = mpu_wdt_resources[0].start + 0x4f;
> +
> + /* MPU WDT present across omap family */
> + (void) platform_device_register(&omap_mpu_wdt_device);
>
> - (void) platform_device_register(&omap_wdt_device);
> + if (cpu_is_omap34xx()) {
> + (void) platform_device_register(&omap_iva2_wdt_device);
> + if (omap_type() == OMAP2_DEVICE_TYPE_SEC
> + || omap_type() == OMAP2_DEVICE_TYPE_EMU)
> + (void) \
> + platform_device_register(&omap_secure_wdt_device);
> + }
Here too..
> }
> +
> #else
> static inline void omap_init_wdt(void) {}
> #endif
>
> +
> /*-------------------------------------------------------------------------*/
>
> #if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE)
> --
> 1.5.4.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2009-06-22 12:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-17 19:11 [PATCH v4 0/2] watchdog:OMAP3:Add support for IVA2, SECURE WDTs Ulrik Bech Hald
2009-06-17 19:11 ` [PATCH v4 1/2] watchdog:OMAP3:Register IVA and SECURE WDT, make clks accessible Ulrik Bech Hald
2009-06-17 19:11 ` [PATCH v4 2/2] watchdog:OMAP3:Enable support for IVA2 and SECURE Ulrik Bech Hald
2009-06-22 22:38 ` Kevin Hilman
2009-06-22 12:00 ` Tony Lindgren [this message]
2009-06-22 22:36 ` [PATCH v4 1/2] watchdog:OMAP3:Register IVA and SECURE WDT, make clks accessible Kevin Hilman
2009-06-22 22:35 ` [PATCH v4 0/2] watchdog:OMAP3:Add support for IVA2, SECURE WDTs Kevin Hilman
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=20090622120013.GC7352@atomide.com \
--to=tony@atomide.com \
--cc=linux-omap@vger.kernel.org \
--cc=ubh@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.