* [RFC 0/3] OMAP3: Support processor group selection by a peripheral
@ 2011-03-21 11:10 Rajendra Nayak
2011-03-21 11:10 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Rajendra Nayak
0 siblings, 1 reply; 10+ messages in thread
From: Rajendra Nayak @ 2011-03-21 11:10 UTC (permalink / raw)
To: linux-omap; +Cc: paul, b-cousson, Rajendra Nayak
OMAP3 has PM_<processor_name>GRPSEL_<domain_name> registers
which can be programmed to allow a peripheral to choose a
processor group which it expects to wake up.
This RFC series is an attempt to provide omap_device layer
api's for drivers to be able to do this instead of direct
PRCM accesses within drivers which is the case today.
Something similar exists on OMAP4, in the form of
wakeup dependencies, which are not addressed in this
series for now.
Rajendra Nayak (3):
OMAP3: PRM: Add grpsel programming support
OMAP3: hwmod: Add support to associate an initiator with a hwmod
OMAP3: omap_device: Add support to associate a device with an
initiator
arch/arm/mach-omap2/omap_hwmod.c | 33 ++++++++++++
arch/arm/mach-omap2/prcm-common.h | 1 -
arch/arm/mach-omap2/prm2xxx_3xxx.c | 70 ++++++++++++++++++++++++++
arch/arm/mach-omap2/prm2xxx_3xxx.h | 4 ++
arch/arm/plat-omap/include/plat/omap_hwmod.h | 9 +++
arch/arm/plat-omap/omap_device.c | 54 ++++++++++++++++++++
6 files changed, 170 insertions(+), 1 deletions(-)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC 1/3] OMAP3: PRM: Add grpsel programming support
2011-03-21 11:10 [RFC 0/3] OMAP3: Support processor group selection by a peripheral Rajendra Nayak
@ 2011-03-21 11:10 ` Rajendra Nayak
2011-03-21 11:10 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Rajendra Nayak
2011-03-21 13:08 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Hema Kalliguddi
0 siblings, 2 replies; 10+ messages in thread
From: Rajendra Nayak @ 2011-03-21 11:10 UTC (permalink / raw)
To: linux-omap; +Cc: paul, b-cousson, Rajendra Nayak
Add api's to support programming the
PM_<processor>GRPSEL_<domain> registers which are
needed for proper peripheral wakeup configuration.
Also add unique identifiers for all initiators.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
arch/arm/mach-omap2/prcm-common.h | 1 -
arch/arm/mach-omap2/prm2xxx_3xxx.c | 70 ++++++++++++++++++++++++++
arch/arm/mach-omap2/prm2xxx_3xxx.h | 4 ++
arch/arm/plat-omap/include/plat/omap_hwmod.h | 7 +++
4 files changed, 81 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h
index 0363dcb..be6b3c2 100644
--- a/arch/arm/mach-omap2/prcm-common.h
+++ b/arch/arm/mach-omap2/prcm-common.h
@@ -397,7 +397,6 @@
#define OMAP3430_EN_CORE_SHIFT 0
#define OMAP3430_EN_CORE_MASK (1 << 0)
-
/*
* MAX_MODULE_HARDRESET_WAIT: Maximum microseconds to wait for an OMAP
* submodule to exit hardreset
diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c b/arch/arm/mach-omap2/prm2xxx_3xxx.c
index 051213f..77aade2 100644
--- a/arch/arm/mach-omap2/prm2xxx_3xxx.c
+++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c
@@ -19,11 +19,21 @@
#include <plat/common.h>
#include <plat/cpu.h>
#include <plat/prcm.h>
+#include <plat/omap_hwmod.h>
#include "prm2xxx_3xxx.h"
#include "cm2xxx_3xxx.h"
#include "prm-regbits-24xx.h"
#include "prm-regbits-34xx.h"
+#include "prm2xxx_3xxx.h"
+
+static const u8 prm_mpugrpsel_offs[] = {
+ OMAP3430_PM_MPUGRPSEL1, 0, OMAP3430ES2_PM_MPUGRPSEL3,
+};
+
+static const u8 prm_ivagrpsel_offs[] = {
+ OMAP3430_PM_IVAGRPSEL1, 0, OMAP3430ES2_PM_IVAGRPSEL3,
+};
u32 omap2_prm_read_mod_reg(s16 module, u16 idx)
{
@@ -156,3 +166,63 @@ int omap2_prm_deassert_hardreset(s16 prm_mod, u8 rst_shift, u8 st_shift)
return (c == MAX_MODULE_HARDRESET_WAIT) ? -EBUSY : 0;
}
+
+static int _get_initiator_grpsel(u8 grpsel_id, u8 initiator_id,
+ u8 *prm_grpsel_reg)
+{
+ switch (initiator_id) {
+ case OMAP_INIT_MPU:
+ if (grpsel_id > ARRAY_SIZE(prm_mpugrpsel_offs))
+ return -EINVAL;
+ *prm_grpsel_reg = prm_mpugrpsel_offs[grpsel_id - 1];
+ break;
+ case OMAP_INIT_IVA:
+ if (grpsel_id > ARRAY_SIZE(prm_ivagrpsel_offs))
+ return -EINVAL;
+ *prm_grpsel_reg = prm_ivagrpsel_offs[grpsel_id - 1];
+ break;
+ default:
+ return -EINVAL;
+ }
+ return 0;
+}
+
+int omap2_prm_module_enable_initiator_wakeup(s16 prcm_mod, u8 grpsel_id,
+ u8 grpsel_shift, u8 initiator_id)
+{
+ u8 prm_grpsel_reg;
+ u32 mask;
+ int ret;
+
+ if (!grpsel_id || !cpu_is_omap34xx())
+ return -EINVAL;
+
+ mask = 1 << grpsel_shift;
+
+ ret = _get_initiator_grpsel(grpsel_id, initiator_id, &prm_grpsel_reg);
+ if (ret)
+ return ret;
+
+ omap2_prm_set_mod_reg_bits(mask, prcm_mod, prm_grpsel_reg);
+ return 0;
+}
+
+int omap2_prm_module_disable_initiator_wakeup(s16 prcm_mod, u8 grpsel_id,
+ u8 grpsel_shift, u8 initiator_id)
+{
+ u8 prm_grpsel_reg;
+ u32 mask;
+ int ret;
+
+ if (!grpsel_id || !cpu_is_omap34xx())
+ return -EINVAL;
+
+ mask = 1 << grpsel_shift;
+
+ ret = _get_initiator_grpsel(grpsel_id, initiator_id, &prm_grpsel_reg);
+ if (ret)
+ return ret;
+
+ omap2_prm_clear_mod_reg_bits(mask, prcm_mod, prm_grpsel_reg);
+ return 0;
+}
diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.h b/arch/arm/mach-omap2/prm2xxx_3xxx.h
index a1fc62a..08ae2b9 100644
--- a/arch/arm/mach-omap2/prm2xxx_3xxx.h
+++ b/arch/arm/mach-omap2/prm2xxx_3xxx.h
@@ -302,6 +302,10 @@ extern u32 omap2_prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask);
extern int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift);
extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift);
extern int omap2_prm_deassert_hardreset(s16 prm_mod, u8 rst_shift, u8 st_shift);
+extern int omap2_prm_module_enable_initiator_wakeup(s16 module, u8 grpsel_id,
+ u8 shift, u8 init_id);
+extern int omap2_prm_module_disable_initiator_wakeup(s16 module, u8 grpsel_id,
+ u8 shift, u8 init_id);
#endif /* CONFIG_ARCH_OMAP4 */
#endif
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 1adea9c..4bd7354 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -431,6 +431,13 @@ struct omap_hwmod_omap4_prcm {
#define _HWMOD_STATE_IDLE 5
#define _HWMOD_STATE_DISABLED 6
+/* Unique initiator identifiers */
+#define OMAP_INIT_MPU 1
+#define OMAP_INIT_IVA 2
+#define OMAP_INIT_DSP 3
+#define OMAP_INIT_MPU_M3 4
+#define OMAP_INIT_SDMA 5
+
/**
* struct omap_hwmod_class - the type of an IP block
* @name: name of the hwmod_class
--
1.7.0.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod
2011-03-21 11:10 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Rajendra Nayak
@ 2011-03-21 11:10 ` Rajendra Nayak
2011-03-21 11:10 ` [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator Rajendra Nayak
2011-03-21 13:08 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Hema Kalliguddi
2011-03-21 13:08 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Hema Kalliguddi
1 sibling, 2 replies; 10+ messages in thread
From: Rajendra Nayak @ 2011-03-21 11:10 UTC (permalink / raw)
To: linux-omap; +Cc: paul, b-cousson, Rajendra Nayak
Add hwmod api's to add and delete an initiator
association with an hwmod.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
arch/arm/mach-omap2/omap_hwmod.c | 33 ++++++++++++++++++++++++++
arch/arm/plat-omap/include/plat/omap_hwmod.h | 2 +
2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index e034294..d4826be 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2369,3 +2369,36 @@ int omap_hwmod_no_setup_reset(struct omap_hwmod *oh)
return 0;
}
+
+int omap_hwmod_add_initiator_user(struct omap_hwmod *oh, u8 init_id)
+{
+ if (oh->_state != _HWMOD_STATE_ENABLED)
+ return -EINVAL;
+
+ if (cpu_is_omap34xx()) {
+ return omap2_prm_module_enable_initiator_wakeup(
+ oh->prcm.omap2.module_offs,
+ oh->prcm.omap2.idlest_reg_id,
+ oh->prcm.omap2.idlest_idle_bit,
+ init_id);
+ }
+
+ return -EINVAL;
+}
+
+int omap_hwmod_del_initiator_user(struct omap_hwmod *oh, u8 init_id)
+{
+ if (oh->_state == _HWMOD_STATE_ENABLED)
+ return -EINVAL;
+
+ if (cpu_is_omap34xx()) {
+ return omap2_prm_module_disable_initiator_wakeup(
+ oh->prcm.omap2.module_offs,
+ oh->prcm.omap2.idlest_reg_id,
+ oh->prcm.omap2.idlest_idle_bit,
+ init_id);
+ }
+
+ return -EINVAL;
+
+}
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 4bd7354..fe47448 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -590,6 +590,8 @@ int omap_hwmod_add_initiator_dep(struct omap_hwmod *oh,
struct omap_hwmod *init_oh);
int omap_hwmod_del_initiator_dep(struct omap_hwmod *oh,
struct omap_hwmod *init_oh);
+int omap_hwmod_add_initiator_user(struct omap_hwmod *oh, u8 init_id);
+int omap_hwmod_del_initiator_user(struct omap_hwmod *oh, u8 init_id);
int omap_hwmod_set_clockact_both(struct omap_hwmod *oh);
int omap_hwmod_set_clockact_main(struct omap_hwmod *oh);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator
2011-03-21 11:10 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Rajendra Nayak
@ 2011-03-21 11:10 ` Rajendra Nayak
2011-03-21 13:12 ` Hema Kalliguddi
2011-03-21 13:08 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Hema Kalliguddi
1 sibling, 1 reply; 10+ messages in thread
From: Rajendra Nayak @ 2011-03-21 11:10 UTC (permalink / raw)
To: linux-omap; +Cc: paul, b-cousson, Rajendra Nayak
These api's are meant to to used by drivers to
associate/disassociate a device from a given initiator.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
arch/arm/plat-omap/omap_device.c | 54 ++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index 9bbda9a..0cd05d2 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -662,6 +662,60 @@ int omap_device_shutdown(struct platform_device *pdev)
return ret;
}
+static int omap_device_add_initiator_user(struct platform_device *pdev,
+ u8 init_id)
+{
+ int i;
+ struct omap_device *od;
+
+ od = _find_by_pdev(pdev);
+
+ if (od->_state != OMAP_DEVICE_STATE_ENABLED)
+ return -EINVAL;
+
+ for (i = 0; i < od->hwmods_cnt; i++)
+ omap_hwmod_add_initiator_user(od->hwmods[i], init_id);
+
+ return 0;
+}
+
+inline int omap_device_add_mpu_user(struct platform_device *pdev)
+{
+ return omap_device_add_initiator_user(pdev, OMAP_INIT_MPU);
+}
+
+inline int omap_device_add_iva_user(struct platform_device *pdev)
+{
+ return omap_device_add_initiator_user(pdev, OMAP_INIT_IVA);
+}
+
+static int omap_device_del_initiator_user(struct platform_device *pdev,
+ u8 init_id)
+{
+ int i;
+ struct omap_device *od;
+
+ od = _find_by_pdev(pdev);
+
+ if (od->_state == OMAP_DEVICE_STATE_ENABLED)
+ return -EINVAL;
+
+ for (i = 0; i < od->hwmods_cnt; i++)
+ omap_hwmod_del_initiator_user(od->hwmods[i], init_id);
+
+ return 0;
+}
+
+inline int omap_device_del_mpu_user(struct platform_device *pdev)
+{
+ return omap_device_del_initiator_user(pdev, OMAP_INIT_MPU);
+}
+
+inline int omap_device_del_iva_user(struct platform_device *pdev)
+{
+ return omap_device_del_initiator_user(pdev, OMAP_INIT_IVA);
+}
+
/**
* omap_device_align_pm_lat - activate/deactivate device to match wakeup lat lim
* @od: struct omap_device *
--
1.7.0.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [RFC 1/3] OMAP3: PRM: Add grpsel programming support
2011-03-21 11:10 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Rajendra Nayak
2011-03-21 11:10 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Rajendra Nayak
@ 2011-03-21 13:08 ` Hema Kalliguddi
1 sibling, 0 replies; 10+ messages in thread
From: Hema Kalliguddi @ 2011-03-21 13:08 UTC (permalink / raw)
To: Rajendra Nayak, linux-omap; +Cc: paul, Benoit Cousson
>-----Original Message-----
>From: linux-omap-owner@vger.kernel.org
>[mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Rajendra Nayak
>Sent: Monday, March 21, 2011 4:40 PM
>To: linux-omap@vger.kernel.org
>Cc: paul@pwsan.com; b-cousson@ti.com; Rajendra Nayak
>Subject: [RFC 1/3] OMAP3: PRM: Add grpsel programming support
>
>Add api's to support programming the
>PM_<processor>GRPSEL_<domain> registers which are
>needed for proper peripheral wakeup configuration.
>
>Also add unique identifiers for all initiators.
>
>Signed-off-by: Rajendra Nayak <rnayak@ti.com>
>---
> arch/arm/mach-omap2/prcm-common.h | 1 -
> arch/arm/mach-omap2/prm2xxx_3xxx.c | 70
>++++++++++++++++++++++++++
> arch/arm/mach-omap2/prm2xxx_3xxx.h | 4 ++
> arch/arm/plat-omap/include/plat/omap_hwmod.h | 7 +++
> 4 files changed, 81 insertions(+), 1 deletions(-)
>
>diff --git a/arch/arm/mach-omap2/prcm-common.h
>b/arch/arm/mach-omap2/prcm-common.h
>index 0363dcb..be6b3c2 100644
>--- a/arch/arm/mach-omap2/prcm-common.h
>+++ b/arch/arm/mach-omap2/prcm-common.h
>@@ -397,7 +397,6 @@
> #define OMAP3430_EN_CORE_SHIFT 0
> #define OMAP3430_EN_CORE_MASK (1 << 0)
>
>-
Stray change...
> /*
> * MAX_MODULE_HARDRESET_WAIT: Maximum microseconds to wait for an OMAP
> * submodule to exit hardreset
>diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c
>b/arch/arm/mach-omap2/prm2xxx_3xxx.c
>index 051213f..77aade2 100644
>--- a/arch/arm/mach-omap2/prm2xxx_3xxx.c
>+++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c
>@@ -19,11 +19,21 @@
> #include <plat/common.h>
> #include <plat/cpu.h>
> #include <plat/prcm.h>
>+#include <plat/omap_hwmod.h>
>
> #include "prm2xxx_3xxx.h"
> #include "cm2xxx_3xxx.h"
> #include "prm-regbits-24xx.h"
> #include "prm-regbits-34xx.h"
>+#include "prm2xxx_3xxx.h"
>+
>+static const u8 prm_mpugrpsel_offs[] = {
>+ OMAP3430_PM_MPUGRPSEL1, 0, OMAP3430ES2_PM_MPUGRPSEL3,
>+};
>+
>+static const u8 prm_ivagrpsel_offs[] = {
>+ OMAP3430_PM_IVAGRPSEL1, 0, OMAP3430ES2_PM_IVAGRPSEL3,
>+};
>
> u32 omap2_prm_read_mod_reg(s16 module, u16 idx)
> {
>@@ -156,3 +166,63 @@ int omap2_prm_deassert_hardreset(s16
>prm_mod, u8 rst_shift, u8 st_shift)
>
> return (c == MAX_MODULE_HARDRESET_WAIT) ? -EBUSY : 0;
> }
>+
>+static int _get_initiator_grpsel(u8 grpsel_id, u8 initiator_id,
>+ u8
>*prm_grpsel_reg)
>+{
>+ switch (initiator_id) {
>+ case OMAP_INIT_MPU:
>+ if (grpsel_id > ARRAY_SIZE(prm_mpugrpsel_offs))
>+ return -EINVAL;
>+ *prm_grpsel_reg = prm_mpugrpsel_offs[grpsel_id - 1];
>+ break;
>+ case OMAP_INIT_IVA:
>+ if (grpsel_id > ARRAY_SIZE(prm_ivagrpsel_offs))
>+ return -EINVAL;
>+ *prm_grpsel_reg = prm_ivagrpsel_offs[grpsel_id - 1];
>+ break;
>+ default:
>+ return -EINVAL;
>+ }
>+ return 0;
>+}
>+
>+int omap2_prm_module_enable_initiator_wakeup(s16 prcm_mod, u8
>grpsel_id,
>+ u8 grpsel_shift, u8
>initiator_id)
>+{
>+ u8 prm_grpsel_reg;
>+ u32 mask;
>+ int ret;
>+
>+ if (!grpsel_id || !cpu_is_omap34xx())
>+ return -EINVAL;
>+
>+ mask = 1 << grpsel_shift;
>+
>+ ret = _get_initiator_grpsel(grpsel_id, initiator_id,
>&prm_grpsel_reg);
>+ if (ret)
>+ return ret;
>+
>+ omap2_prm_set_mod_reg_bits(mask, prcm_mod, prm_grpsel_reg);
>+ return 0;
>+}
>+
>+int omap2_prm_module_disable_initiator_wakeup(s16 prcm_mod,
>u8 grpsel_id,
>+ u8 grpsel_shift, u8
>initiator_id)
>+{
>+ u8 prm_grpsel_reg;
>+ u32 mask;
>+ int ret;
>+
>+ if (!grpsel_id || !cpu_is_omap34xx())
>+ return -EINVAL;
>+
>+ mask = 1 << grpsel_shift;
>+
>+ ret = _get_initiator_grpsel(grpsel_id, initiator_id,
>&prm_grpsel_reg);
>+ if (ret)
>+ return ret;
>+
>+ omap2_prm_clear_mod_reg_bits(mask, prcm_mod, prm_grpsel_reg);
>+ return 0;
>+}
>diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.h
>b/arch/arm/mach-omap2/prm2xxx_3xxx.h
>index a1fc62a..08ae2b9 100644
>--- a/arch/arm/mach-omap2/prm2xxx_3xxx.h
>+++ b/arch/arm/mach-omap2/prm2xxx_3xxx.h
>@@ -302,6 +302,10 @@ extern u32
>omap2_prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask);
> extern int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift);
> extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift);
> extern int omap2_prm_deassert_hardreset(s16 prm_mod, u8
>rst_shift, u8 st_shift);
>+extern int omap2_prm_module_enable_initiator_wakeup(s16
>module, u8 grpsel_id,
>+ u8 shift, u8 init_id);
>+extern int omap2_prm_module_disable_initiator_wakeup(s16
>module, u8 grpsel_id,
>+ u8 shift, u8 init_id);
>
> #endif /* CONFIG_ARCH_OMAP4 */
> #endif
>diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>index 1adea9c..4bd7354 100644
>--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>@@ -431,6 +431,13 @@ struct omap_hwmod_omap4_prcm {
> #define _HWMOD_STATE_IDLE 5
> #define _HWMOD_STATE_DISABLED 6
>
>+/* Unique initiator identifiers */
>+#define OMAP_INIT_MPU 1
>+#define OMAP_INIT_IVA 2
>+#define OMAP_INIT_DSP 3
>+#define OMAP_INIT_MPU_M3 4
>+#define OMAP_INIT_SDMA 5
>+
> /**
> * struct omap_hwmod_class - the type of an IP block
> * @name: name of the hwmod_class
>--
>1.7.0.4
>
>--
>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
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod
2011-03-21 11:10 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Rajendra Nayak
2011-03-21 11:10 ` [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator Rajendra Nayak
@ 2011-03-21 13:08 ` Hema Kalliguddi
2011-03-22 8:28 ` Rajendra Nayak
1 sibling, 1 reply; 10+ messages in thread
From: Hema Kalliguddi @ 2011-03-21 13:08 UTC (permalink / raw)
To: Rajendra Nayak, linux-omap; +Cc: paul, Benoit Cousson
Rajendra,
>-----Original Message-----
>From: linux-omap-owner@vger.kernel.org
>[mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Rajendra Nayak
>Sent: Monday, March 21, 2011 4:40 PM
>To: linux-omap@vger.kernel.org
>Cc: paul@pwsan.com; b-cousson@ti.com; Rajendra Nayak
>Subject: [RFC 2/3] OMAP3: hwmod: Add support to associate an
>initiator with a hwmod
>
>Add hwmod api's to add and delete an initiator
>association with an hwmod.
>
>Signed-off-by: Rajendra Nayak <rnayak@ti.com>
>---
> arch/arm/mach-omap2/omap_hwmod.c | 33
>++++++++++++++++++++++++++
> arch/arm/plat-omap/include/plat/omap_hwmod.h | 2 +
> 2 files changed, 35 insertions(+), 0 deletions(-)
>
>diff --git a/arch/arm/mach-omap2/omap_hwmod.c
>b/arch/arm/mach-omap2/omap_hwmod.c
>index e034294..d4826be 100644
>--- a/arch/arm/mach-omap2/omap_hwmod.c
>+++ b/arch/arm/mach-omap2/omap_hwmod.c
>@@ -2369,3 +2369,36 @@ int omap_hwmod_no_setup_reset(struct
>omap_hwmod *oh)
>
> return 0;
> }
>+
>+int omap_hwmod_add_initiator_user(struct omap_hwmod *oh, u8 init_id)
>+{
>+ if (oh->_state != _HWMOD_STATE_ENABLED)
>+ return -EINVAL;
>+
>+ if (cpu_is_omap34xx()) {
>+ return omap2_prm_module_enable_initiator_wakeup(
>+
>oh->prcm.omap2.module_offs,
>+
>oh->prcm.omap2.idlest_reg_id,
>+
>oh->prcm.omap2.idlest_idle_bit,
>+ init_id);
>+ }
>+
>+ return -EINVAL;
Why are you returning error when it not a omap34xx?
Is it not that this API will be called for only omap34xx?
>+}
>+
>+int omap_hwmod_del_initiator_user(struct omap_hwmod *oh, u8 init_id)
>+{
>+ if (oh->_state == _HWMOD_STATE_ENABLED)
>+ return -EINVAL;
>+
>+ if (cpu_is_omap34xx()) {
>+ return omap2_prm_module_disable_initiator_wakeup(
>+
>oh->prcm.omap2.module_offs,
>+
>oh->prcm.omap2.idlest_reg_id,
>+
>oh->prcm.omap2.idlest_idle_bit,
>+ init_id);
>+ }
>+
>+ return -EINVAL;
Ditto...
>+
>+}
>diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>index 4bd7354..fe47448 100644
>--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>@@ -590,6 +590,8 @@ int omap_hwmod_add_initiator_dep(struct
>omap_hwmod *oh,
> struct omap_hwmod *init_oh);
> int omap_hwmod_del_initiator_dep(struct omap_hwmod *oh,
> struct omap_hwmod *init_oh);
>+int omap_hwmod_add_initiator_user(struct omap_hwmod *oh, u8 init_id);
>+int omap_hwmod_del_initiator_user(struct omap_hwmod *oh, u8 init_id);
>
> int omap_hwmod_set_clockact_both(struct omap_hwmod *oh);
> int omap_hwmod_set_clockact_main(struct omap_hwmod *oh);
>--
Regards,
Hema
>1.7.0.4
>
>--
>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
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator
2011-03-21 11:10 ` [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator Rajendra Nayak
@ 2011-03-21 13:12 ` Hema Kalliguddi
2011-03-22 8:28 ` Rajendra Nayak
0 siblings, 1 reply; 10+ messages in thread
From: Hema Kalliguddi @ 2011-03-21 13:12 UTC (permalink / raw)
To: Rajendra Nayak, linux-omap; +Cc: paul, Benoit Cousson
Rajendra,
>-----Original Message-----
>From: linux-omap-owner@vger.kernel.org
>[mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Rajendra Nayak
>Sent: Monday, March 21, 2011 4:40 PM
>To: linux-omap@vger.kernel.org
>Cc: paul@pwsan.com; b-cousson@ti.com; Rajendra Nayak
>Subject: [RFC 3/3] OMAP3: omap_device: Add support to
>associate a device with an initiator
>
>These api's are meant to to used by drivers to
>associate/disassociate a device from a given initiator.
>
>Signed-off-by: Rajendra Nayak <rnayak@ti.com>
>---
> arch/arm/plat-omap/omap_device.c | 54
>++++++++++++++++++++++++++++++++++++++
> 1 files changed, 54 insertions(+), 0 deletions(-)
>
>diff --git a/arch/arm/plat-omap/omap_device.c
>b/arch/arm/plat-omap/omap_device.c
>index 9bbda9a..0cd05d2 100644
>--- a/arch/arm/plat-omap/omap_device.c
>+++ b/arch/arm/plat-omap/omap_device.c
>@@ -662,6 +662,60 @@ int omap_device_shutdown(struct
>platform_device *pdev)
> return ret;
> }
>
>+static int omap_device_add_initiator_user(struct
>platform_device *pdev,
>+ u8 init_id)
>+{
>+ int i;
>+ struct omap_device *od;
>+
>+ od = _find_by_pdev(pdev);
>+
>+ if (od->_state != OMAP_DEVICE_STATE_ENABLED)
>+ return -EINVAL;
>+
>+ for (i = 0; i < od->hwmods_cnt; i++)
>+ omap_hwmod_add_initiator_user(od->hwmods[i], init_id);
Not checking for return value.
>+
>+ return 0;
>+}
>+
>+inline int omap_device_add_mpu_user(struct platform_device *pdev)
>+{
>+ return omap_device_add_initiator_user(pdev, OMAP_INIT_MPU);
>+}
>+
>+inline int omap_device_add_iva_user(struct platform_device *pdev)
>+{
>+ return omap_device_add_initiator_user(pdev, OMAP_INIT_IVA);
Ditto..
>+}
>+
>+static int omap_device_del_initiator_user(struct
>platform_device *pdev,
>+ u8 init_id)
>+{
>+ int i;
>+ struct omap_device *od;
>+
>+ od = _find_by_pdev(pdev);
>+
>+ if (od->_state == OMAP_DEVICE_STATE_ENABLED)
>+ return -EINVAL;
>+
>+ for (i = 0; i < od->hwmods_cnt; i++)
>+ omap_hwmod_del_initiator_user(od->hwmods[i], init_id);
>+
>+ return 0;
>+}
>+
>+inline int omap_device_del_mpu_user(struct platform_device *pdev)
>+{
>+ return omap_device_del_initiator_user(pdev, OMAP_INIT_MPU);
>+}
>+
>+inline int omap_device_del_iva_user(struct platform_device *pdev)
>+{
>+ return omap_device_del_initiator_user(pdev, OMAP_INIT_IVA);
>+}
>+
> /**
> * omap_device_align_pm_lat - activate/deactivate device to
>match wakeup lat lim
> * @od: struct omap_device *
>--
>1.7.0.4
>
>--
>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
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod
2011-03-21 13:08 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Hema Kalliguddi
@ 2011-03-22 8:28 ` Rajendra Nayak
2011-03-22 8:31 ` Hema Kalliguddi
0 siblings, 1 reply; 10+ messages in thread
From: Rajendra Nayak @ 2011-03-22 8:28 UTC (permalink / raw)
To: Hema Kalliguddi; +Cc: linux-omap, paul, Benoit Cousson
On 3/21/2011 6:38 PM, Hema Kalliguddi wrote:
> Rajendra,
>
>> -----Original Message-----
>> From: linux-omap-owner@vger.kernel.org
>> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Rajendra Nayak
>> Sent: Monday, March 21, 2011 4:40 PM
>> To: linux-omap@vger.kernel.org
>> Cc: paul@pwsan.com; b-cousson@ti.com; Rajendra Nayak
>> Subject: [RFC 2/3] OMAP3: hwmod: Add support to associate an
>> initiator with a hwmod
>>
>> Add hwmod api's to add and delete an initiator
>> association with an hwmod.
>>
>> Signed-off-by: Rajendra Nayak<rnayak@ti.com>
>> ---
>> arch/arm/mach-omap2/omap_hwmod.c | 33
>> ++++++++++++++++++++++++++
>> arch/arm/plat-omap/include/plat/omap_hwmod.h | 2 +
>> 2 files changed, 35 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/omap_hwmod.c
>> b/arch/arm/mach-omap2/omap_hwmod.c
>> index e034294..d4826be 100644
>> --- a/arch/arm/mach-omap2/omap_hwmod.c
>> +++ b/arch/arm/mach-omap2/omap_hwmod.c
>> @@ -2369,3 +2369,36 @@ int omap_hwmod_no_setup_reset(struct
>> omap_hwmod *oh)
>>
>> return 0;
>> }
>> +
>> +int omap_hwmod_add_initiator_user(struct omap_hwmod *oh, u8 init_id)
>> +{
>> + if (oh->_state != _HWMOD_STATE_ENABLED)
>> + return -EINVAL;
>> +
>> + if (cpu_is_omap34xx()) {
>> + return omap2_prm_module_enable_initiator_wakeup(
>> +
>> oh->prcm.omap2.module_offs,
>> +
>> oh->prcm.omap2.idlest_reg_id,
>> +
>> oh->prcm.omap2.idlest_idle_bit,
>> + init_id);
>> + }
>> +
>> + return -EINVAL;
>
> Why are you returning error when it not a omap34xx?
> Is it not that this API will be called for only omap34xx?
No, this API could get called as part of a driver call
to the omap_device API on non-supported platform's as well.
>
>> +}
>> +
>> +int omap_hwmod_del_initiator_user(struct omap_hwmod *oh, u8 init_id)
>> +{
>> + if (oh->_state == _HWMOD_STATE_ENABLED)
>> + return -EINVAL;
>> +
>> + if (cpu_is_omap34xx()) {
>> + return omap2_prm_module_disable_initiator_wakeup(
>> +
>> oh->prcm.omap2.module_offs,
>> +
>> oh->prcm.omap2.idlest_reg_id,
>> +
>> oh->prcm.omap2.idlest_idle_bit,
>> + init_id);
>> + }
>> +
>> + return -EINVAL;
>
> Ditto...
>
>> +
>> +}
>> diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>> b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>> index 4bd7354..fe47448 100644
>> --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>> +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>> @@ -590,6 +590,8 @@ int omap_hwmod_add_initiator_dep(struct
>> omap_hwmod *oh,
>> struct omap_hwmod *init_oh);
>> int omap_hwmod_del_initiator_dep(struct omap_hwmod *oh,
>> struct omap_hwmod *init_oh);
>> +int omap_hwmod_add_initiator_user(struct omap_hwmod *oh, u8 init_id);
>> +int omap_hwmod_del_initiator_user(struct omap_hwmod *oh, u8 init_id);
>>
>> int omap_hwmod_set_clockact_both(struct omap_hwmod *oh);
>> int omap_hwmod_set_clockact_main(struct omap_hwmod *oh);
>> --
>
>
> Regards,
> Hema
>
>> 1.7.0.4
>>
>> --
>> 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
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator
2011-03-21 13:12 ` Hema Kalliguddi
@ 2011-03-22 8:28 ` Rajendra Nayak
0 siblings, 0 replies; 10+ messages in thread
From: Rajendra Nayak @ 2011-03-22 8:28 UTC (permalink / raw)
To: Hema Kalliguddi; +Cc: linux-omap, paul, Benoit Cousson
On 3/21/2011 6:42 PM, Hema Kalliguddi wrote:
> Rajendra,
>
>> -----Original Message-----
>> From: linux-omap-owner@vger.kernel.org
>> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Rajendra Nayak
>> Sent: Monday, March 21, 2011 4:40 PM
>> To: linux-omap@vger.kernel.org
>> Cc: paul@pwsan.com; b-cousson@ti.com; Rajendra Nayak
>> Subject: [RFC 3/3] OMAP3: omap_device: Add support to
>> associate a device with an initiator
>>
>> These api's are meant to to used by drivers to
>> associate/disassociate a device from a given initiator.
>>
>> Signed-off-by: Rajendra Nayak<rnayak@ti.com>
>> ---
>> arch/arm/plat-omap/omap_device.c | 54
>> ++++++++++++++++++++++++++++++++++++++
>> 1 files changed, 54 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/plat-omap/omap_device.c
>> b/arch/arm/plat-omap/omap_device.c
>> index 9bbda9a..0cd05d2 100644
>> --- a/arch/arm/plat-omap/omap_device.c
>> +++ b/arch/arm/plat-omap/omap_device.c
>> @@ -662,6 +662,60 @@ int omap_device_shutdown(struct
>> platform_device *pdev)
>> return ret;
>> }
>>
>> +static int omap_device_add_initiator_user(struct
>> platform_device *pdev,
>> + u8 init_id)
>> +{
>> + int i;
>> + struct omap_device *od;
>> +
>> + od = _find_by_pdev(pdev);
>> +
>> + if (od->_state != OMAP_DEVICE_STATE_ENABLED)
>> + return -EINVAL;
>> +
>> + for (i = 0; i< od->hwmods_cnt; i++)
>> + omap_hwmod_add_initiator_user(od->hwmods[i], init_id);
>
> Not checking for return value.
Thanks, will fix that.
>
>> +
>> + return 0;
>> +}
>> +
>> +inline int omap_device_add_mpu_user(struct platform_device *pdev)
>> +{
>> + return omap_device_add_initiator_user(pdev, OMAP_INIT_MPU);
>> +}
>> +
>> +inline int omap_device_add_iva_user(struct platform_device *pdev)
>> +{
>> + return omap_device_add_initiator_user(pdev, OMAP_INIT_IVA);
>
> Ditto..
>
>> +}
>> +
>> +static int omap_device_del_initiator_user(struct
>> platform_device *pdev,
>> + u8 init_id)
>> +{
>> + int i;
>> + struct omap_device *od;
>> +
>> + od = _find_by_pdev(pdev);
>> +
>> + if (od->_state == OMAP_DEVICE_STATE_ENABLED)
>> + return -EINVAL;
>> +
>> + for (i = 0; i< od->hwmods_cnt; i++)
>> + omap_hwmod_del_initiator_user(od->hwmods[i], init_id);
>> +
>> + return 0;
>> +}
>> +
>> +inline int omap_device_del_mpu_user(struct platform_device *pdev)
>> +{
>> + return omap_device_del_initiator_user(pdev, OMAP_INIT_MPU);
>> +}
>> +
>> +inline int omap_device_del_iva_user(struct platform_device *pdev)
>> +{
>> + return omap_device_del_initiator_user(pdev, OMAP_INIT_IVA);
>> +}
>> +
>> /**
>> * omap_device_align_pm_lat - activate/deactivate device to
>> match wakeup lat lim
>> * @od: struct omap_device *
>> --
>> 1.7.0.4
>>
>> --
>> 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
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod
2011-03-22 8:28 ` Rajendra Nayak
@ 2011-03-22 8:31 ` Hema Kalliguddi
0 siblings, 0 replies; 10+ messages in thread
From: Hema Kalliguddi @ 2011-03-22 8:31 UTC (permalink / raw)
To: Rajendra Nayak; +Cc: linux-omap, paul, Benoit Cousson
>-----Original Message-----
>From: Rajendra Nayak [mailto:rnayak@ti.com]
>Sent: Tuesday, March 22, 2011 1:58 PM
>To: Hema Kalliguddi
>Cc: linux-omap@vger.kernel.org; paul@pwsan.com; Benoit Cousson
>Subject: Re: [RFC 2/3] OMAP3: hwmod: Add support to associate
>an initiator with a hwmod
>
>On 3/21/2011 6:38 PM, Hema Kalliguddi wrote:
>> Rajendra,
>>
>>> -----Original Message-----
>>> From: linux-omap-owner@vger.kernel.org
>>> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of
>Rajendra Nayak
>>> Sent: Monday, March 21, 2011 4:40 PM
>>> To: linux-omap@vger.kernel.org
>>> Cc: paul@pwsan.com; b-cousson@ti.com; Rajendra Nayak
>>> Subject: [RFC 2/3] OMAP3: hwmod: Add support to associate an
>>> initiator with a hwmod
>>>
>>> Add hwmod api's to add and delete an initiator
>>> association with an hwmod.
>>>
>>> Signed-off-by: Rajendra Nayak<rnayak@ti.com>
>>> ---
>>> arch/arm/mach-omap2/omap_hwmod.c | 33
>>> ++++++++++++++++++++++++++
>>> arch/arm/plat-omap/include/plat/omap_hwmod.h | 2 +
>>> 2 files changed, 35 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-omap2/omap_hwmod.c
>>> b/arch/arm/mach-omap2/omap_hwmod.c
>>> index e034294..d4826be 100644
>>> --- a/arch/arm/mach-omap2/omap_hwmod.c
>>> +++ b/arch/arm/mach-omap2/omap_hwmod.c
>>> @@ -2369,3 +2369,36 @@ int omap_hwmod_no_setup_reset(struct
>>> omap_hwmod *oh)
>>>
>>> return 0;
>>> }
>>> +
>>> +int omap_hwmod_add_initiator_user(struct omap_hwmod *oh,
>u8 init_id)
>>> +{
>>> + if (oh->_state != _HWMOD_STATE_ENABLED)
>>> + return -EINVAL;
>>> +
>>> + if (cpu_is_omap34xx()) {
>>> + return omap2_prm_module_enable_initiator_wakeup(
>>> +
>>> oh->prcm.omap2.module_offs,
>>> +
>>> oh->prcm.omap2.idlest_reg_id,
>>> +
>>> oh->prcm.omap2.idlest_idle_bit,
>>> + init_id);
>>> + }
>>> +
>>> + return -EINVAL;
>>
>> Why are you returning error when it not a omap34xx?
>> Is it not that this API will be called for only omap34xx?
>
>No, this API could get called as part of a driver call
>to the omap_device API on non-supported platform's as well.
OK.
>
>>
>>> +}
>>> +
>>> +int omap_hwmod_del_initiator_user(struct omap_hwmod *oh,
>u8 init_id)
>>> +{
>>> + if (oh->_state == _HWMOD_STATE_ENABLED)
>>> + return -EINVAL;
>>> +
>>> + if (cpu_is_omap34xx()) {
>>> + return omap2_prm_module_disable_initiator_wakeup(
>>> +
>>> oh->prcm.omap2.module_offs,
>>> +
>>> oh->prcm.omap2.idlest_reg_id,
>>> +
>>> oh->prcm.omap2.idlest_idle_bit,
>>> + init_id);
>>> + }
>>> +
>>> + return -EINVAL;
>>
>> Ditto...
>>
>>> +
>>> +}
>>> diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>>> b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>>> index 4bd7354..fe47448 100644
>>> --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
>>> +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
>>> @@ -590,6 +590,8 @@ int omap_hwmod_add_initiator_dep(struct
>>> omap_hwmod *oh,
>>> struct omap_hwmod *init_oh);
>>> int omap_hwmod_del_initiator_dep(struct omap_hwmod *oh,
>>> struct omap_hwmod *init_oh);
>>> +int omap_hwmod_add_initiator_user(struct omap_hwmod *oh,
>u8 init_id);
>>> +int omap_hwmod_del_initiator_user(struct omap_hwmod *oh,
>u8 init_id);
>>>
>>> int omap_hwmod_set_clockact_both(struct omap_hwmod *oh);
>>> int omap_hwmod_set_clockact_main(struct omap_hwmod *oh);
>>> --
>>
>>
>> Regards,
>> Hema
>>
>>> 1.7.0.4
>>>
>>> --
>>> 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
>>>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-03-22 8:31 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-21 11:10 [RFC 0/3] OMAP3: Support processor group selection by a peripheral Rajendra Nayak
2011-03-21 11:10 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Rajendra Nayak
2011-03-21 11:10 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Rajendra Nayak
2011-03-21 11:10 ` [RFC 3/3] OMAP3: omap_device: Add support to associate a device with an initiator Rajendra Nayak
2011-03-21 13:12 ` Hema Kalliguddi
2011-03-22 8:28 ` Rajendra Nayak
2011-03-21 13:08 ` [RFC 2/3] OMAP3: hwmod: Add support to associate an initiator with a hwmod Hema Kalliguddi
2011-03-22 8:28 ` Rajendra Nayak
2011-03-22 8:31 ` Hema Kalliguddi
2011-03-21 13:08 ` [RFC 1/3] OMAP3: PRM: Add grpsel programming support Hema Kalliguddi
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).