/* ------------------------------------------------------------------------*//** * @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; } }
/* ------------------------------------------------------------------------*//** * @FUNCTION main44xx_legacy * @BRIEF omap4 functions main entry point (legacy) * @RETURNS 0 in case of success * OMAPCONF_ERR_ARG * OMAPCONF_ERR_CPU * OMAPCONF_ERR_REG_ACCESS * OMAPCONF_ERR_INTERNAL * @param[in] argc: shell input argument number * @param[in] argv: shell input argument(s) * @DESCRIPTION omap4 functions main entry point (legacy) *//*------------------------------------------------------------------------ */ static int main44xx_legacy(int argc, char *argv[]) { int ret = 0; voltdm44xx_id vdd_id; char voltdm_name[VOLTDM44XX_MAX_NAME_LENGTH]; double v; unsigned int ms; CHECK_CPU(44xx, OMAPCONF_ERR_CPU); if (argc == 0) return err_arg_missing_msg_show(HELP_CATEGORY_MAX); if (strcmp(argv[0], "pwst") == 0) { ret = power44xx_status_show(); } else if (strcmp(argv[0], "opp") == 0) { ret = opp_show(stdout); } else if (strcmp(argv[0], "hwobs") == 0) { ret = hwobs44xx_main(argc, argv); } else if (strcmp(argv[0], "mpu") == 0) { ret = mpu44xx_main(argc, argv); } else if (strcmp(argv[0], "mpuss") == 0) { ret = mpuss44xx_main(argc, argv); } else if (strcmp(argv[0], "dplls") == 0) { ret = dpll44xx_main(argc, argv); } else if (strcmp(argv[0], "wkdep") == 0) { ret = wkdep44xx_main(argc, argv); } else if (strcmp(argv[0], "core") == 0) { ret = core44xx_main(argc, argv); } else if (strcmp(argv[0], "per") == 0) { ret = per44xx_main(argc, argv); } else if (strcmp(argv[0], "dsp") == 0) { ret = dsp44xx_main(argc, argv); } else if (strcmp(argv[0], "dss") == 0) { ret = dss44xx_main(argc, argv); } else if (strcmp(argv[0], "cam") == 0) { ret = cam44xx_main(argc, argv); } else if (strcmp(argv[0], "sgx") == 0) { ret = gfx44xx_main(argc, argv); } else if (strcmp(argv[0], "gfx") == 0) { ret = gfx44xx_main(argc, argv); } else if (strcmp(argv[0], "ivahd") == 0) { ret = ivahd44xx_main(argc, argv); } else if (strcmp(argv[0], "iva") == 0) { ret = ivahd44xx_main(argc, argv); } else if (strcmp(argv[0], "per") == 0) { ret = per44xx_main(argc, argv); } else if (strcmp(argv[0], "abe") == 0) { ret = abe44xx_main(argc, argv); } else if (strcmp(argv[0], "wkup") == 0) { ret = wkup44xx_main(argc, argv); } else if (strcmp(argv[0], "l3init") == 0) { ret = l3init44xx_main(argc, argv); } else if (strcmp(argv[0], "alwon") == 0) { ret = alwon44xx_main(argc, argv); } else if (strcmp(argv[0], "emu") == 0) { ret = emu44xx_main(argc, argv); } else if (strcmp(argv[0], "sr") == 0) { if (argc == 1) { ret = err_arg_missing_msg_show(HELP_AVS); } else if (argc == 2) { if (strcmp(argv[1], "dump") == 0) ret = sr44xx_dump(); else if (strcmp(argv[1], "cfg") == 0) ret = sr44xx_config_show(stdout); else if (strcmp(argv[1], "status") == 0) ret = sr44xx_status_show(stdout); else ret = err_unknown_argument_msg_show(argv[1]); } else { ret = err_arg_too_many_msg_show(HELP_AVS); } } else if (strcmp(argv[0], "abb") == 0) { ret = abb44xx_main(argc, argv); } else if (strcmp(argv[0], "temp") == 0) { if (argc == 1) { ret = temp_sensor_show(stdout, "all"); } else if (argc == 2) { if (strcmp(argv[1], "all") == 0) ret = temp_sensor_show(stdout, argv[1]); else if (temp_sensor_is_available(argv[1]) != 0) ret = temp_sensor_show(stdout, argv[1]); else ret = err_arg_msg_show(HELP_TEMPERATURE); } else { ret = err_arg_too_many_msg_show(HELP_TEMPERATURE); } } else if (strcmp(argv[0], "ctt") == 0) { ret = ctt44xx_main(argc, argv); } else if (strcmp(argv[0], "pct") == 0) { ret = pct44xx_main(argc, argv); } else if (strcmp(argv[0], "emif") == 0) { ret = emif44xx_main(argc, argv); } else if (strcmp(argv[0], "twl6040") == 0) { ret = twl6040_main(argc, argv); } else if (strcmp(argv[0], "display") == 0) { if (argc == 3) { ret = display44xx_dump(argv[2]); } else { help(HELP_DISPLAY); ret = OMAPCONF_ERR_ARG; } } else if (strcmp(argv[0], "statdep") == 0) { ret = statdep44xx_main(argc, argv); } else if (strcmp(argv[0], "twl6030") == 0) { ret = twl603x_main(argc, argv); } else if (strcmp(argv[0], "camera") == 0) { ret = camera44xx_main(argc, argv); } else if (strcmp(argv[0], "setvolt") == 0) { /* Retrieve arguments */ if (argc != 3) return err_arg_msg_show(HELP_VOLT); vdd_id = voltdm44xx_s2id(argv[1]); if (vdd_id == OMAP4_VD_ID_MAX) return err_arg_msg_show(HELP_VOLT); ret = sscanf(argv[2], "%lf", &v); if (ret != 1) return err_arg_msg_show(HELP_VOLT); /* Call function with retrieved arguments */ ret = sr44xx_voltage_set(vdd_id, (unsigned long) (v * 1000000)); if (ret != 0) { fprintf(stderr, "Error: could not set %s new voltage!!!\n\n", voltdm44xx_get_name(vdd_id, voltdm_name)); } else { printf( "%s supply voltage set to %1.3lfV (vsel = 0x%02X).\n\n", voltdm44xx_get_name(vdd_id, voltdm_name), v, smps_uvolt2vsel(vdd_id2smps_id(vdd_id), (unsigned long) (v * 1000000))); printf("### WARNING ###:\n"); printf( " - Do not re-enable %s smartreflex or new voltage will be overriden.\n", voltdm44xx_get_name(vdd_id, voltdm_name)); printf( " - Do not change OPP (or use CPUFREQ) or new voltage will be overriden.\n\n"); } } else if (strcmp(argv[0], "vminsearch") == 0) { if (argc != 4) return err_arg_msg_show(HELP_VOLT); vdd_id = voltdm44xx_s2id(argv[1]); if (vdd_id == OMAP4_VD_ID_MAX) return err_arg_msg_show(HELP_VOLT); ret = sscanf(argv[2], "%lf", &v); if (ret != 1) return err_arg_msg_show(HELP_VOLT); ret = sscanf(argv[3], "%d", &ms); if (ret != 1) return err_arg_msg_show(HELP_VOLT); ret = voltdm44xx_vminsearch(vdd_id, v, ms); } else { ret = err_unknown_argument_msg_show(argv[0]); goto main44xx_legacy_end; } if (ret != 0) goto main44xx_legacy_end; fprintf(stderr, "\n\n### WARNING ###: deprecated command/options. See 'omapconf --help'.\n\n"); main44xx_legacy_end: return ret; }
/* ------------------------------------------------------------------------*//** * @FUNCTION main44xx_set * @BRIEF set selected item provided in string argv. * @RETURNS 0 in case of success * OMAPCONF_ERR_ARG * OMAPCONF_ERR_CPU * OMAPCONF_ERR_REG_ACCESS * OMAPCONF_ERR_INTERNAL * @param[in] argc: shell input argument number * @param[in] argv: shell input argument(s) * @DESCRIPTION set selected item provided in string argv. *//*------------------------------------------------------------------------ */ static int main44xx_set(int argc, char *argv[]) { voltdm44xx_id vdd_id; char voltdm_name[VOLTDM44XX_MAX_NAME_LENGTH]; double v; int ret; CHECK_CPU(44xx, OMAPCONF_ERR_CPU); if (strcmp(argv[0], "prcm") == 0) { if (argc < 3) { return err_arg_missing_msg_show(HELP_PRCM); } else if (strcmp(argv[1], "statdep") == 0) { if (argc == 3) return statdep44xx_main_set(argv[2], NULL, 1); else if (argc == 4) return statdep44xx_main_set( argv[2], argv[3], 1); else return err_arg_too_many_msg_show(HELP_PRCM); } else { return err_arg_msg_show(HELP_PRCM); } } else if (strcmp(argv[0], "volt") == 0) { if (argc < 3) { return err_arg_missing_msg_show(HELP_VOLT); } else if (argc == 3) { vdd_id = voltdm44xx_s2id(argv[1]); if (vdd_id == OMAP4_VD_ID_MAX) return err_arg_msg_show(HELP_VOLT); ret = sscanf(argv[2], "%lf", &v); if (ret != 1) return err_arg_msg_show(HELP_VOLT); ret = sr44xx_voltage_set(vdd_id, (unsigned long) (v * 1000000)); if (ret != 0) { printf( "omapconf: could not set %s new voltage!!!\n\n", voltdm44xx_get_name(vdd_id, voltdm_name)); } else { printf( "%s supply voltage set to %1.3lfV (vsel = 0x%02X).\n\n", voltdm44xx_get_name(vdd_id, voltdm_name), v, smps_uvolt2vsel(vdd_id2smps_id(vdd_id), (unsigned long) (v * 1000000))); printf("### WARNING ###:\n"); printf( " - Do not re-enable %s smartreflex or new voltage will be overriden.\n", voltdm44xx_get_name( vdd_id, voltdm_name)); printf( " - Do not change OPP (or use CPUFREQ) or new voltage will be overriden.\n\n"); } return ret; } else { return err_arg_too_many_msg_show(HELP_VOLT); } } else if (strcmp(argv[0], "pmic") == 0) { if (argc < 4) { return err_arg_missing_msg_show(HELP_PMIC); } else if (argc == 4) { if (strcmp(argv[1], "devpwrgrp") == 0) return twl603x_pwrgrp_set(stdout, argv[2], argv[3]); else return err_arg_msg_show(HELP_PMIC); } else { return err_arg_too_many_msg_show(HELP_PMIC); } } else { return err_unknown_argument_msg_show(argv[0]); } }