Esempio n. 1
0
/* ------------------------------------------------------------------------*//**
 * @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;
	}
}
Esempio n. 2
0
/* ------------------------------------------------------------------------*//**
 * @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;
}
Esempio n. 3
0
/* ------------------------------------------------------------------------*//**
 * @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]);
	}
}