void __init omap44xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ #ifdef CONFIG_PM_OPP if (cpu_is_omap443x()) { omap4_voltdm_mpu.volt_data = omap443x_vdd_mpu_volt_data; omap4_voltdm_iva.volt_data = omap443x_vdd_iva_volt_data; omap4_voltdm_core.volt_data = omap443x_vdd_core_volt_data; } else if (cpu_is_omap446x()) { omap4_voltdm_mpu.volt_data = omap446x_vdd_mpu_volt_data; omap4_voltdm_iva.volt_data = omap446x_vdd_iva_volt_data; omap4_voltdm_core.volt_data = omap446x_vdd_core_volt_data; } #endif omap4_voltdm_mpu.vp_param = &omap4_mpu_vp_data; omap4_voltdm_iva.vp_param = &omap4_iva_vp_data; omap4_voltdm_core.vp_param = &omap4_core_vp_data; omap4_voltdm_mpu.vc_param = &omap4_mpu_vc_data; omap4_voltdm_iva.vc_param = &omap4_iva_vc_data; omap4_voltdm_core.vc_param = &omap4_core_vc_data; for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap4); };
void __init omap3xxx_voltagedomains_init(void) { struct voltagedomain *voltdm; struct voltagedomain **voltdms; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ #ifdef CONFIG_PM_OPP if (cpu_is_omap3630()) { omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data; omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data; } else { omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data; omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data; } #endif omap3_voltdm_mpu.vp_param = &omap3_mpu_vp_data; omap3_voltdm_core.vp_param = &omap3_core_vp_data; omap3_voltdm_mpu.vc_param = &omap3_mpu_vc_data; omap3_voltdm_core.vc_param = &omap3_core_vc_data; if (soc_is_am35xx()) voltdms = voltagedomains_am35xx; else voltdms = voltagedomains_omap3; for (i = 0; voltdm = voltdms[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltdms); };
void __init omap3xxx_voltagedomains_init(void) { struct voltagedomain *voltdm; struct voltagedomain **voltdms; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ if (cpu_is_omap3630()) { omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data; omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data; } else { omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data; omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data; } if (cpu_is_omap3517() || cpu_is_omap3505()) voltdms = voltagedomains_am35xx; else voltdms = voltagedomains_omap3; for (i = 0; voltdm = voltdms[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltdms); };
/* ------------------------------------------------------------------------*//** * @FUNCTION voltdm_voltage_get * @BRIEF return the current voltage supplied to a voltage domain. * @RETURNS supplied voltage in micro-volt (> 0) in case of success * OMAPCONF_ERR_CPU * OMAPCONF_ERR_ARG * OMAPCONF_ERR_REG_ACCESS * OMAPCONF_ERR_NOT_AVAILABLE * OMAPCONF_ERR_INTERNAL * @param[in] voltdm: voltage domain name (as defined in voltdm.h) * @DESCRIPTION return the current voltage supplied to a voltage domain. *//*------------------------------------------------------------------------ */ int voltdm_voltage_get(const char *voltdm) { int id, ret; double volt; CHECK_NULL_ARG(voltdm, OMAPCONF_ERR_ARG); voltdm_init(); id = voltdm_s2id(voltdm); if (id < 0) return (double) OMAPCONF_ERR_ARG; if (cpu_is_omap44xx()) { ret = voltdm44xx_get_voltage((voltdm44xx_id) id, &volt); if (ret < 0) return (double) ret; else return v2uv(volt); } else if (cpu_is_omap54xx()) { return v2uv(voltdm54xx_voltage_get((voltdm54xx_id) id)); } else { fprintf(stderr, "omapconf: %s(): cpu not supported!!!\n", __func__); return (double) OMAPCONF_ERR_CPU; } }
/* ------------------------------------------------------------------------*//** * @FUNCTION voltdm_por_nominal_voltage_get * @BRIEF return the nominal voltage to be supplied to a * voltage domain, as defined in Data Manual. * @RETURNS nominal voltage in micro-volt (> 0) in case of success * OMAPCONF_ERR_CPU * OMAPCONF_ERR_ARG * @param[in] voltdm: voltage domain name (as defined in voltdm.h) * @param[in] opp: OPP provided as a string (as defined in opp.h) * @DESCRIPTION return the nominal voltage to be supplied to a * voltage domain, as defined in Data Manual. * Not read from the platform, but from internal tables. *//*------------------------------------------------------------------------ */ int voltdm_por_nominal_voltage_get(const char *voltdm, const char *opp) { int vdd_id, opp_id; CHECK_NULL_ARG(voltdm, OMAPCONF_ERR_ARG); voltdm_init(); vdd_id = voltdm_s2id(voltdm); if (vdd_id < 0) return OMAPCONF_ERR_ARG; opp_id = opp_s2id(opp); if (opp_id < 0) return opp_id; if (cpu_is_omap44xx()) { return v2uv(voltdm44xx_por_nominal_voltage_get( (voltdm44xx_id) vdd_id, (opp44xx_id) opp_id)); } else if (cpu_is_omap54xx()) { return v2uv(voltdm54xx_por_nominal_voltage_get( (voltdm54xx_id) vdd_id, (opp54xx_id) opp_id)); } else { fprintf(stderr, "omapconf: %s(): cpu not supported!!!\n", __func__); return OMAPCONF_ERR_CPU; } }
/* ------------------------------------------------------------------------*//** * @FUNCTION voltdm_nominal_voltage_get * @BRIEF return the nominal voltage supplied to a voltage domain. * @RETURNS nominal voltage in micro-volt (> 0) in case of success * OMAPCONF_ERR_CPU * OMAPCONF_ERR_ARG * @param[in] voltdm: voltage domain name (as defined in voltdm.h) * @DESCRIPTION return the nominal voltage supplied to a voltage domain. * In case SmartReflex AVS Class3 is enabled, * it may differ from the current supplied voltage. *//*------------------------------------------------------------------------ */ int voltdm_nominal_voltage_get(const char *voltdm) { int id; int uvolt; CHECK_NULL_ARG(voltdm, OMAPCONF_ERR_ARG); voltdm_init(); id = voltdm_s2id(voltdm); if (id < 0) { uvolt = OMAPCONF_ERR_ARG; } else if (cpu_is_omap44xx()) { uvolt = v2uv(voltdm44xx_nominal_voltage_get( (voltdm44xx_id) id)); } else if (cpu_is_omap54xx()) { uvolt = v2uv(voltdm54xx_nominal_voltage_get( (voltdm54xx_id) id)); } else { fprintf(stderr, "omapconf: %s(): cpu not supported!!!\n", __func__); uvolt = OMAPCONF_ERR_CPU; } dprintf("%s(%s) = %duV\n", __func__, voltdm, uvolt); return uvolt; }
void __init omap54xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; for (i = 0; voltdm = voltagedomains_omap5[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap5); };
/* ------------------------------------------------------------------------*//** * @FUNCTION voltdm_list_get * @BRIEF return the list of voltage domain(s) * @RETURNS list of voltage domain(s) in case of success * NULL if not available * @DESCRIPTION return the number of voltage domain(s) *//*------------------------------------------------------------------------ */ const genlist *voltdm_list_get(void) { voltdm_init(); if (cpu_is_omap44xx() || cpu_is_omap54xx()) { return (const genlist *) &voltdm_list; } else { fprintf(stderr, "omapconf: %s(): cpu not supported!!!\n", __func__); return NULL; } }
void __init omap44xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; omap4_voltdm_mpu.vp->vlimits->vddmax = OMAP4460_VP_MPU_VLIMITTO_VDDMAX; omap4_voltdm_iva.vp->vlimits->vddmax = OMAP4460_VP_IVA_VLIMITTO_VDDMAX; omap4_voltdm_core.vp->vlimits->vddmax = OMAP4460_VP_CORE_VLIMITTO_VDDMAX; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ if (cpu_is_omap443x()) { struct setup_time_ramp_params *params = omap4_vc_core.common->setup_time_params; if (params) { params->pre_scaler_to_sysclk_cycles = pre_scaler_to_sysclk_cycles_443x; } omap4_vdd_mpu_info.volt_data = omap443x_vdd_mpu_volt_data; omap4_vdd_iva_info.volt_data = omap443x_vdd_iva_volt_data; omap4_vdd_core_info.volt_data = omap443x_vdd_core_volt_data; omap4_vdd_mpu_info.dep_vdd_info = omap443x_vddmpu_dep_info; omap4_vdd_iva_info.dep_vdd_info = omap443x_vddiva_dep_info; omap4_voltdm_mpu.vp->vlimits->vddmax = OMAP4430_VP_MPU_VLIMITTO_VDDMAX; omap4_voltdm_iva.vp->vlimits->vddmax = OMAP4430_VP_IVA_VLIMITTO_VDDMAX; omap4_voltdm_core.vp->vlimits->vddmax = OMAP4430_VP_CORE_VLIMITTO_VDDMAX; } else if (cpu_is_omap446x()) { omap4_vdd_mpu_info.volt_data = omap446x_vdd_mpu_volt_data; omap4_vdd_iva_info.volt_data = omap446x_vdd_iva_volt_data; omap4_vdd_core_info.volt_data = omap446x_vdd_core_volt_data; omap4_vdd_mpu_info.dep_vdd_info = omap446x_vddmpu_dep_info; omap4_vdd_iva_info.dep_vdd_info = omap446x_vddiva_dep_info; } else if (cpu_is_omap447x()) { omap4_vdd_mpu_info.volt_data = omap447x_vdd_mpu_volt_data; omap4_vdd_iva_info.volt_data = omap447x_vdd_iva_volt_data; omap4_vdd_core_info.volt_data = omap447x_vdd_core_volt_data; omap4_vdd_mpu_info.dep_vdd_info = omap447x_vddmpu_dep_info; omap4_vdd_iva_info.dep_vdd_info = omap447x_vddiva_dep_info; } else { return; } for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap4); };
void __init am33xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; am33xx_vdd1_info.dep_vdd_info = am33xx_vddmpu_dep_info; for (i = 0; voltdm = voltagedomains_am33xx[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_am33xx); }
void __init omap44xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ #ifdef CONFIG_PM_OPP omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data; omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data; omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data; #endif for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap4); };
void __init omap44xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data; omap4_vdd_mpu_info.dep_vdd_info = omap443x_vddmpu_dep_info; omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data; omap4_vdd_iva_info.dep_vdd_info = omap443x_vddiva_dep_info; omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data; for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap4); };
void __init omap3xxx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ if (cpu_is_omap3630()) { omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data; omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data; omap3_vdd1_info.dep_vdd_info = omap36xx_vddmpu_dep_info; } else { omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data; omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data; omap3_vdd1_info.dep_vdd_info = omap34xx_vddmpu_dep_info; } for (i = 0; voltdm = voltagedomains_omap3[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap3); };
/* ------------------------------------------------------------------------*//** * @FUNCTION voltdm_voltage_set * @BRIEF set the voltage supplied to a voltage domain. * @RETURNS 0 in case of success * OMAPCONF_ERR_CPU * OMAPCONF_ERR_ARG * OMAPCONF_ERR_REG_ACCESS * OMAPCONF_ERR_NOT_AVAILABLE * OMAPCONF_ERR_UNEXPECTED * OMAPCONF_ERR_INTERNAL * @param[in] voltdm: voltage domain name (as defined in voltdm.h) * @param[in] uv: new voltage to be set (in micro-volt) * @DESCRIPTION return the current voltage supplied to a voltage domain. *//*------------------------------------------------------------------------ */ int voltdm_voltage_set(const char *voltdm, int uv) { int id; CHECK_NULL_ARG(voltdm, OMAPCONF_ERR_ARG); voltdm_init(); id = voltdm_s2id(voltdm); if (id < 0) return (double) OMAPCONF_ERR_ARG; if (cpu_is_omap44xx()) { return sr44xx_voltage_set( (unsigned int) id, (unsigned long) uv); } else if (cpu_is_omap54xx()) { return voltdm54xx_voltage_set( (voltdm54xx_id) id, (unsigned long) uv); } else { fprintf(stderr, "omapconf: %s(): cpu not supported!!!\n", __func__); return OMAPCONF_ERR_CPU; } }
void __init omap54xx_voltagedomains_init(void) { struct voltagedomain *voltdm; int i; /* * XXX Will depend on the process, validation, and binning * for the currently-running IC */ #ifdef CONFIG_PM_OPP #ifdef CONFIG_ARCH_OMAP5_ES1 if (omap_rev() == OMAP5430_REV_ES1_0) { omap5_voltdm_mpu.volt_data = omap5430_vdd_mpu_volt_data; omap5_voltdm_mpu.dep_vdd_info = omap5430_vddmpu_dep_info; omap5_voltdm_mm.volt_data = omap5430_vdd_mm_volt_data; omap5_voltdm_mm.dep_vdd_info = omap5430_vddmm_dep_info; omap5_voltdm_core.volt_data = omap5430_vdd_core_volt_data; } else if (omap_rev() == OMAP5432_REV_ES1_0) { omap5_voltdm_mpu.volt_data = omap5432_vdd_mpu_volt_data; omap5_voltdm_mpu.dep_vdd_info = omap5432_vddmpu_dep_info; omap5_voltdm_mm.volt_data = omap5432_vdd_mm_volt_data; omap5_voltdm_mm.dep_vdd_info = omap5432_vddmm_dep_info; omap5_voltdm_core.volt_data = omap5432_vdd_core_volt_data; } #else omap5_voltdm_mpu.volt_data = omap543x_vdd_mpu_volt_data; omap5_voltdm_mpu.dep_vdd_info = omap543x_vddmpu_dep_info; omap5_voltdm_mm.volt_data = omap543x_vdd_mm_volt_data; omap5_voltdm_mm.dep_vdd_info = omap543x_vddmm_dep_info; omap5_voltdm_core.volt_data = omap543x_vdd_core_volt_data; #endif /* CONFIG_ARCH_OMAP5_ES1 */ #endif omap5_voltdm_mpu.vp_param = &omap5_mpu_vp_data; omap5_voltdm_mm.vp_param = &omap5_mm_vp_data; omap5_voltdm_core.vp_param = &omap5_core_vp_data; if (omap_rev() == OMAP5430_REV_ES1_0 || omap_rev() == OMAP5432_REV_ES1_0) { omap5_voltdm_mpu.vc_param = &omap5_es1_mpu_vc_data; omap5_voltdm_mm.vc_param = &omap5_es1_mm_vc_data; omap5_voltdm_core.vc_param = &omap5_es1_core_vc_data; } else if (omap_rev() == OMAP5430_REV_ES2_0 || omap_rev() == OMAP5432_REV_ES2_0) { omap5_voltdm_mpu.vc_param = &omap5_mpu_vc_data; omap5_voltdm_mm.vc_param = &omap5_mm_vc_data; omap5_voltdm_core.vc_param = &omap5_core_vc_data; } else { WARN(1, "OMAP revision = 0x%08X - NO VC param!\n", omap_rev()); } for (i = 0; voltdm = voltagedomains_omap5[i], voltdm; i++) voltdm->sys_clk.name = sys_clk_name; voltdm_init(voltagedomains_omap5); };
void __init am33xx_voltagedomains_init(void) { voltdm_init(voltagedomains_am33xx); }
void __init omap2xxx_voltagedomains_init(void) { voltdm_init(voltagedomains_omap2); }