[PATCH 10/12] OMAP OPP: remove "initial terminators" from OPP lists

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Now that the SRF and Smartreflex code uses accessor functions to interact
with OPPs, the "initial terminators" can be removed.
---
 arch/arm/plat-omap/opp.c |   36 ++++++++----------------------------
 1 files changed, 8 insertions(+), 28 deletions(-)

diff --git a/arch/arm/plat-omap/opp.c b/arch/arm/plat-omap/opp.c
index 596e3ee..f651912 100644
--- a/arch/arm/plat-omap/opp.c
+++ b/arch/arm/plat-omap/opp.c
@@ -53,15 +53,15 @@ unsigned long opp_get_freq(const struct omap_opp *opp)
 struct omap_opp * __deprecated opp_find_by_opp_id(struct omap_opp *opps,
 						  u8 opp_id)
 {
-	int i = 1;
+	int i = 0;
 
 	if (!opps || !opp_id)
 		return NULL;
 
-	/* The first entry is a dummy one, loop till we hit terminator */
 	while (!OPP_TERM(&opps[i])) {
 		if (opps[i].enabled && (opps[i].opp_id == opp_id))
 			return &opps[i];
+
 		i++;
 	}
 
@@ -76,7 +76,6 @@ int opp_get_opp_count(struct omap_opp *oppl)
 		pr_err("%s: Invalid parameters being passed\n", __func__);
 		return -EINVAL;
 	}
-	oppl++;			/* skip initial terminator */
 	while (!OPP_TERM(oppl)) {
 		if (oppl->enabled)
 			n++;
@@ -92,9 +91,7 @@ struct omap_opp *opp_find_freq_exact(struct omap_opp *oppl,
 		pr_err("%s: Invalid parameters being passed\n", __func__);
 		return ERR_PTR(-EINVAL);
 	}
-	/* skip initial terminator */
-	if (OPP_TERM(oppl))
-		oppl++;
+
 	while (!OPP_TERM(oppl)) {
 		if ((oppl->rate == freq) && (oppl->enabled == enabled))
 			break;
@@ -111,10 +108,6 @@ struct omap_opp *opp_find_freq_ceil(struct omap_opp *oppl, unsigned long *freq)
 		return ERR_PTR(-EINVAL);
 	}
 
-	/* skip initial terminator */
-	if (OPP_TERM(oppl))
-		oppl++;
-
 	while (!OPP_TERM(oppl)) {
 		if (oppl->enabled && oppl->rate >= *freq)
 			break;
@@ -139,10 +132,6 @@ struct omap_opp *opp_find_freq_floor(struct omap_opp *oppl, unsigned long *freq)
 		return ERR_PTR(-EINVAL);
 	}
 
-	/* skip initial terminator */
-	if (OPP_TERM(oppl))
-		oppl++;
-
 	while (!OPP_TERM(oppl)) {
 		if (oppl->enabled) {
 			if (oppl->rate > *freq)
@@ -181,20 +170,16 @@ struct omap_opp *opp_add(struct omap_opp *oppl,
 		pr_err("%s: Invalid params being passed\n", __func__);
 		return ERR_PTR(-EINVAL);
 	}
-	/* need a start terminator.. */
-	if (unlikely(!OPP_TERM(oppl))) {
-		pr_err("%s: Expected a start terminator!!\n", __func__);
-		return ERR_PTR(-EINVAL);
-	}
+
 	n = 0;
 	opp = oppl;
-	opp++;
 	while (!OPP_TERM(opp)) {
 		n++;
 		opp++;
 	}
+
 	/* lets now reallocate memory */
-	oppr = kmalloc(sizeof(struct omap_opp) * (n + 3), GFP_KERNEL);
+	oppr = kmalloc(sizeof(struct omap_opp) * (n + 2), GFP_KERNEL);
 	if (!oppr) {
 		pr_err("%s: No memory for new opp array\n", __func__);
 		return ERR_PTR(-ENOMEM);
@@ -204,7 +189,7 @@ struct omap_opp *opp_add(struct omap_opp *oppl,
 	opp = oppl;
 	oppt = oppr;
 	ins = 0;
-	i = 0;
+	i = 1;
 	do {
 		if (ins || opp->rate < opp_def->freq) {
 			memcpy(oppt, opp, sizeof(struct omap_opp));
@@ -249,17 +234,12 @@ struct omap_opp __init *opp_init_list(const struct omap_opp_def *opp_defs)
 		t++;
 	}
 
-	oppl = kmalloc(sizeof(struct omap_opp) * (n + 2), GFP_KERNEL);
+	oppl = kmalloc(sizeof(struct omap_opp) * (n + 1), GFP_KERNEL);
 	if (!oppl) {
 		pr_err("%s: No memory for opp array\n", __func__);
 		return ERR_PTR(-ENOMEM);
 	}
 	opp = oppl;
-	/* Setup start terminator - SRF depends on this for indexing :( */
-	opp->rate = 0;
-	opp->enabled = 0;
-	opp->u_volt = 0;
-	opp++;
 	while (n) {
 		omap_opp_populate(opp, opp_defs);
 		opp->opp_id = i;


--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux