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

Commit 299066bb authored by Andrii Tseglytskyi's avatar Andrii Tseglytskyi Committed by Kevin Hilman
Browse files

PM / AVS: SmartReflex: use omap_sr * for enable/disable interface



SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_enable() and sr_disable() are interface functions between
SR driver and SR class. They are typically used by Class driver
to enable/disable SmartReflex hardware module.
Now they take struct omap_sr* as input parameter.

Signed-off-by: default avatarAndrii Tseglytskyi <andrii.tseglytskyi@ti.com>
Acked-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@linaro.org>
parent 6c805734
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -26,14 +26,14 @@ static int sr_class3_enable(struct omap_sr *sr)
	}

	omap_vp_enable(sr->voltdm);
	return sr_enable(sr->voltdm, volt);
	return sr_enable(sr, volt);
}

static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset)
{
	sr_disable_errgen(sr);
	omap_vp_disable(sr->voltdm);
	sr_disable(sr->voltdm);
	sr_disable(sr);
	if (is_volt_reset)
		voltdm_reset(sr->voltdm);

+11 −12
Original line number Diff line number Diff line
@@ -552,7 +552,7 @@ int sr_configure_minmax(struct omap_sr *sr)

/**
 * sr_enable() - Enables the smartreflex module.
 * @voltdm:	VDD pointer to which the SR module to be configured belongs to.
 * @sr:		pointer to which the SR module to be configured belongs to.
 * @volt:	The voltage at which the Voltage domain associated with
 *		the smartreflex module is operating at.
 *		This is required only to program the correct Ntarget value.
@@ -561,16 +561,16 @@ int sr_configure_minmax(struct omap_sr *sr)
 * enable a smartreflex module. Returns 0 on success. Returns error
 * value if the voltage passed is wrong or if ntarget value is wrong.
 */
int sr_enable(struct voltagedomain *voltdm, unsigned long volt)
int sr_enable(struct omap_sr *sr, unsigned long volt)
{
	struct omap_volt_data *volt_data;
	struct omap_sr *sr = _sr_lookup(voltdm);
	struct omap_sr_nvalue_table *nvalue_row;
	int ret;

	if (IS_ERR(sr)) {
		pr_warning("%s: omap_sr struct for voltdm not found\n",	__func__);
		return PTR_ERR(sr);
	if (!sr) {
		pr_warn("%s: NULL omap_sr from %pF\n", __func__,
			(void *)_RET_IP_);
		return -EINVAL;
	}

	volt_data = omap_voltage_get_voltdata(sr->voltdm, volt);
@@ -612,17 +612,16 @@ int sr_enable(struct voltagedomain *voltdm, unsigned long volt)

/**
 * sr_disable() - Disables the smartreflex module.
 * @voltdm:	VDD pointer to which the SR module to be configured belongs to.
 * @sr:		pointer to which the SR module to be configured belongs to.
 *
 * This API is to be called from the smartreflex class driver to
 * disable a smartreflex module.
 */
void sr_disable(struct voltagedomain *voltdm)
void sr_disable(struct omap_sr *sr)
{
	struct omap_sr *sr = _sr_lookup(voltdm);

	if (IS_ERR(sr)) {
		pr_warning("%s: omap_sr struct for voltdm not found\n",	__func__);
	if (!sr) {
		pr_warn("%s: NULL omap_sr from %pF\n", __func__,
			(void *)_RET_IP_);
		return;
	}

+2 −2
Original line number Diff line number Diff line
@@ -299,8 +299,8 @@ void omap_sr_disable_reset_volt(struct voltagedomain *voltdm);
void omap_sr_register_pmic(struct omap_sr_pmic_data *pmic_data);

/* Smartreflex driver hooks to be called from Smartreflex class driver */
int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
void sr_disable(struct voltagedomain *voltdm);
int sr_enable(struct omap_sr *sr, unsigned long volt);
void sr_disable(struct omap_sr *sr);
int sr_configure_errgen(struct omap_sr *sr);
int sr_disable_errgen(struct omap_sr *sr);
int sr_configure_minmax(struct omap_sr *sr);