-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
OMAP: powerdomain: Arch specific funcs for state control
Define the following architecture specific funtions for omap2/3/4 .pwrdm_set_next_pwrst .pwrdm_read_next_pwrst .pwrdm_read_pwrst .pwrdm_read_prev_pwrst Convert the platform-independent framework to call these functions. Signed-off-by: Rajendra Nayak <rnayak@ti.com> [paul@pwsan.com: remove remaining static allocations in powerdomains.h file; remove path in file header comments, rearranged Makefile changes] Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Benoit Cousson <b-cousson@ti.com> Cc: Kevin Hilman <khilman@deeprootsystems.com> Reviewed-by: Kevin Hilman <khilman@deeprootsystems.com> Tested-by: Kevin Hilman <khilman@deeprootsystems.com> Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Tested-by: Rajendra Nayak <rnayak@ti.com>
- Loading branch information
Rajendra Nayak
authored and
Paul Walmsley
committed
Dec 22, 2010
1 parent
3b1e8b2
commit f327e07
Showing
6 changed files
with
175 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* | ||
* OMAP2 and OMAP3 powerdomain control | ||
* | ||
* Copyright (C) 2009-2010 Texas Instruments, Inc. | ||
* Copyright (C) 2007-2009 Nokia Corporation | ||
* | ||
* Derived from mach-omap2/powerdomain.c written by Paul Walmsley | ||
* Rajendra Nayak <rnayak@ti.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/io.h> | ||
#include <linux/errno.h> | ||
#include <linux/delay.h> | ||
#include <plat/prcm.h> | ||
#include "prm.h" | ||
#include "prm-regbits-34xx.h" | ||
#include "powerdomains.h" | ||
|
||
/* Common functions across OMAP2 and OMAP3 */ | ||
static int omap2_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | ||
{ | ||
prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK, | ||
(pwrst << OMAP_POWERSTATE_SHIFT), | ||
pwrdm->prcm_offs, OMAP2_PM_PWSTCTRL); | ||
return 0; | ||
} | ||
|
||
static int omap2_pwrdm_read_next_pwrst(struct powerdomain *pwrdm) | ||
{ | ||
return prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
OMAP2_PM_PWSTCTRL, OMAP_POWERSTATE_MASK); | ||
} | ||
|
||
static int omap2_pwrdm_read_pwrst(struct powerdomain *pwrdm) | ||
{ | ||
return prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
OMAP2_PM_PWSTST, OMAP_POWERSTATEST_MASK); | ||
} | ||
|
||
/* Applicable only for OMAP3. Not supported on OMAP2 */ | ||
static int omap3_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm) | ||
{ | ||
return prm_read_mod_bits_shift(pwrdm->prcm_offs, OMAP3430_PM_PREPWSTST, | ||
OMAP3430_LASTPOWERSTATEENTERED_MASK); | ||
} | ||
|
||
struct pwrdm_ops omap2_pwrdm_operations = { | ||
.pwrdm_set_next_pwrst = omap2_pwrdm_set_next_pwrst, | ||
.pwrdm_read_next_pwrst = omap2_pwrdm_read_next_pwrst, | ||
.pwrdm_read_pwrst = omap2_pwrdm_read_pwrst, | ||
}; | ||
|
||
struct pwrdm_ops omap3_pwrdm_operations = { | ||
.pwrdm_set_next_pwrst = omap2_pwrdm_set_next_pwrst, | ||
.pwrdm_read_next_pwrst = omap2_pwrdm_read_next_pwrst, | ||
.pwrdm_read_pwrst = omap2_pwrdm_read_pwrst, | ||
.pwrdm_read_prev_pwrst = omap3_pwrdm_read_prev_pwrst, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* OMAP4 powerdomain control | ||
* | ||
* Copyright (C) 2009-2010 Texas Instruments, Inc. | ||
* Copyright (C) 2007-2009 Nokia Corporation | ||
* | ||
* Derived from mach-omap2/powerdomain.c written by Paul Walmsley | ||
* Rajendra Nayak <rnayak@ti.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/io.h> | ||
#include <linux/errno.h> | ||
#include <linux/delay.h> | ||
#include <plat/powerdomain.h> | ||
#include <plat/prcm.h> | ||
#include "prm.h" | ||
#include "prm-regbits-44xx.h" | ||
#include "powerdomains.h" | ||
|
||
static int omap4_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | ||
{ | ||
prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK, | ||
(pwrst << OMAP_POWERSTATE_SHIFT), | ||
pwrdm->prcm_offs, OMAP4_PM_PWSTCTRL); | ||
return 0; | ||
} | ||
|
||
static int omap4_pwrdm_read_next_pwrst(struct powerdomain *pwrdm) | ||
{ | ||
return prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
OMAP4_PM_PWSTCTRL, OMAP_POWERSTATE_MASK); | ||
} | ||
|
||
static int omap4_pwrdm_read_pwrst(struct powerdomain *pwrdm) | ||
{ | ||
return prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
OMAP4_PM_PWSTST, OMAP_POWERSTATEST_MASK); | ||
} | ||
|
||
static int omap4_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm) | ||
{ | ||
return prm_read_mod_bits_shift(pwrdm->prcm_offs, OMAP4_PM_PWSTST, | ||
OMAP4430_LASTPOWERSTATEENTERED_MASK); | ||
} | ||
|
||
struct pwrdm_ops omap4_pwrdm_operations = { | ||
.pwrdm_set_next_pwrst = omap4_pwrdm_set_next_pwrst, | ||
.pwrdm_read_next_pwrst = omap4_pwrdm_read_next_pwrst, | ||
.pwrdm_read_pwrst = omap4_pwrdm_read_pwrst, | ||
.pwrdm_read_prev_pwrst = omap4_pwrdm_read_prev_pwrst, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* | ||
* OMAP2+ powerdomain prototypes | ||
* | ||
* Copyright (C) 2010 Texas Instruments, Inc. | ||
* | ||
* Rajendra Nayak <rnayak@ti.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS | ||
#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS | ||
|
||
#include <plat/powerdomain.h> | ||
|
||
extern struct pwrdm_ops omap2_pwrdm_operations; | ||
extern struct pwrdm_ops omap3_pwrdm_operations; | ||
extern struct pwrdm_ops omap4_pwrdm_operations; | ||
|
||
#endif /* ARCH_ARM_MACH_OMAP2_POWERDOMAINS */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters