History

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.

Andrii Tseglytskyi committed 13 years ago

Commit 3dfc35f1 parent 33da2823 files · +17 −17Browse files

Unified · Split

3 files
  1. arch/arm/mach-omap2/smartreflex-class3.c +2 −2
  2. drivers/power/avs/smartreflex.c +13 −13
  3. include/linux/power/smartreflex.h +2 −2
arch/arm/mach-omap2/smartreflex-class3.c+2−2
@@ -31,7 +31,7 @@ static int sr_class3_enable(struct omap_sr *sr) · 30 unmodified lines
31 31
32static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset)32static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset)
33{33{
34 sr_disable_errgen(sr->voltdm);34 sr_disable_errgen(sr);
35 omap_vp_disable(sr->voltdm);35 omap_vp_disable(sr->voltdm);
36 sr_disable(sr->voltdm);36 sr_disable(sr->voltdm);
37 if (is_volt_reset)37 if (is_volt_reset)
@@ -42,7 +42,7 @@ static int sr_class3_disable(struct omap_sr *sr, int is_volt_reset) · 4 unmodified lines
42 42
43static int sr_class3_configure(struct omap_sr *sr)43static int sr_class3_configure(struct omap_sr *sr)
44{44{
45 return sr_configure_errgen(sr->voltdm);45 return sr_configure_errgen(sr);
46}46}
47 47
48/* SR class3 structure */48/* SR class3 structure */
drivers/power/avs/smartreflex.c+13−13
@@ -342,9 +342,9 @@ static struct omap_sr_nvalue_table *sr_retrieve_nvalue_row( · 341 unmodified lines
342/* Public Functions */342/* Public Functions */
343 343
344/**344/**
345 * sr_configure_errgen() - Configures the smrtreflex to perform AVS using the345 * sr_configure_errgen() - Configures the SmartReflex to perform AVS using the
346 * error generator module.346 * error generator module.
347 * @voltdm: VDD pointer to which the SR module to be configured belongs to.347 * @sr: SR module to be configured.
348 *348 *
349 * This API is to be called from the smartreflex class driver to349 * This API is to be called from the smartreflex class driver to
350 * configure the error generator module inside the smartreflex module.350 * configure the error generator module inside the smartreflex module.
@@ -353,17 +353,17 @@ static struct omap_sr_nvalue_table *sr_retrieve_nvalue_row( · 2 unmodified lines
353 * SR CLASS 2 can choose between ERROR module and MINMAXAVG353 * SR CLASS 2 can choose between ERROR module and MINMAXAVG
354 * module. Returns 0 on success and error value in case of failure.354 * module. Returns 0 on success and error value in case of failure.
355 */355 */
356int sr_configure_errgen(struct voltagedomain *voltdm)356int sr_configure_errgen(struct omap_sr *sr)
357{357{
358 u32 sr_config, sr_errconfig, errconfig_offs;358 u32 sr_config, sr_errconfig, errconfig_offs;
359 u32 vpboundint_en, vpboundint_st;359 u32 vpboundint_en, vpboundint_st;
360 u32 senp_en = 0, senn_en = 0;360 u32 senp_en = 0, senn_en = 0;
361 u8 senp_shift, senn_shift;361 u8 senp_shift, senn_shift;
362 struct omap_sr *sr = _sr_lookup(voltdm);
363 362
364 if (IS_ERR(sr)) {363 if (!sr) {
365 pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);364 pr_warn("%s: NULL omap_sr from %pF\n", __func__,
366 return PTR_ERR(sr);365 (void *)_RET_IP_);
366 return -EINVAL;
367 }367 }
368 368
369 if (!sr->clk_length)369 if (!sr->clk_length)
@@ -415,22 +415,22 @@ int sr_configure_errgen(struct voltagedomain *voltdm) · 45 unmodified lines
415 415
416/**416/**
417 * sr_disable_errgen() - Disables SmartReflex AVS module's errgen component417 * sr_disable_errgen() - Disables SmartReflex AVS module's errgen component
418 * @voltdm: VDD pointer to which the SR module to be configured belongs to.418 * @sr: SR module to be configured.
419 *419 *
420 * This API is to be called from the smartreflex class driver to420 * This API is to be called from the smartreflex class driver to
421 * disable the error generator module inside the smartreflex module.421 * disable the error generator module inside the smartreflex module.
422 *422 *
423 * Returns 0 on success and error value in case of failure.423 * Returns 0 on success and error value in case of failure.
424 */424 */
425int sr_disable_errgen(struct voltagedomain *voltdm)425int sr_disable_errgen(struct omap_sr *sr)
426{426{
427 u32 errconfig_offs;427 u32 errconfig_offs;
428 u32 vpboundint_en, vpboundint_st;428 u32 vpboundint_en, vpboundint_st;
429 struct omap_sr *sr = _sr_lookup(voltdm);
430 429
431 if (IS_ERR(sr)) {430 if (!sr) {
432 pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);431 pr_warn("%s: NULL omap_sr from %pF\n", __func__,
433 return PTR_ERR(sr);432 (void *)_RET_IP_);
433 return -EINVAL;
434 }434 }
435 435
436 switch (sr->ip_type) {436 switch (sr->ip_type) {
include/linux/power/smartreflex.h+2−2
@@ -301,8 +301,8 @@ void omap_sr_register_pmic(struct omap_sr_pmic_data *pmic_data); · 300 unmodified lines
301/* Smartreflex driver hooks to be called from Smartreflex class driver */301/* Smartreflex driver hooks to be called from Smartreflex class driver */
302int sr_enable(struct voltagedomain *voltdm, unsigned long volt);302int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
303void sr_disable(struct voltagedomain *voltdm);303void sr_disable(struct voltagedomain *voltdm);
304int sr_configure_errgen(struct voltagedomain *voltdm);304int sr_configure_errgen(struct omap_sr *sr);
305int sr_disable_errgen(struct voltagedomain *voltdm);305int sr_disable_errgen(struct omap_sr *sr);
306int sr_configure_minmax(struct voltagedomain *voltdm);306int sr_configure_minmax(struct voltagedomain *voltdm);
307 307
308/* API to register the smartreflex class driver with the smartreflex driver */308/* API to register the smartreflex class driver with the smartreflex driver */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t