Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 048a7034 authored by Kevin Hilman's avatar Kevin Hilman
Browse files

OMAP2+: powerdomain: add voltage domain lookup during register



When a powerdomain is registered, lookup the voltage domain by name
and keep a pointer to the containing voltagedomain in the powerdomain
structure.

Modeled after similar method between powerdomain and clockdomain layers.

Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent 7e1b9405
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -77,6 +77,7 @@ static struct powerdomain *_pwrdm_lookup(const char *name)
static int _pwrdm_register(struct powerdomain *pwrdm)
static int _pwrdm_register(struct powerdomain *pwrdm)
{
{
	int i;
	int i;
	struct voltagedomain *voltdm;


	if (!pwrdm || !pwrdm->name)
	if (!pwrdm || !pwrdm->name)
		return -EINVAL;
		return -EINVAL;
@@ -91,6 +92,14 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
	if (_pwrdm_lookup(pwrdm->name))
	if (_pwrdm_lookup(pwrdm->name))
		return -EEXIST;
		return -EEXIST;


	voltdm = voltdm_lookup(pwrdm->voltdm.name);
	if (!voltdm) {
		pr_err("powerdomain: %s: voltagedomain %s does not exist\n",
		       pwrdm->name, pwrdm->voltdm.name);
		return -EINVAL;
	}
	pwrdm->voltdm.ptr = voltdm;

	list_add(&pwrdm->node, &pwrdm_list);
	list_add(&pwrdm->node, &pwrdm_list);


	/* Initialize the powerdomain's state counter */
	/* Initialize the powerdomain's state counter */
@@ -426,6 +435,18 @@ int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
	return ret;
	return ret;
}
}


/**
 * pwrdm_get_voltdm - return a ptr to the voltdm that this pwrdm resides in
 * @pwrdm: struct powerdomain *
 *
 * Return a pointer to the struct voltageomain that the specified powerdomain
 * @pwrdm exists in.
 */
struct voltagedomain *pwrdm_get_voltdm(struct powerdomain *pwrdm)
{
	return pwrdm->voltdm.ptr;
}

/**
/**
 * pwrdm_get_mem_bank_count - get number of memory banks in this powerdomain
 * pwrdm_get_mem_bank_count - get number of memory banks in this powerdomain
 * @pwrdm: struct powerdomain *
 * @pwrdm: struct powerdomain *
+1 −0
Original line number Original line Diff line number Diff line
@@ -183,6 +183,7 @@ int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm);
int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
			 int (*fn)(struct powerdomain *pwrdm,
			 int (*fn)(struct powerdomain *pwrdm,
				   struct clockdomain *clkdm));
				   struct clockdomain *clkdm));
struct voltagedomain *pwrdm_get_voltdm(struct powerdomain *pwrdm);


int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm);
int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm);


+1 −0
Original line number Original line Diff line number Diff line
@@ -186,4 +186,5 @@ extern void omap44xx_voltagedomains_init(void);


struct voltagedomain *voltdm_lookup(const char *name);
struct voltagedomain *voltdm_lookup(const char *name);
void voltdm_init(struct voltagedomain **voltdm_list);
void voltdm_init(struct voltagedomain **voltdm_list);
int voltdm_add_pwrdm(struct voltagedomain *voltdm, struct powerdomain *pwrdm);
#endif
#endif