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