mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 04:10:51 +07:00
PM / AVS: SmartReflex: use omap_sr * for errgen interfaces
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_disable_errgen() and sr_configure_errgen() are interface functions between SR driver and SR class. They are typically used by Class driver to configure error generator module during SmartReflex enable/disable sequence. Now they take struct omap_sr* as input parameter. Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@ti.com> Acked-by: Nishanth Menon <nm@ti.com> Signed-off-by: Kevin Hilman <khilman@linaro.org>
This commit is contained in:
parent
33da28246f
commit
3dfc35ffd9
@ -31,7 +31,7 @@ static int sr_class3_enable(struct omap_sr *sr)
|
|||||||
|
|
||||||
static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset)
|
static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset)
|
||||||
{
|
{
|
||||||
sr_disable_errgen(sr->voltdm);
|
sr_disable_errgen(sr);
|
||||||
omap_vp_disable(sr->voltdm);
|
omap_vp_disable(sr->voltdm);
|
||||||
sr_disable(sr->voltdm);
|
sr_disable(sr->voltdm);
|
||||||
if (is_volt_reset)
|
if (is_volt_reset)
|
||||||
@ -42,7 +42,7 @@ static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset)
|
|||||||
|
|
||||||
static int sr_class3_configure(struct omap_sr *sr)
|
static int sr_class3_configure(struct omap_sr *sr)
|
||||||
{
|
{
|
||||||
return sr_configure_errgen(sr->voltdm);
|
return sr_configure_errgen(sr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SR class3 structure */
|
/* SR class3 structure */
|
||||||
|
@ -342,9 +342,9 @@ static struct omap_sr_nvalue_table *sr_retrieve_nvalue_row(
|
|||||||
/* Public Functions */
|
/* Public Functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sr_configure_errgen() - Configures the smrtreflex to perform AVS using the
|
* sr_configure_errgen() - Configures the SmartReflex to perform AVS using the
|
||||||
* error generator module.
|
* error generator module.
|
||||||
* @voltdm: VDD pointer to which the SR module to be configured belongs to.
|
* @sr: SR module to be configured.
|
||||||
*
|
*
|
||||||
* This API is to be called from the smartreflex class driver to
|
* This API is to be called from the smartreflex class driver to
|
||||||
* configure the error generator module inside the smartreflex module.
|
* configure the error generator module inside the smartreflex module.
|
||||||
@ -353,17 +353,17 @@ static struct omap_sr_nvalue_table *sr_retrieve_nvalue_row(
|
|||||||
* SR CLASS 2 can choose between ERROR module and MINMAXAVG
|
* SR CLASS 2 can choose between ERROR module and MINMAXAVG
|
||||||
* module. Returns 0 on success and error value in case of failure.
|
* module. Returns 0 on success and error value in case of failure.
|
||||||
*/
|
*/
|
||||||
int sr_configure_errgen(struct voltagedomain *voltdm)
|
int sr_configure_errgen(struct omap_sr *sr)
|
||||||
{
|
{
|
||||||
u32 sr_config, sr_errconfig, errconfig_offs;
|
u32 sr_config, sr_errconfig, errconfig_offs;
|
||||||
u32 vpboundint_en, vpboundint_st;
|
u32 vpboundint_en, vpboundint_st;
|
||||||
u32 senp_en = 0, senn_en = 0;
|
u32 senp_en = 0, senn_en = 0;
|
||||||
u8 senp_shift, senn_shift;
|
u8 senp_shift, senn_shift;
|
||||||
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
||||||
|
|
||||||
if (IS_ERR(sr)) {
|
if (!sr) {
|
||||||
pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
pr_warn("%s: NULL omap_sr from %pF\n", __func__,
|
||||||
return PTR_ERR(sr);
|
(void *)_RET_IP_);
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sr->clk_length)
|
if (!sr->clk_length)
|
||||||
@ -415,22 +415,22 @@ int sr_configure_errgen(struct voltagedomain *voltdm)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* sr_disable_errgen() - Disables SmartReflex AVS module's errgen component
|
* sr_disable_errgen() - Disables SmartReflex AVS module's errgen component
|
||||||
* @voltdm: VDD pointer to which the SR module to be configured belongs to.
|
* @sr: SR module to be configured.
|
||||||
*
|
*
|
||||||
* This API is to be called from the smartreflex class driver to
|
* This API is to be called from the smartreflex class driver to
|
||||||
* disable the error generator module inside the smartreflex module.
|
* disable the error generator module inside the smartreflex module.
|
||||||
*
|
*
|
||||||
* Returns 0 on success and error value in case of failure.
|
* Returns 0 on success and error value in case of failure.
|
||||||
*/
|
*/
|
||||||
int sr_disable_errgen(struct voltagedomain *voltdm)
|
int sr_disable_errgen(struct omap_sr *sr)
|
||||||
{
|
{
|
||||||
u32 errconfig_offs;
|
u32 errconfig_offs;
|
||||||
u32 vpboundint_en, vpboundint_st;
|
u32 vpboundint_en, vpboundint_st;
|
||||||
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
||||||
|
|
||||||
if (IS_ERR(sr)) {
|
if (!sr) {
|
||||||
pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
pr_warn("%s: NULL omap_sr from %pF\n", __func__,
|
||||||
return PTR_ERR(sr);
|
(void *)_RET_IP_);
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (sr->ip_type) {
|
switch (sr->ip_type) {
|
||||||
|
@ -301,8 +301,8 @@ void omap_sr_register_pmic(struct omap_sr_pmic_data *pmic_data);
|
|||||||
/* Smartreflex driver hooks to be called from Smartreflex class driver */
|
/* Smartreflex driver hooks to be called from Smartreflex class driver */
|
||||||
int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
|
int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
|
||||||
void sr_disable(struct voltagedomain *voltdm);
|
void sr_disable(struct voltagedomain *voltdm);
|
||||||
int sr_configure_errgen(struct voltagedomain *voltdm);
|
int sr_configure_errgen(struct omap_sr *sr);
|
||||||
int sr_disable_errgen(struct voltagedomain *voltdm);
|
int sr_disable_errgen(struct omap_sr *sr);
|
||||||
int sr_configure_minmax(struct voltagedomain *voltdm);
|
int sr_configure_minmax(struct voltagedomain *voltdm);
|
||||||
|
|
||||||
/* API to register the smartreflex class driver with the smartreflex driver */
|
/* API to register the smartreflex class driver with the smartreflex driver */
|
||||||
|
Loading…
Reference in New Issue
Block a user