Exemple #1
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		voltdm54xx_opp_get
 * @BRIEF		find the current voltage domain OPP
 * @RETURNS		valid OPP ID in case of success
 *			OPP54XX_ID_MAX in case of error
 * @param[in]		id: voltage domain ID
 * @DESCRIPTION		find the current voltage domain OPP
 *//*------------------------------------------------------------------------ */
opp54xx_id voltdm54xx_opp_get(voltdm54xx_id id)
{
	opp54xx_id opp_id;
	double volt = 0.0, volt_por = 0.0;

	CHECK_CPU(54xx, OPP54XX_ID_MAX);
	CHECK_ARG_LESS_THAN(id, VDD54XX_ID_MAX, OPP54XX_ID_MAX);

	if (id == VDD54XX_WKUP) {
		/* Only 1 OPP for WKUP voltage domain */
		opp_id = OPP54XX_NOM;
	} else {
		/*
		 * In VDD_MM there are 3 independent modules (GPU, IVA, DSP)
		 * that may be running at different clock rates.
		 * Furthermore, these modules may or may not be running, so
		 * module's clock rate may not be relevant.
		 * Use nominal voltage instead.
		 */
		volt = voltdm54xx_nominal_voltage_get(id);
		if (volt < 0.0)
			return OPP54XX_ID_MAX;

		dprintf("%s(%s): nominal voltage is %lfV\n", __func__,
			voltdm54xx_name_get(id), volt);

		for (opp_id = OPP54XX_DPLL_CASC; opp_id < OPP54XX_ID_MAX;
			opp_id++) {
			volt_por = voltdm54xx_por_nominal_voltage_get(
				id, opp_id);
			if (volt_por < 0.0)
				return OPP54XX_ID_MAX;
			dprintf("%s(%s): POR nominal voltage for %s is %lfV\n",
				__func__, voltdm54xx_name_get(id),
				opp54xx_name_get(opp_id), volt_por);
			if (volt == volt_por)
				break;
		}
	}

	#ifdef VOLTDM54XX_DEBUG
	if (opp_id != OPP54XX_ID_MAX) {
		dprintf("%s(%s): OPP found: %s\n", __func__,
			voltdm54xx_name_get(id), opp54xx_name_get(opp_id));
	} else {
		dprintf("%s(%s): OPP not found!\n", __func__,
			voltdm54xx_name_get(id));
	}
	#endif

	return opp_id;
}
Exemple #2
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		ctt44xx_rd1_export
 * @BRIEF		export PRCM registers in CTT RD1 format
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 *			OMAPCONF_ERR_NOT_AVAILABLE
 * @param[in]		filename: output file name
 * @DESCRIPTION		export PRCM registers in CTT RD1 format
 *//*------------------------------------------------------------------------ */
int ctt44xx_rd1_export(char *filename)
{
	unsigned int i = 0;
	unsigned int ret, val = 0;
	int err = 0;
	FILE *fd = NULL;

	CHECK_CPU(44xx, OMAPCONF_ERR_ARG);
	CHECK_NULL_ARG(filename, OMAPCONF_ERR_ARG);

	fd = fopen(filename, "w");
	if (fd == NULL) {
		printf("error: could not create %s file!\n", filename);
		return OMAPCONF_ERR_NOT_AVAILABLE;
	}

	if (cpu_is_omap4430()) {
		fprintf(fd, "DeviceName OMAP4430_ES2.x\n");
	} else if (cpu_is_omap4460()) {
		fprintf(fd, "DeviceName OMAP4460_ES1.x\n");
	} else if (cpu_is_omap4470()) {
		fprintf(fd, "DeviceName OMAP4470_ES1.0\n");
	} else {
		err = OMAPCONF_ERR_CPU;
		goto ctt44xx_rd1_export_end;
	}

	ctt44xx_regtable_init();

	while (prcm_ctt_reg_table[i].addr != 0) {
		/* display register addr & content (hex) */
		ret = mem_read(prcm_ctt_reg_table[i].addr, &val);
		if (ret == 0)
			fprintf(fd, "0x%08X 0x%08X\n",
				prcm_ctt_reg_table[i].addr, val);
		else {
			fprintf(stderr,
				"omapconf: read error! (addr=0x%08X, err=%d)\n",
				prcm_ctt_reg_table[i].addr, ret);
			err = OMAPCONF_ERR_REG_ACCESS;
		}
		i++;
	}

	printf("Output written to file '%s'.\n", filename);
	err = 0;

ctt44xx_rd1_export_end:
	if (fd != NULL)
		fclose(fd);
	return err;
}
Exemple #3
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		prm54xx_export
 * @BRIEF		export module register content to file, in XML format.
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_INTERNAL
 * @param[in,out]	fp: output file stream (opened for write operations)
 * @param[in]		id: PRM module ID
 * @DESCRIPTION		export module register content to file, in XML format.
 *//*------------------------------------------------------------------------ */
int prm54xx_export(FILE *fp, prm54xx_mod_id id)
{
	reg **mod;
	unsigned int i;

	CHECK_CPU(54xx, OMAPCONF_ERR_CPU);
	CHECK_NULL_ARG(fp, OMAPCONF_ERR_ARG);
	CHECK_ARG_LESS_THAN(id, PRM54XX_MODS_COUNT, OMAPCONF_ERR_ARG);
	if ((cpu_revision_get() != REV_ES1_0) &&
		(id == PRM54XX_L4PER_PRM)) {
		fprintf(stderr, "omapconf: %s(): L4_PER does not exist!!!\n",
			__func__);
		return OMAPCONF_ERR_ARG;
	}

	dprintf("%s(): exporting PRM %s (%u) module ...\n", __func__,
		prm54xx_mod_name_get(id), id);

	if (cpu_revision_get() == REV_ES1_0)
		mod = prm54xxes1_mods[id];
	else
		mod = prm54xx_mods[id];
	if (mod == NULL) {
		fprintf(stderr, "omapconf: %s(): mod == NULL!!!\n", __func__);
		return OMAPCONF_ERR_INTERNAL;
	}

	if ((id == PRM54XX_INSTR_PRM) && !prm54xx_is_profiling_running()) {
		dprintf(
			"%s(%s): PRM module is not accessible, don't export registers\n",
			__func__, prm54xx_mod_name_get(id));
		return 0;
	}

	fprintf(fp, "          <submodule id=\"%u\" name=\"%s\">\n",
		id, prm54xx_mod_name_get(id));

	for (i = 0; mod[i] != NULL; i++)
		fprintf(fp,
			"            <register id=\"%u\" name=\"%s\" addr=\"0x%08X\" data=\"0x%08X\" />\n",
			i, reg_name_get(mod[i]), reg_addr_get(mod[i]),
			reg_read(mod[i]));

	fprintf(fp, "          </submodule>\n");
	fflush(fp);

	dprintf("%s(): PRM %s (%u) module exported.\n", __func__,
		cm54xx_mod_name_get(id), id);
	return 0;
}
Exemple #4
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		opp54xx_count_get
 * @BRIEF		return the number of OPP(s) of a given voltage domain
 * @RETURNS		number of OPP(s) (> 0) in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_ARG
 * @param[in]		vdd_id: voltage domain ID
 * @DESCRIPTION		return the number of OPP(s) of a given voltage domain
 *//*------------------------------------------------------------------------ */
int opp54xx_count_get(voltdm54xx_id vdd_id)
{
	int count;

	CHECK_CPU(54xx, OMAPCONF_ERR_CPU);
	CHECK_ARG_LESS_THAN(vdd_id, VDD54XX_ID_MAX, OMAPCONF_ERR_ARG);

	opp54xx_init();

	count = genlist_getcount(opp54xx_list_table_es1[vdd_id]);

	dprintf("%s(%d) = %d\n", __func__, vdd_id, count);
	return count;
}
Exemple #5
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		emif54xx_export
 * @BRIEF		export module register content to file, in XML format.
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_REG_ACCESS
 *			OMAPCONF_ERR_INTERNAL
 * @param[in,out]	fp: output file stream (opened for write operations)
 * @param[in]		id: EMIF module ID
 * @DESCRIPTION		export module register content to file, in XML format.
 *//*------------------------------------------------------------------------ */
int emif54xx_export(FILE *fp, emif54xx_mod_id id)
{
	reg **mod;
	unsigned int i, accessible;

	CHECK_CPU(54xx, OMAPCONF_ERR_CPU);
	CHECK_NULL_ARG(fp, OMAPCONF_ERR_ARG);
	CHECK_ARG_LESS_THAN(id, EMIF54XX_MODS_COUNT, OMAPCONF_ERR_ARG);

	switch (id) {
	case EMIF54XX_EMIF1:
		accessible = module_is_accessible(MOD_EMIF1);
		break;
	case EMIF54XX_EMIF2:
		accessible = module_is_accessible(MOD_EMIF2);
		break;
	default: /* should not happen as already checked just before ... */
		return OMAPCONF_ERR_INTERNAL;
	}

	if (!accessible) {
		printf("%s export: module not running, skipping "
			"registers export.\n", emif54xx_mod_name_get(id));
		return 0;
	}

	if (cpu_revision_get() == REV_ES1_0)
		mod = emif54xxes1_mods[id];
	else
		mod = emif54xx_mods[id];

	fprintf(fp, "          <submodule id=\"%u\" name=\"%s\">\n",
		id, emif54xx_mod_name_get(id));

	if (cpu_revision_get() == REV_ES1_0) {
		for (i = 0; i < OMAP5430ES1_EMIF1_MOD_REGCOUNT; i++)
			fprintf(fp, "            <register id=\"%u\" name=\"%s\" "
				"addr=\"0x%08X\" data=\"0x%08X\" />\n", i,
				(mod[i])->name, (mod[i])->addr, reg_read(mod[i]));
	} else {
		for (i = 0; i < OMAP5430_EMIF1_MOD_REGCOUNT; i++)
			fprintf(fp, "            <register id=\"%u\" name=\"%s\" "
				"addr=\"0x%08X\" data=\"0x%08X\" />\n", i,
				(mod[i])->name, (mod[i])->addr, reg_read(mod[i]));
	}

	fprintf(fp, "          </submodule>\n");

	return 0;
}
Exemple #6
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		main44xx_enable
 * @BRIEF		enable 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		enable selected item provided in string argv.
 *//*------------------------------------------------------------------------ */
static int main44xx_enable(int argc, char *argv[])
{
	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (argc < 1) {
		return err_arg_missing_msg_show(HELP_CATEGORY_MAX);
	} else if (strcmp(argv[0], "hwobs") == 0) {
		if (argc == 1)
			return hwobs44xx_setup_enable();
		else
			return err_arg_too_many_msg_show(HELP_HWOBS);
	} else {
		return err_unknown_argument_msg_show(argv[0]);
	}
}
Exemple #7
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		main44xx_read
 * @BRIEF		read 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		read selected item provided in string argv.
 *//*------------------------------------------------------------------------ */
static int main44xx_read(int argc, char *argv[])
{
	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (strcmp(argv[0], "audioic") == 0) {
		if (argc < 2)
			return err_arg_missing_msg_show(HELP_CATEGORY_MAX);
		else if (argc == 2)
			return twl6040_readreg(uppercase(argv[1]));
		else
			return err_arg_too_many_msg_show(HELP_CATEGORY_MAX);
	} else {
		return err_unknown_argument_msg_show(argv[0]);
	}
}
Exemple #8
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		voltdm54xx_por_nominal_voltage_get
 * @BRIEF		return the Plan of Record (POR) nominal voltage
 *			of a given voltage domain for a given OPP.
 * @RETURNS		supply voltage in case of success (>= 0.0)
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_CPU
 * @param[in]		id: valid voltage domain ID
 * @DESCRIPTION		return the Plan of Record (POR) nominal voltage
 *			of a given voltage domain for a given OPP.
 *//*------------------------------------------------------------------------ */
double voltdm54xx_por_nominal_voltage_get(voltdm54xx_id id, opp54xx_id opp_id)
{
	double volt;

	CHECK_CPU(54xx, (double) OMAPCONF_ERR_CPU);
	CHECK_ARG_LESS_THAN(id, VDD54XX_ID_MAX, (double) OMAPCONF_ERR_ARG);
	CHECK_ARG_LESS_THAN(id, VDD54XX_ID_MAX, (double) OMAPCONF_ERR_ARG);

	volt = voltdm54xx_por_nominal_voltages_table_es1[id][opp_id];

	dprintf("%s(%s): %s POR nominal volt=%lfV\n", __func__,
		opp54xx_name_get(opp_id),
		voltdm54xx_name_get(id), volt);

	return volt;
}
Exemple #9
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		dsp44xx_config_show
 * @BRIEF		analyze DSP power configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @param[in]		stream: output file stream
 * @DESCRIPTION		analyze DSP power configuration
 *//*------------------------------------------------------------------------ */
int dsp44xx_config_show(FILE *stream)
{
	unsigned int pm_pwstctrl;
	unsigned int pm_pwstst;
	unsigned int cm_clkstctrl;
	unsigned int rm_context;
	unsigned int cm_clkctrl;
	int ret;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (!init_done)
		dsp44xx_regtable_init();

	if (mem_read(OMAP4430_CM_DSP_DSP_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_DSP_DSP_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;

	/* Power Domain Configuration */
	if (mem_read(OMAP4430_PM_DSP_PWRSTCTRL, &pm_pwstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_PM_DSP_PWRSTST, &pm_pwstst) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = pwrdm44xx_config_show(stream, "DSP",
		OMAP4430_PM_DSP_PWRSTCTRL, pm_pwstctrl,
		OMAP4430_PM_DSP_PWRSTST, pm_pwstst);
	if (ret != 0)
		return ret;

	/* Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_DSP_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "DSP",
		OMAP4430_CM_DSP_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;

	/* Module Power Configuration */
	ret = mod44xx_config_show(stream, "DSP",
		OMAP4430_CM_DSP_DSP_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_DSP_DSP_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	return 0;
}
Exemple #10
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		sr54xx_module_config_show
 * @BRIEF		analyze Smart-Reflex module configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 * @param[in]		stream: output file (NULL: no output (silent))
 * @DESCRIPTION		analyze Smart-Reflex module configuration
 *//*------------------------------------------------------------------------ */
int sr54xx_module_config_show(FILE *stream)
{
	sr_registers sr_regs[3];
	unsigned int i;
	mod54xx_id sr_mods[3] = {
		OMAP5_SMARTREFLEX_MPU,
		OMAP5_SMARTREFLEX_MM,
		OMAP5_SMARTREFLEX_CORE};

	CHECK_CPU(54xx, OMAPCONF_ERR_CPU);

	for (i = 0; i < 3; i++) {
		if (mod54xx_is_accessible(sr_mods[i]) != 1) {
			sr_regs[i].accessible = 0;
			continue;
		}

		sr_regs[i].accessible = 1;
		sr_regs[i].srconfig = reg_read(sr54xx_mods[i][0]);
		sr_regs[i].srstatus = reg_read(sr54xx_mods[i][1]);
		sr_regs[i].senval = reg_read(sr54xx_mods[i][2]);
		sr_regs[i].senmin = reg_read(sr54xx_mods[i][3]);
		sr_regs[i].senmax = reg_read(sr54xx_mods[i][4]);
		sr_regs[i].senavg = reg_read(sr54xx_mods[i][5]);
		sr_regs[i].avgweight = reg_read(sr54xx_mods[i][6]);
		sr_regs[i].nvaluereciprocal = reg_read(sr54xx_mods[i][7]);
		sr_regs[i].irqstatus_raw = reg_read(sr54xx_mods[i][8]);
		sr_regs[i].irqstatus = reg_read(sr54xx_mods[i][9]);
		sr_regs[i].irqenable_set = reg_read(sr54xx_mods[i][10]);
		sr_regs[i].senerror = reg_read(sr54xx_mods[i][12]);
		sr_regs[i].errconfig = reg_read(sr54xx_mods[i][13]);
		sr_regs[i].lvtsenval = reg_read(sr54xx_mods[i][14]);
		sr_regs[i].lvtsenmin = reg_read(sr54xx_mods[i][15]);
		sr_regs[i].lvtsenmax = reg_read(sr54xx_mods[i][16]);
		sr_regs[i].lvtsenavg = reg_read(sr54xx_mods[i][17]);
		sr_regs[i].lvtnvaluereciprocal = reg_read(sr54xx_mods[i][18]);
	}

	if ((sr_regs[0].accessible == 0) &&
		(sr_regs[1].accessible == 0) &&
		(sr_regs[2].accessible == 0)) {
		printf("All Smart-Reflex Modules disabled.\n");
		return 0;
	}

	return sr_config_show(stream, sr_regs);
}
Exemple #11
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		main44xx
 * @BRIEF		omap4 functions main entry point
 * @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)
 *//*------------------------------------------------------------------------ */
int main44xx(int argc, char *argv[])
{
	int ret;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (argc == 0) {
		help(HELP_USAGE);
		return OMAPCONF_ERR_ARG;
	}

	/* Initializations */
	main44xx_init();

	if (strcmp(argv[0], "dump") == 0)
		ret = main44xx_dump(argc - 1, argv + 1);
	else if (strcmp(argv[0], "show") == 0)
		ret = main44xx_show(argc - 1, argv + 1);
	else if (strcmp(argv[0], "audit") == 0)
		ret = audit44xx_main(argc, argv);
	else if (strcmp(argv[0], "trace") == 0)
		ret = main44xx_trace(argc, argv);
	else if (strcmp(argv[0], "search") == 0)
		ret = main44xx_search(argc - 1, argv + 1);
	else if (strcmp(argv[0], "export") == 0)
		ret = main44xx_export(argc - 1, argv + 1);
	else if (strcmp(argv[0], "read") == 0)
		ret = main44xx_read(argc - 1, argv + 1);
	else if (strcmp(argv[0], "write") == 0)
		ret = main44xx_write(argc - 1, argv + 1);
	else if (strcmp(argv[0], "set") == 0)
		ret = main44xx_set(argc - 1, argv + 1);
	else if (strcmp(argv[0], "reset") == 0)
		ret = main44xx_reset(argc - 1, argv + 1);
	else if (strcmp(argv[0], "clear") == 0)
		ret = main44xx_clear(argc - 1, argv + 1);
	else if (strcmp(argv[0], "enable") == 0)
		ret = main44xx_enable(argc - 1, argv + 1);
	else if (strcmp(argv[0], "setup") == 0)
		ret = main44xx_setup(argc - 1, argv + 1);
	else if (strcmp(argv[0], "test") == 0)
		ret = main44xx_test(argc - 1, argv + 1);
	else
		ret = main44xx_legacy(argc, argv);

	return ret;
}
Exemple #12
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		mod44xx_get_por_clk_speed
 * @BRIEF		retrieve omap module's functional POR clock speed
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_CPU
 * @param[in]		module_id: omap module ID
 * @param[in]		opp: the OPP ID
 * @param[in,out]	por_clk_speed: returned omap functional clock speed
 *			(in MHz)
 * @DESCRIPTION		retrieve omap module's functional POR clock speed
 *//*------------------------------------------------------------------------ */
int mod44xx_get_por_clk_speed(mod44xx_id module_id,
	unsigned short opp, double *por_clk_speed)
{
	*por_clk_speed = 0.0;
	#ifdef MODULE44XX_DEBUG
	char name[MOD44XX_MAX_NAME_LENGTH];
	#endif

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);
	CHECK_ARG_LESS_THAN(module_id, OMAP4_MODULE_ID_MAX, OMAPCONF_ERR_ARG);
	CHECK_ARG_LESS_THAN(opp, OPP44XX_ID_MAX, OMAPCONF_ERR_ARG);

	*por_clk_speed = (double) mod44xx_info_table[module_id].por_speed[opp];
	dprintf("%s(): module %s POR speed is %lf\n", __func__,
		mod44xx_get_name(module_id, name),
		*por_clk_speed);
	return 0;
}
Exemple #13
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		emu44xx_config_show
 * @BRIEF		analyze power configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @param[in]		stream: output file stream
 * @DESCRIPTION		analyze power configuration
 *//*------------------------------------------------------------------------ */
int emu44xx_config_show(FILE *stream)
{
	unsigned int pm_pwstctrl;
	unsigned int pm_pwstst;
	unsigned int cm_clkstctrl;
	unsigned int rm_context;
	unsigned int cm_clkctrl;
	int ret;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (!init_done)
		emu44xx_regtable_init();

	if (mem_read(OMAP4430_PM_EMU_PWRSTCTRL, &pm_pwstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_PM_EMU_PWRSTST, &pm_pwstst) != 0)
		return OMAPCONF_ERR_REG_ACCESS;

	if (mem_read(OMAP4430_CM_EMU_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;

	ret = pwrdm44xx_config_show(stream, "EMU",
		OMAP4430_PM_EMU_PWRSTCTRL, pm_pwstctrl,
		OMAP4430_PM_EMU_PWRSTST, pm_pwstst);
	if (ret != 0)
		return ret;

	ret = clkdm44xx_config_show(stream, "EMU",
		OMAP4430_CM_EMU_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_EMU_DEBUGSS_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_EMU_DEBUGSS_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "DEBUGSS",
		OMAP4430_CM_EMU_DEBUGSS_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_EMU_DEBUGSS_CONTEXT, rm_context);

	return ret;
}
Exemple #14
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		sr54xx_avs_enable
 * @BRIEF		control SR AVS via sysfs entry.
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_NOT_AVAILABLE
 *			OMAPCONF_ERR_UNEXPECTED
 * @param[in]		id: SR ID
 * @param[in]		enable: =1 to enable, =0 to disable SR AVS
 * @DESCRIPTION		control SR AVS via sysfs entry.
 *//*------------------------------------------------------------------------ */
int sr54xx_avs_enable(sr54xx_mod_id id, unsigned short enable)
{
	int ret;
	FILE *fp;
	static const char filename[SR54XX_MODS_COUNT][72] = {
		"/sys/kernel/debug/smartreflex/smartreflex_mpu/autocomp",
		"/sys/kernel/debug/smartreflex/smartreflex_mm/autocomp",
		"/sys/kernel/debug/smartreflex/smartreflex_core/autocomp"};

	CHECK_CPU(54xx, OMAPCONF_ERR_CPU);
	CHECK_ARG_LESS_THAN(id, SR54XX_MODS_COUNT, OMAPCONF_ERR_ARG);
	CHECK_ARG_LESS_THAN(enable, 2, OMAPCONF_ERR_ARG);

	/* Open file */
	fp = fopen(filename[id], "w");
	if (fp == NULL) {
		fprintf(stderr,
			"omapconf (%s()): could not open %s! Is debugfs mounted???\n\n",
			__func__, filename[id]);
		return OMAPCONF_ERR_NOT_AVAILABLE;
	}

	if (enable)
		ret = fwrite("1", sizeof(char), 1, fp);
	else
		ret = fwrite("0", sizeof(char), 1, fp);
	if (ret != 1) {
		fprintf(stderr, "omapconf (%s()): could not write into %s!\n\n",
			__func__, filename[id]);
		ret = OMAPCONF_ERR_UNEXPECTED;
	} else {
		ret = 0;
	}

	/* Close file */
	if (fp != NULL)
		fclose(fp);

	return ret;
}
Exemple #15
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		ctt44xx_main
 * @BRIEF		main entry point for ctt
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_INTERNAL
 * @param[in]		argc: shell input argument number
 * @param[in]		argv: shell input argument(s)
 * @DESCRIPTION		main entry point for ctt
 *//*------------------------------------------------------------------------ */
int ctt44xx_main(int argc, char *argv[])
{
	int ret;

	CHECK_CPU(44xx, OMAPCONF_ERR_ARG);

	if (argc == 2) {
		if (strcmp(argv[1], "dump") == 0)
			ret = ctt44xx_dump();
		else if (strcmp(argv[1], "rd1") == 0)
			ret = ctt44xx_rd1_export(ctt_filename);
		else {
			help(HELP_EXPORT);
			ret = OMAPCONF_ERR_ARG;
		}
	} else {
		help(HELP_EXPORT);
		ret = OMAPCONF_ERR_ARG;
	}

	return ret;
}
Exemple #16
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		pwrdm54xx_state_get
 * @BRIEF		extract power domain state from register
 * @RETURNS		power domain state on success
 *			PWRDM_STATE_MAX in case of error
 * @param[in]		id: valid power domain ID
 * @param[in]		type: valid power domain state type
 * @DESCRIPTION		extract power domain state from register
 *//*------------------------------------------------------------------------ */
pwrdm_state pwrdm54xx_state_get(pwrdm54xx_id id, pwrdm_state_type type)
{
	reg *pm_pwrst;

	CHECK_CPU(54xx, PWRDM_STATE_MAX);
	CHECK_ARG_LESS_THAN(id, PWRDM54XX_ID_MAX, PWRDM_STATE_MAX);

	/* Retrieve registers address */
	if (type == PWRDM_STATE_TARGET)
		pm_pwrst = pwrdm54xx_pwrstctrl_table[id];
	else
		pm_pwrst = pwrdm54xx_pwrstst_table[id];
	if (pm_pwrst == NULL) {
		/* Always ON domain */
		dprintf("%s(%s): Always ON domain\n", __func__,
			pwrdm54xx_name_get(id));
		return PWRDM_ON_STATE;
	}

	/* Retrieve power domain state */
	return pwrdm_state_get(pm_pwrst, type);
}
Exemple #17
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		main44xx_clear
 * @BRIEF		clear 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		clear selected item provided in string argv.
 *//*------------------------------------------------------------------------ */
static int main44xx_clear(int argc, char *argv[])
{
	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, 0);
			else if (argc == 4)
				return statdep44xx_main_set(
					argv[2], argv[3], 0);
			else
				return err_arg_too_many_msg_show(HELP_PRCM);
		} else {
			return err_arg_msg_show(HELP_PRCM);
		}
	} else {
		return err_unknown_argument_msg_show(argv[0]);
	}
}
Exemple #18
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		sr54xx_config_show
 * @BRIEF		analyze Smart-Reflex complete configuration
 *			(SR module + VC + VP)
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 * @param[in]		stream: output file (NULL: no output (silent))
 * @DESCRIPTION		analyze Smart-Reflex complete configuration
 *			(SR module + VC + VP)
 *//*------------------------------------------------------------------------ */
int sr54xx_config_show(FILE *stream)
{
	vc54xx_registers vc_regs;
	int ret;

	CHECK_CPU(54xx, OMAPCONF_ERR_CPU);

	vc_regs.vc_smps_mpu_config = reg_read(&omap5430_prm_vc_smps_mpu_config);
	vc_regs.vc_smps_mm_config = reg_read(&omap5430_prm_vc_smps_mm_config);
	vc_regs.vc_smps_core_config =
		reg_read(&omap5430_prm_vc_smps_core_config);
	vc_regs.vc_val_cmd_vdd_mpu_l =
		reg_read(&omap5430_prm_vc_val_cmd_vdd_mpu_l);
	vc_regs.vc_val_cmd_vdd_mm_l =
		reg_read(&omap5430_prm_vc_val_cmd_vdd_mm_l);
	vc_regs.vc_val_cmd_vdd_core_l =
		reg_read(&omap5430_prm_vc_val_cmd_vdd_core_l);
	vc_regs.vc_val_bypass = reg_read(&omap5430_prm_vc_val_bypass);
	vc_regs.vc_mpu_errst = reg_read(&omap5430_prm_vc_mpu_errst);
	vc_regs.vc_mm_errst = reg_read(&omap5430_prm_vc_mm_errst);
	vc_regs.vc_core_errst = reg_read(&omap5430_prm_vc_core_errst);
	vc_regs.vc_bypass_errst = reg_read(&omap5430_prm_vc_bypass_errst);
	vc_regs.vc_cfg_i2c_mode = reg_read(&omap5430_prm_vc_cfg_i2c_mode);
	vc_regs.vc_cfg_i2c_clk = reg_read(&omap5430_prm_vc_cfg_i2c_clk);

	ret = vc54xx_config_show(stream, &vc_regs);
	if (ret != 0)
		return ret;

	ret = vp54xx_config_show(stream);
	if (ret != 0)
		return ret;

	ret = sr54xx_module_config_show(stream);
	if (ret != 0)
		return ret;

	return sr54xx_convergence_status_show(stream);
}
Exemple #19
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		sr54xx_avs_is_enabled
 * @BRIEF		return SR AVS current mode (enabled/disabled).
 * @RETURNS		0 if disabled or in case of error.
 *			1 if enabled.
 * @param[in]		id: SR ID
 * @DESCRIPTION		return SR AVS current mode (enabled/disabled).
 *//*------------------------------------------------------------------------ */
unsigned short sr54xx_avs_is_enabled(sr54xx_mod_id id)
{
	int ret;
	FILE *fp;
	char s[2];
	unsigned short enable;
	static const char filename[SR54XX_MODS_COUNT][72] = {
		"/sys/kernel/debug/smartreflex/smartreflex_mpu/autocomp",
		"/sys/kernel/debug/smartreflex/smartreflex_mm/autocomp",
		"/sys/kernel/debug/smartreflex/smartreflex_core/autocomp"};

	CHECK_CPU(54xx, 0);
	CHECK_ARG_LESS_THAN(id, SR54XX_MODS_COUNT, 0);

	/* Open file */
	fp = fopen(filename[id], "r");
	if (fp == NULL) {
		fprintf(stderr, "omapconf (%s()): could not open %s! Is debugfs mounted???\n\n",
			__func__, filename[id]);
		return 0;
	}

	ret = fread(s, sizeof(char), 1, fp);
	if (ret != 1) {
		fprintf(stderr,
			"omapconf (%s()): could not read %s!\n\n",
			__func__, filename[id]);
		enable = 0;
	} else {
		enable = atoi(s);
	}

	/* Close file */
	if (fp != NULL)
		fclose(fp);

	return enable;
}
Exemple #20
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		gfx44xx_dependency_show
 * @BRIEF		analyse GFX dependency configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @param[in]		stream: output file stream
 * @DESCRIPTION		analyse GFX dependency configuration
 *//*------------------------------------------------------------------------ */
int gfx44xx_dependency_show(FILE *stream)
{
	unsigned int cm_staticdep;
	unsigned int cm_dynamicdep;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (!init_done)
		gfx44xx_regtable_init();

	if (mem_read(OMAP4430_CM_GFX_STATICDEP, &cm_staticdep) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_CM_GFX_DYNAMICDEP, &cm_dynamicdep) != 0)
		return OMAPCONF_ERR_REG_ACCESS;

	fprintf(stream,
		"|--------------------------------------------------------|\n");
	fprintf(stream,
		"| GFX Domain Dependency Configuration | Static | Dynamic |\n");
	fprintf(stream,
		"|-------------------------------------|------------------|\n");
	fprintf(stream,
		"| %-35s | %-6s | %-7s |\n", "IVAHD",
		((extract_bit(cm_staticdep, 2) == 1) ? "En" : "Dis"), "");
	fprintf(stream, "| %-35s | %-6s | %-7s |\n", "MEM IF",
		((extract_bit(cm_staticdep, 4) == 1) ? "En" : "Dis"), "");
	fprintf(stream, "| %-35s | %-6s | %-7s |\n", "L3_1",
		((extract_bit(cm_staticdep, 5) == 1) ? "En" : "Dis"),
		((extract_bit(cm_dynamicdep, 5) == 1) ? "En" : "Dis"));
	fprintf(stream, "| %-35s | %-6s | %-7s |\n", "L3_2",
		((extract_bit(cm_staticdep, 6) == 1) ? "En" : "Dis"), "");
	fprintf(stream,
		"|--------------------------------------------------------|\n");
	fprintf(stream, "\n");

	return 0;
}
Exemple #21
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		main44xx_setup
 * @BRIEF		setup 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		setup selected item provided in string argv.
 *//*------------------------------------------------------------------------ */
static int main44xx_setup(int argc, char *argv[])
{
	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (argc == 0) {
		return err_arg_missing_msg_show(HELP_CATEGORY_MAX);
	} else if (strcmp(argv[0], "hwobs") == 0) {
		if (argc < 2) {
			return err_arg_missing_msg_show(HELP_HWOBS);
		} else if (argc == 2) {
			if (strcmp(argv[1], "pinmux") == 0)
				return hwobs44xx_pinmux_setup();
			else
				return err_arg_msg_show(HELP_HWOBS);
		} else if (argc == 3) {
			if (strcmp(argv[1], "mpuss") == 0)
				return hwobs44xx_mpuss_setup(argv[2]);
			else if (strcmp(argv[1], "abe") == 0)
				return hwobs44xx_abe_setup(argv[2]);
			else
				return err_arg_msg_show(HELP_HWOBS);
		} else if (argc == 4) {
			return err_arg_missing_msg_show(HELP_HWOBS);
		} else if (argc == 5) {
			if (strcmp(argv[1], "prcm") == 0)
				return hwobs44xx_prcm_setup(
						argv[2], argv[3], argv[4]);
			else
				return err_arg_msg_show(HELP_HWOBS);
		} else {
			return err_arg_too_many_msg_show(HELP_HWOBS);
		}
	} else {
		return err_unknown_argument_msg_show(argv[0]);
	}
}
Exemple #22
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		wkup44xx_main
 * @BRIEF		PRCM WKUP main menu
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_ARG
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_INTERNAL
 * @param[in]		argc: shell input argument number
 * @param[in]		argv: shell input argument(s)
 * @DESCRIPTION		PRCM WKUP main menu
 *//*------------------------------------------------------------------------ */
int wkup44xx_main(int argc, char *argv[])
{
	int ret;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (argc == 2) {
		if (!init_done)
			wkup44xx_regtable_init();
		if (strcmp(argv[1], "dump") == 0) {
			ret = dumpregs(prcm_wkup_reg_table);
		} else if (strcmp(argv[1], "cfg") == 0) {
			ret = wkup44xx_config_show(stdout);
		} else {
			help(HELP_PRCM);
			ret = OMAPCONF_ERR_ARG;
		}
	} else {
		help(HELP_PRCM);
		ret = OMAPCONF_ERR_ARG;
	}

	return ret;
}
Exemple #23
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		main44xx_export
 * @BRIEF		Export OMAP configuration into format and destination
 *			provided in 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		Export OMAP configuration into format and destination
 *			provided in argv.
 *//*------------------------------------------------------------------------ */
static int main44xx_export(int argc, char *argv[])
{
	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (argc < 1) {
		return err_arg_missing_msg_show(HELP_EXPORT);
	} else if (strcmp(argv[0], "ctt") == 0) {
		if (argc == 1)
			return ctt44xx_dump();
		else if (argc == 2)
			return ctt44xx_rd1_export(argv[1]);
		else
			return err_arg_too_many_msg_show(HELP_EXPORT);
	} else if (strcmp(argv[0], "pct") == 0) {
		if (argc == 1)
			return pct44xx_dump();
		else if (argc == 2)
			return pct44xx_rd1_export(argv[1]);
		else
			return err_arg_too_many_msg_show(HELP_EXPORT);
	} else {
		return err_unknown_argument_msg_show(argv[0]);
	}
}
Exemple #24
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		per44xx_dependency_show
 * @BRIEF		analyse dependency configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @DESCRIPTION		analyse dependency configuration
 *//*------------------------------------------------------------------------ */
int per44xx_dependency_show(FILE *stream)
{
	unsigned int cm_dynamicdep;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (!init_done)
		per44xx_regtable_init();

	if (mem_read(OMAP4430_CM_L4PER_DYNAMICDEP, &cm_dynamicdep) != 0)
		return OMAPCONF_ERR_REG_ACCESS;

	fprintf(stream,
		"|--------------------------------------------------------|\n");
	fprintf(stream,
		"| PER Domain Dependency Configuration | Static | Dynamic |\n");
	fprintf(stream,
		"|-------------------------------------|------------------|\n");
	fprintf(stream,
		"| %-35s | %-6s | %-7s |\n", "L3_INIT",
		"",
		((extract_bit(cm_dynamicdep, 7) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-35s | %-6s | %-7s |\n", "DSS",
		"",
		((extract_bit(cm_dynamicdep, 8) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"|--------------------------------------------------------|\n");
	fprintf(stream, "| %-44s | %-7d |\n", "Window Size",
		extract_bitfield(cm_dynamicdep, 24, 4));
	fprintf(stream,
		"|--------------------------------------------------------|\n");
	fprintf(stream, "\n");

	return 0;
}
Exemple #25
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		ctt44xx_regtable_init
 * @BRIEF		initialize regtable
 * @RETURNS		0
 *			OMAPCONF_ERR_CPU
 * @DESCRIPTION		initialize regtable
 *//*------------------------------------------------------------------------ */
static int ctt44xx_regtable_init(void)
{
	int i = 0;

	CHECK_CPU(44xx, OMAPCONF_ERR_ARG);

	/* Init PRCM registers table */
	prcm_ctt_reg_table[i++].addr = 0x4a004100;
	prcm_ctt_reg_table[i++].addr = 0x4a004108;
	prcm_ctt_reg_table[i++].addr = 0x4a004110;
	prcm_ctt_reg_table[i++].addr = 0x4a004120;
	prcm_ctt_reg_table[i++].addr = 0x4a004124;
	prcm_ctt_reg_table[i++].addr = 0x4a004128;
	prcm_ctt_reg_table[i++].addr = 0x4a00412c;
	prcm_ctt_reg_table[i++].addr = 0x4a004130;
	prcm_ctt_reg_table[i++].addr = 0x4a004134;
	prcm_ctt_reg_table[i++].addr = 0x4a004138;
	prcm_ctt_reg_table[i++].addr = 0x4a00413c;
	prcm_ctt_reg_table[i++].addr = 0x4a004140;
	prcm_ctt_reg_table[i++].addr = 0x4a004144;
	prcm_ctt_reg_table[i++].addr = 0x4a004148;
	prcm_ctt_reg_table[i++].addr = 0x4a00414c;
	prcm_ctt_reg_table[i++].addr = 0x4a004150;
	prcm_ctt_reg_table[i++].addr = 0x4a004160;
	prcm_ctt_reg_table[i++].addr = 0x4a004164;
	prcm_ctt_reg_table[i++].addr = 0x4a004168;
	prcm_ctt_reg_table[i++].addr = 0x4a00416c;
	prcm_ctt_reg_table[i++].addr = 0x4a004170;
	prcm_ctt_reg_table[i++].addr = 0x4a004188;
	prcm_ctt_reg_table[i++].addr = 0x4a00418c;
	prcm_ctt_reg_table[i++].addr = 0x4a00419c;
	prcm_ctt_reg_table[i++].addr = 0x4a0041a0;
	prcm_ctt_reg_table[i++].addr = 0x4a0041a4;
	prcm_ctt_reg_table[i++].addr = 0x4a0041a8;
	prcm_ctt_reg_table[i++].addr = 0x4a0041ac;
	prcm_ctt_reg_table[i++].addr = 0x4a0041b8;
	prcm_ctt_reg_table[i++].addr = 0x4a0041bc;
	prcm_ctt_reg_table[i++].addr = 0x4a0041c8;
	prcm_ctt_reg_table[i++].addr = 0x4a0041cc;
	prcm_ctt_reg_table[i++].addr = 0x4a0041dc;
	prcm_ctt_reg_table[i++].addr = 0x4a0041e0;
	prcm_ctt_reg_table[i++].addr = 0x4a0041e4;
	prcm_ctt_reg_table[i++].addr = 0x4a0041e8;
	prcm_ctt_reg_table[i++].addr = 0x4a0041ec;
	prcm_ctt_reg_table[i++].addr = 0x4a0041f0;
	prcm_ctt_reg_table[i++].addr = 0x4a0041f4;
	prcm_ctt_reg_table[i++].addr = 0x4a004208;
	prcm_ctt_reg_table[i++].addr = 0x4a00420c;
	prcm_ctt_reg_table[i++].addr = 0x4a004260;
	prcm_ctt_reg_table[i++].addr = 0x4a004264;
	prcm_ctt_reg_table[i++].addr = 0x4a004270;
	prcm_ctt_reg_table[i++].addr = 0x4a004280;
	prcm_ctt_reg_table[i++].addr = 0x4a004400;
	prcm_ctt_reg_table[i++].addr = 0x4a004404;
	prcm_ctt_reg_table[i++].addr = 0x4a004408;
	prcm_ctt_reg_table[i++].addr = 0x4a004420;
	prcm_ctt_reg_table[i++].addr = 0x4a004500;
	prcm_ctt_reg_table[i++].addr = 0x4a004520;
	prcm_ctt_reg_table[i++].addr = 0x4a004528;
	prcm_ctt_reg_table[i++].addr = 0x4a004530;
	prcm_ctt_reg_table[i++].addr = 0x4a004538;
	prcm_ctt_reg_table[i++].addr = 0x4a004540;
	prcm_ctt_reg_table[i++].addr = 0x4a004548;
	prcm_ctt_reg_table[i++].addr = 0x4a004550;
	prcm_ctt_reg_table[i++].addr = 0x4a004558;
	prcm_ctt_reg_table[i++].addr = 0x4a004560;
	prcm_ctt_reg_table[i++].addr = 0x4a004568;
	prcm_ctt_reg_table[i++].addr = 0x4a004570;
	prcm_ctt_reg_table[i++].addr = 0x4a004578;
	prcm_ctt_reg_table[i++].addr = 0x4a004580;
	prcm_ctt_reg_table[i++].addr = 0x4a004588;
	prcm_ctt_reg_table[i++].addr = 0x4a008100;
	prcm_ctt_reg_table[i++].addr = 0x4a008104;
	prcm_ctt_reg_table[i++].addr = 0x4a008108;
	prcm_ctt_reg_table[i++].addr = 0x4a008110;
	prcm_ctt_reg_table[i++].addr = 0x4a008114;
	prcm_ctt_reg_table[i++].addr = 0x4a008118;
	prcm_ctt_reg_table[i++].addr = 0x4a00811c;
	prcm_ctt_reg_table[i++].addr = 0x4a008124;
	prcm_ctt_reg_table[i++].addr = 0x4a008128;
	prcm_ctt_reg_table[i++].addr = 0x4a00812c;
	prcm_ctt_reg_table[i++].addr = 0x4a008130;
	prcm_ctt_reg_table[i++].addr = 0x4a008138;
	prcm_ctt_reg_table[i++].addr = 0x4a008140;
	prcm_ctt_reg_table[i++].addr = 0x4a008144;
	prcm_ctt_reg_table[i++].addr = 0x4a008148;
	prcm_ctt_reg_table[i++].addr = 0x4a00814c;
	prcm_ctt_reg_table[i++].addr = 0x4a008150;
	prcm_ctt_reg_table[i++].addr = 0x4a008154;
	prcm_ctt_reg_table[i++].addr = 0x4a008158;
	prcm_ctt_reg_table[i++].addr = 0x4a00815c;
	prcm_ctt_reg_table[i++].addr = 0x4a008160;
	prcm_ctt_reg_table[i++].addr = 0x4a008164;
	prcm_ctt_reg_table[i++].addr = 0x4a008180;
	prcm_ctt_reg_table[i++].addr = 0x4a008184;
	prcm_ctt_reg_table[i++].addr = 0x4a008188;
	prcm_ctt_reg_table[i++].addr = 0x4a00818c;
	prcm_ctt_reg_table[i++].addr = 0x4a008190;
	prcm_ctt_reg_table[i++].addr = 0x4a0081b4;
	prcm_ctt_reg_table[i++].addr = 0x4a008600;
	prcm_ctt_reg_table[i++].addr = 0x4a008628;
	prcm_ctt_reg_table[i++].addr = 0x4a008630;
	prcm_ctt_reg_table[i++].addr = 0x4a008638;
	prcm_ctt_reg_table[i++].addr = 0x4a008640;
	prcm_ctt_reg_table[i++].addr = 0x4a008700;
	prcm_ctt_reg_table[i++].addr = 0x4a008708;
	prcm_ctt_reg_table[i++].addr = 0x4a008720;
	prcm_ctt_reg_table[i++].addr = 0x4a008800;
	prcm_ctt_reg_table[i++].addr = 0x4a008808;
	prcm_ctt_reg_table[i++].addr = 0x4a008820;
	prcm_ctt_reg_table[i++].addr = 0x4a008828;
	prcm_ctt_reg_table[i++].addr = 0x4a008830;
	prcm_ctt_reg_table[i++].addr = 0x4a008900;
	prcm_ctt_reg_table[i++].addr = 0x4a008904;
	prcm_ctt_reg_table[i++].addr = 0x4a008908;
	prcm_ctt_reg_table[i++].addr = 0x4a008920;
	prcm_ctt_reg_table[i++].addr = 0x4a008a00;
	prcm_ctt_reg_table[i++].addr = 0x4a008a04;
	prcm_ctt_reg_table[i++].addr = 0x4a008a08;
	prcm_ctt_reg_table[i++].addr = 0x4a008a20;
	prcm_ctt_reg_table[i++].addr = 0x4a008b00;
	prcm_ctt_reg_table[i++].addr = 0x4a008b20;
	prcm_ctt_reg_table[i++].addr = 0x4a008b28;
	prcm_ctt_reg_table[i++].addr = 0x4a008b30;
	prcm_ctt_reg_table[i++].addr = 0x4a008b38;
	prcm_ctt_reg_table[i++].addr = 0x4a008b40;
	prcm_ctt_reg_table[i++].addr = 0x4a008c00;
	prcm_ctt_reg_table[i++].addr = 0x4a008c04;
	prcm_ctt_reg_table[i++].addr = 0x4a008c08;
	prcm_ctt_reg_table[i++].addr = 0x4a008c20;
	prcm_ctt_reg_table[i++].addr = 0x4a008c30;
	prcm_ctt_reg_table[i++].addr = 0x4a008d00;
	prcm_ctt_reg_table[i++].addr = 0x4a008d08;
	prcm_ctt_reg_table[i++].addr = 0x4a008d20;
	prcm_ctt_reg_table[i++].addr = 0x4a008d28;
	prcm_ctt_reg_table[i++].addr = 0x4a008d30;
	prcm_ctt_reg_table[i++].addr = 0x4a008d38;
	prcm_ctt_reg_table[i++].addr = 0x4a008e00;
	prcm_ctt_reg_table[i++].addr = 0x4a008e20;
	prcm_ctt_reg_table[i++].addr = 0x4a008e28;
	prcm_ctt_reg_table[i++].addr = 0x4a008e40;
	prcm_ctt_reg_table[i++].addr = 0x4a008f00;
	prcm_ctt_reg_table[i++].addr = 0x4a008f04;
	prcm_ctt_reg_table[i++].addr = 0x4a008f08;
	prcm_ctt_reg_table[i++].addr = 0x4a008f20;
	prcm_ctt_reg_table[i++].addr = 0x4a008f28;
	prcm_ctt_reg_table[i++].addr = 0x4a009000;
	prcm_ctt_reg_table[i++].addr = 0x4a009004;
	prcm_ctt_reg_table[i++].addr = 0x4a009008;
	prcm_ctt_reg_table[i++].addr = 0x4a009020;
	prcm_ctt_reg_table[i++].addr = 0x4a009028;
	prcm_ctt_reg_table[i++].addr = 0x4a009100;
	prcm_ctt_reg_table[i++].addr = 0x4a009104;
	prcm_ctt_reg_table[i++].addr = 0x4a009108;
	prcm_ctt_reg_table[i++].addr = 0x4a009120;
	prcm_ctt_reg_table[i++].addr = 0x4a009200;
	prcm_ctt_reg_table[i++].addr = 0x4a009204;
	prcm_ctt_reg_table[i++].addr = 0x4a009208;
	prcm_ctt_reg_table[i++].addr = 0x4a009220;
	prcm_ctt_reg_table[i++].addr = 0x4a009300;
	prcm_ctt_reg_table[i++].addr = 0x4a009304;
	prcm_ctt_reg_table[i++].addr = 0x4a009308;
	prcm_ctt_reg_table[i++].addr = 0x4a009328;
	prcm_ctt_reg_table[i++].addr = 0x4a009330;
	prcm_ctt_reg_table[i++].addr = 0x4a009338;
	prcm_ctt_reg_table[i++].addr = 0x4a009358;
	prcm_ctt_reg_table[i++].addr = 0x4a009360;
	prcm_ctt_reg_table[i++].addr = 0x4a009368;
	prcm_ctt_reg_table[i++].addr = 0x4a0093d0;
	prcm_ctt_reg_table[i++].addr = 0x4a0093e0;
	prcm_ctt_reg_table[i++].addr = 0x4a009400;
	prcm_ctt_reg_table[i++].addr = 0x4a009408;
	prcm_ctt_reg_table[i++].addr = 0x4a009428;
	prcm_ctt_reg_table[i++].addr = 0x4a009430;
	prcm_ctt_reg_table[i++].addr = 0x4a009438;
	prcm_ctt_reg_table[i++].addr = 0x4a009440;
	prcm_ctt_reg_table[i++].addr = 0x4a009448;
	prcm_ctt_reg_table[i++].addr = 0x4a009450;
	prcm_ctt_reg_table[i++].addr = 0x4a009458;
	prcm_ctt_reg_table[i++].addr = 0x4a009460;
	prcm_ctt_reg_table[i++].addr = 0x4a009468;
	prcm_ctt_reg_table[i++].addr = 0x4a009470;
	prcm_ctt_reg_table[i++].addr = 0x4a009478;
	prcm_ctt_reg_table[i++].addr = 0x4a009480;
	prcm_ctt_reg_table[i++].addr = 0x4a009488;
	prcm_ctt_reg_table[i++].addr = 0x4a0094a0;
	prcm_ctt_reg_table[i++].addr = 0x4a0094a8;
	prcm_ctt_reg_table[i++].addr = 0x4a0094b0;
	prcm_ctt_reg_table[i++].addr = 0x4a0094b8;
	prcm_ctt_reg_table[i++].addr = 0x4a0094c0;
	prcm_ctt_reg_table[i++].addr = 0x4a0094e0;
	prcm_ctt_reg_table[i++].addr = 0x4a0094f0;
	prcm_ctt_reg_table[i++].addr = 0x4a0094f8;
	prcm_ctt_reg_table[i++].addr = 0x4a009500;
	prcm_ctt_reg_table[i++].addr = 0x4a009508;
	prcm_ctt_reg_table[i++].addr = 0x4a009520;
	prcm_ctt_reg_table[i++].addr = 0x4a009528;
	prcm_ctt_reg_table[i++].addr = 0x4a009538;
	prcm_ctt_reg_table[i++].addr = 0x4a009540;
	prcm_ctt_reg_table[i++].addr = 0x4a009548;
	prcm_ctt_reg_table[i++].addr = 0x4a009550;
	prcm_ctt_reg_table[i++].addr = 0x4a009558;
	prcm_ctt_reg_table[i++].addr = 0x4a009560;
	prcm_ctt_reg_table[i++].addr = 0x4a306100;
	prcm_ctt_reg_table[i++].addr = 0x4a306108;
	prcm_ctt_reg_table[i++].addr = 0x4a30610c;
	prcm_ctt_reg_table[i++].addr = 0x4a306110;
	prcm_ctt_reg_table[i++].addr = 0x4a307800;
	prcm_ctt_reg_table[i++].addr = 0x4a307820;
	prcm_ctt_reg_table[i++].addr = 0x4a307830;
	prcm_ctt_reg_table[i++].addr = 0x4a307838;
	prcm_ctt_reg_table[i++].addr = 0x4a307840;
	prcm_ctt_reg_table[i++].addr = 0x4a307850;
	prcm_ctt_reg_table[i++].addr = 0x4a307860;
	prcm_ctt_reg_table[i++].addr = 0x4a307878;
	prcm_ctt_reg_table[i++].addr = 0x4a307888;
	prcm_ctt_reg_table[i++].addr = 0x4a307a00;
	prcm_ctt_reg_table[i++].addr = 0x4a307a08;
	prcm_ctt_reg_table[i++].addr = 0x4a307a20;
	prcm_ctt_reg_table[i++].addr = 0x4a30a000;
	prcm_ctt_reg_table[i++].addr = 0x4a30a100;
	prcm_ctt_reg_table[i++].addr = 0x4a30a104;
	prcm_ctt_reg_table[i++].addr = 0x4a30a110;
	prcm_ctt_reg_table[i++].addr = 0x4a30a11c;
	prcm_ctt_reg_table[i++].addr = 0x4a30a204;
	prcm_ctt_reg_table[i++].addr = 0x4a30a208;
	prcm_ctt_reg_table[i++].addr = 0x4a30a210;
	prcm_ctt_reg_table[i++].addr = 0x4a30a214;
	prcm_ctt_reg_table[i++].addr = 0x4a30a218;
	prcm_ctt_reg_table[i++].addr = 0x4a30a21c;
	prcm_ctt_reg_table[i++].addr = 0x4a30a220;
	prcm_ctt_reg_table[i++].addr = 0x4a30a224;
	prcm_ctt_reg_table[i++].addr = 0x4a30a234;
	prcm_ctt_reg_table[i++].addr = 0x4a30a310;
	prcm_ctt_reg_table[i++].addr = 0x4a30a314;
	prcm_ctt_reg_table[i++].addr = 0x4a30a318;
	prcm_ctt_reg_table[i++].addr = 0x4a30a31c;
	prcm_ctt_reg_table[i++].addr = 0x4a30a320;
	prcm_ctt_reg_table[i++].addr = 0x4a30a324;
	prcm_ctt_reg_table[i++].addr = 0x4a30a400;
	prcm_ctt_reg_table[i++].addr = 0x4a30a41c;
	prcm_ctt_reg_table[i++].addr = 0x4a30a420;
	prcm_ctt_reg_table[i++].addr = 0x4a30a510;
	prcm_ctt_reg_table[i++].addr = 0x4a30a514;
	prcm_ctt_reg_table[i++].addr = 0x4a30a51c;
	prcm_ctt_reg_table[i].addr = 0;

	dprintf("prcm_ctt_reg_table last index=%d, size=%d\n", i, i + 1);

	return 0;
}
Exemple #26
0
/**
 * Function: dpll44xx_init_regtable
 * Role: initialize .addr field of reg_table (not possible statically)
 * Parameters:
 *	none
 * Return:
 *	0
 *	OMAPCONF_ERR_CPU
 */
int dpll44xx_init_regtable(void)
{
	unsigned int i = 0;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (dpll44xx_prcm_reg_table_init_done == 1)
		return 0;

	/* Init DPLLs registers table */
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKMODE_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKMODE_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_IDLEST_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_IDLEST_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_AUTOIDLE_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_AUTOIDLE_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKSEL_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKSEL_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M2_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M2_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M3_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M3_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M4_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M4_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M5_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M5_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M6_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M6_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M7_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M7_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_DELTAMSTEP_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_DELTAMSTEP_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_MODFREQDIV_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_MODFREQDIV_DPLL_CORE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_EMU_OVERRIDE_DPLL_CORE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_EMU_OVERRIDE_DPLL_CORE");

	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKMODE_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKMODE_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_IDLEST_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_IDLEST_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_AUTOIDLE_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_AUTOIDLE_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKSEL_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKSEL_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M2_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M2_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M3_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M3_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M4_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M4_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M5_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M5_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M6_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M6_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M7_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M7_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_DELTAMSTEP_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_DELTAMSTEP_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_MODFREQDIV_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_MODFREQDIV_DPLL_PER");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_EMU_OVERRIDE_DPLL_PER;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_EMU_OVERRIDE_DPLL_PER");

	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKMODE_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKMODE_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_IDLEST_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_IDLEST_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_AUTOIDLE_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_AUTOIDLE_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKSEL_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKSEL_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M2_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M2_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_DELTAMSTEP_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_DELTAMSTEP_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_MODFREQDIV_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_MODFREQDIV_DPLL_MPU");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_BYPCLK_DPLL_MPU;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_BYPCLK_DPLL_MPU");

	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKMODE_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKMODE_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_IDLEST_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_IDLEST_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_AUTOIDLE_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_AUTOIDLE_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKSEL_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKSEL_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M4_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M4_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M5_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M5_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_DELTAMSTEP_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_DELTAMSTEP_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_MODFREQDIV_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_MODFREQDIV_DPLL_IVA");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_BYPCLK_DPLL_IVA;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_BYPCLK_DPLL_IVA");

	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKMODE_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKMODE_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_IDLEST_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_IDLEST_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_AUTOIDLE_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_AUTOIDLE_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKSEL_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKSEL_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M2_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M2_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M3_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M3_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_DELTAMSTEP_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_DELTAMSTEP_DPLL_ABE");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_MODFREQDIV_DPLL_ABE;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_MODFREQDIV_DPLL_ABE");

	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKMODE_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKMODE_DPLL_USB");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_IDLEST_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_IDLEST_DPLL_USB");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_AUTOIDLE_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_AUTOIDLE_DPLL_USB");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_CLKSEL_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_CLKSEL_DPLL_USB");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_DIV_M2_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_DIV_M2_DPLL_USB");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_DELTAMSTEP_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_DELTAMSTEP_DPLL_USB");
	dpll44xx_prcm_reg_table[i].addr = OMAP4430_CM_SSC_MODFREQDIV_DPLL_USB;
	strcpy(dpll44xx_prcm_reg_table[i++].name, "CM_SSC_MODFREQDIV_DPLL_USB");

	if (cpu_is_omap4430() && (cpu_revision_get() == REV_ES1_0)) {
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_CLKMODE_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_CLKMODE_DPLL_UNIPRO");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_IDLEST_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_IDLEST_DPLL_UNIPRO");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_AUTOIDLE_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_AUTOIDLE_DPLL_UNIPRO");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_CLKSEL_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_CLKSEL_DPLL_UNIPRO");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_DIV_M2_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_DIV_M2_DPLL_UNIPRO");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_SSC_DELTAMSTEP_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_SSC_DELTAMSTEP_DPLL_UNIPRO");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_SSC_MODFREQDIV_DPLL_UNIPRO;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_SSC_MODFREQDIV_DPLL_UNIPRO");

		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_CLKMODE_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_CLKMODE_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_IDLEST_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_IDLEST_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_AUTOIDLE_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_AUTOIDLE_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_CLKSEL_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_CLKSEL_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_DIV_M2_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_DIV_M2_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_DIV_M4_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_DIV_M4_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_DIV_M5_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_DIV_M5_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_DIV_M6_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_DIV_M6_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_SSC_DELTAMSTEP_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_SSC_DELTAMSTEP_DPLL_DDRPHY");
		dpll44xx_prcm_reg_table[i].addr =
			OMAP4430_CM_SSC_MODFREQDIV_DPLL_DDRPHY;
		strcpy(dpll44xx_prcm_reg_table[i++].name,
			"CM_SSC_MODFREQDIV_DPLL_DDRPHY");
	}
	dpll44xx_prcm_reg_table[i].addr = 0;
	strcpy(dpll44xx_prcm_reg_table[i].name, "END");

	dpll44xx_prcm_reg_table_init_done = 1;
	return 0;
}
Exemple #27
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		core44xx_config_show
 * @BRIEF		analyze CORE power configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @param[in,out]	stream: output file stream
 * @DESCRIPTION		analyze CORE power configuration
 *//*------------------------------------------------------------------------ */
int core44xx_config_show(FILE *stream)
{
	unsigned int pm_pwstctrl;
	unsigned int pm_pwstst;
	unsigned int cm_clkstctrl;
	unsigned int cm_clkctrl;
	unsigned int rm_context;
	int ret = 0;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (!init_done)
		core44xx_regtable_init();

	/* CORE Domain Power Configuration */
	if (mem_read(OMAP4430_PM_CORE_PWRSTCTRL, &pm_pwstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_PM_CORE_PWRSTST, &pm_pwstst) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = pwrdm44xx_config_show(stream, "CORE",
		OMAP4430_PM_CORE_PWRSTCTRL, pm_pwstctrl,
		OMAP4430_PM_CORE_PWRSTST, pm_pwstst);
	if (ret != 0)
		return ret;

	/* L3_1 Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_L3_1_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "L3_1",
		OMAP4430_CM_L3_1_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* L3_1 Module Power Configuration */
	if (mem_read(OMAP4430_CM_L3_1_L3_1_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3_1_L3_1_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "L3_1",
		OMAP4430_CM_L3_1_L3_1_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3_1_L3_1_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* L3_2 Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_L3_2_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "L3_2",
		OMAP4430_CM_L3_2_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* L3_2 Modules Power Configuration */
	if (mem_read(OMAP4430_CM_L3_2_L3_2_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3_2_L3_2_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "L3_2",
		OMAP4430_CM_L3_2_L3_2_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3_2_L3_2_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L3_2_GPMC_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3_2_GPMC_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "GPMC",
		OMAP4430_CM_L3_2_GPMC_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3_2_GPMC_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L3_2_OCMC_RAM_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3_2_OCMC_RAM_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "OCMC_RAM",
		OMAP4430_CM_L3_2_OCMC_RAM_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3_2_OCMC_RAM_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* MPU_M3 Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_MPU_M3_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "MPU_M3",
		OMAP4430_CM_MPU_M3_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* MPU_M3 Module Power Configuration */
	if (mem_read(OMAP4430_CM_MPU_M3_MPU_M3_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_MPU_M3_MPU_M3_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "MPU_M3",
		OMAP4430_CM_MPU_M3_MPU_M3_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_MPU_M3_MPU_M3_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* SDMA Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_SDMA_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "SDMA",
		OMAP4430_CM_SDMA_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* SDMA Module Power Configuration */
	if (mem_read(OMAP4430_CM_SDMA_SDMA_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_SDMA_SDMA_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "SDMA",
		OMAP4430_CM_SDMA_SDMA_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_SDMA_SDMA_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* MEMIF Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_MEMIF_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "MEMIF",
		OMAP4430_CM_MEMIF_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* MEMIF Modules Power Configuration */
	if (mem_read(OMAP4430_CM_MEMIF_DMM_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_MEMIF_DMM_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "DMM",
		OMAP4430_CM_MEMIF_DMM_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_MEMIF_DMM_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_MEMIF_EMIF_FW_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_MEMIF_EMIF_FW_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "EMIF_FW",
		OMAP4430_CM_MEMIF_EMIF_FW_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_MEMIF_EMIF_FW_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_MEMIF_EMIF_1_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_MEMIF_EMIF_1_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "EMIF_1",
		OMAP4430_CM_MEMIF_EMIF_1_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_MEMIF_EMIF_1_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_MEMIF_EMIF_2_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_MEMIF_EMIF_2_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "EMIF_2",
		OMAP4430_CM_MEMIF_EMIF_2_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_MEMIF_EMIF_2_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_MEMIF_DLL_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_MEMIF_DLL_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "DLL",
		OMAP4430_CM_MEMIF_DLL_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_MEMIF_DLL_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* C2C Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_C2C_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "C2C",
		OMAP4430_CM_C2C_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* C2C Modules Power Configuration */
	if (mem_read(OMAP4430_CM_C2C_C2C_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_C2C_C2C_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "C2C",
		OMAP4430_CM_C2C_C2C_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_C2C_C2C_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_C2C_MODEM_ICR_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_C2C_MODEM_ICR_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "MODEM_ICR",
		OMAP4430_CM_C2C_MODEM_ICR_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_C2C_MODEM_ICR_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_C2C_C2C_FW_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_C2C_C2C_FW_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "C2C_FW",
		OMAP4430_CM_C2C_C2C_FW_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_C2C_C2C_FW_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* L4CFG Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_L4CFG_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "L4CFG",
		OMAP4430_CM_L4CFG_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* L4CFG Modules Power Configuration */
	if (mem_read(OMAP4430_CM_L4CFG_L4_CFG_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L4CFG_L4_CFG_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "L4_CFG",
		OMAP4430_CM_L4CFG_L4_CFG_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L4CFG_L4_CFG_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L4CFG_HW_SEM_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L4CFG_HW_SEM_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "HW_SEM",
		OMAP4430_CM_L4CFG_HW_SEM_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L4CFG_HW_SEM_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L4CFG_MAILBOX_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L4CFG_MAILBOX_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "MAILBOX",
		OMAP4430_CM_L4CFG_MAILBOX_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L4CFG_MAILBOX_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L4CFG_SAR_ROM_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L4CFG_SAR_ROM_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "SAR_ROM",
		OMAP4430_CM_L4CFG_SAR_ROM_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L4CFG_SAR_ROM_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	/* L3INSTR Clock Domain Configuration */
	if (mem_read(OMAP4430_CM_L3INSTR_CLKSTCTRL, &cm_clkstctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = clkdm44xx_config_show(stream, "L3INSTR",
		OMAP4430_CM_L3INSTR_CLKSTCTRL, cm_clkstctrl);
	if (ret != 0)
		return ret;
	/* L3INSTR Modules Power Configuration */
	if (mem_read(OMAP4430_CM_L3INSTR_L3_3_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3INSTR_L3_3_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "L3_3",
		OMAP4430_CM_L3INSTR_L3_3_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3INSTR_L3_3_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3INSTR_L3_INSTR_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "L3_INSTR",
		OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3INSTR_L3_INSTR_CONTEXT, rm_context);
	if (ret != 0)
		return ret;

	if (mem_read(OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL, &cm_clkctrl) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	if (mem_read(OMAP4430_RM_L3INSTR_OCP_WP1_CONTEXT, &rm_context) != 0)
		return OMAPCONF_ERR_REG_ACCESS;
	ret = mod44xx_config_show(stream, "OCP_WP1",
		OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL, cm_clkctrl,
		OMAP4430_RM_L3INSTR_OCP_WP1_CONTEXT, rm_context);
	if (ret != 0)
		return ret;
	return 0;
}
Exemple #28
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		temp54xx_get
 * @BRIEF		return temperature measured by selected sensor
 *			(in degrees celcius)
 * @RETURNS		measured temperature in case of success
 *			TEMP_ABSOLUTE_ZERO (-273) in case of error
 * @param[in]		id: ADC temperature sensor id
 * @param[in, out]	temp: temperature (Celcius, min) (returned)
 * @DESCRIPTION		return temperature measured by selected sensor
 *			(in degrees celcius)
 *//*------------------------------------------------------------------------ */
int temp54xx_get(temp54xx_sensor_id id)
{
	int temp, ret;
	char line[256];
	unsigned int i;
	FILE *fp = NULL;
	static const char *sensor_filenames1[TEMP54XX_ID_MAX] = {
		"/sys/kernel/debug/thermal_debug/devices/omap_cpu_sensor/temperature",
		"/sys/kernel/debug/thermal_debug/devices/omap_cpu_governor/hotspot_temp",
		"/sys/kernel/debug/thermal_debug/devices/omap_gpu_sensor/temperature",
		"/sys/kernel/debug/thermal_debug/devices/omap_gpu_governor/hotspot_temp",
		"/sys/kernel/debug/thermal_debug/devices/omap_core_sensor/temperature",
		"/sys/kernel/debug/emif.1/mr4",
		"/sys/kernel/debug/emif.2/mr4",
		"/sys/kernel/debug/thermal_debug/devices/tmp102_temp_sensor.72/temperature",
		"/sys/kernel/debug/thermal_debug/devices/tmp006_sensor/temperature",
		"/sys/kernel/debug/thermal_debug/devices/tmp102_temp_sensor.73/temperature"};
	static const char *sensor_filenames2[TEMP54XX_ID_MAX] = {
		"/sys/devices/platform/omap/omap_temp_sensor.0/temp1_input",
		"/sys/kernel/debug/thermal_debug/devices/omap_cpu_governor/hotspot_temp",
		"/sys/devices/platform/omap/omap_temp_sensor.1/temp1_input",
		"/sys/kernel/debug/thermal_debug/devices/omap_gpu_governor/hotspot_temp",
		"/sys/devices/platform/omap/omap_temp_sensor.2/temp1_input",
		"/sys/kernel/debug/emif.1/mr4",
		"/sys/kernel/debug/emif.2/mr4",
		"/sys/kernel/debug/thermal_debug/devices/tmp102_temp_sensor.72/temperature",
		"/sys/kernel/debug/thermal_debug/devices/tmp006_sensor/temperature",
		"/sys/kernel/debug/thermal_debug/devices/tmp102_temp_sensor.73/temperature"};
	static const char *sensor_filenames3[TEMP54XX_ID_MAX] = {
		"/sys/devices/platform/omap/omap4plus_scm.0/temp_sensor_hwmon.0/temp1_input",
		"/sys/kernel/debug/thermal_debug/devices/omap_cpu_governor/hotspot_temp",
		"/sys/devices/platform/omap/omap4plus_scm.0/temp_sensor_hwmon.1/temp1_input",
		"/sys/kernel/debug/thermal_debug/devices/omap_gpu_governor/hotspot_temp",
		"/sys/devices/platform/omap/omap4plus_scm.0/temp_sensor_hwmon.2/temp1_input",
		"/sys/kernel/debug/emif.1/mr4",
		"/sys/kernel/debug/emif.2/mr4",
		"/sys/kernel/debug/thermal_debug/devices/tmp102_temp_sensor.72/temperature",
		"/sys/kernel/debug/thermal_debug/devices/tmp006_sensor/temperature",
		"/sys/kernel/debug/thermal_debug/devices/tmp102_temp_sensor.73/temperature"};
	static const char **sensor_filenames_list[3] = {
		sensor_filenames1,
		sensor_filenames2,
		sensor_filenames3};

	CHECK_CPU(54xx, TEMP_ABSOLUTE_ZERO);
	CHECK_ARG_LESS_THAN(id, TEMP54XX_ID_MAX, TEMP_ABSOLUTE_ZERO);

	/* Open file exported by temp. sensor driver (if loaded) */
	for (i = 0; i < 3; i++) {
		dprintf("%s(): i=%u id=%u filename=%s\n", __func__, i, id,
			(char *) sensor_filenames_list[i][id]);
		fp = fopen((char *) sensor_filenames_list[i][id], "r");
		if (fp != NULL)
			break;
	}
	if (fp == NULL) {
		dprintf("%s(): could not open %s file!\n", __func__,
			temp54xx_name_get(id));
		temp = TEMP_ABSOLUTE_ZERO;
		goto temp54xx_get_end;
	}

	/* Read file */
	if (fgets(line, 256, fp) == NULL) {
		fclose(fp);
		dprintf("%s(): fgets() returned NULL!\n", __func__);
		temp = TEMP_ABSOLUTE_ZERO;
		goto temp54xx_get_end;
	}
	fclose(fp);

	/* Remove endind '\n' */
	line[strlen(line) - 1] = '\0';
	dprintf("%s(): line=%s len=%u\n", __func__, line, strlen(line));
	if ((id != TEMP54XX_EMIF1) && (id != TEMP54XX_EMIF2)) {
		/* Retrieve temperature, in millidegrees celcius */
		ret = sscanf(line, "%d", &temp);
		if (ret != 1) {
			dprintf("%s(): sscanf() returned %d!\n", __func__, ret);
			temp = TEMP_ABSOLUTE_ZERO;
			goto temp54xx_get_end;
		}

		temp = temp / 1000; /* convert to degrees */
	} else {
		/* Retrieve temperature as MR4 code */
		ret = sscanf(line, "MR4=%d", &temp);
		if (ret != 1) {
			dprintf("%s(): sscanf() returned %d!\n", __func__, ret);
			temp = TEMP_ABSOLUTE_ZERO;
			goto temp54xx_get_end;
		}
	}

temp54xx_get_end:
	if ((id != TEMP54XX_EMIF1) && (id != TEMP54XX_EMIF2)) {
		dprintf("%s(%s): temp is %d C\n", __func__,
			temp54xx_name_get(id), temp);
	} else {
		dprintf("%s(%s): temp is %s\n", __func__,
			temp54xx_name_get(id),
			emif_mr4_convert(temp, TEMP_CELCIUS_DEGREES));
	}
	return temp;
}
Exemple #29
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		vc44xx_config_show
 * @BRIEF		decode and show VC current configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @param[in,out]	stream: output file (NULL: no output (silent))
 * @param[in,out]	vc_regs: Voltage Controller registers content
 * @DESCRIPTION		decode and show VC current configuration
 *//*------------------------------------------------------------------------ */
int vc44xx_config_show(FILE *stream, vc44xx_registers *vc_regs)
{
	voltdm44xx_id id;
	unsigned char raw_cmd_on, raw_cmd_onlp, raw_cmd_ret, raw_cmd_off;
	unsigned char cmd_on, cmd_onlp, cmd_ret, cmd_off;
	char table[TABLE_MAX_ROW][TABLE_MAX_COL][TABLE_MAX_ELT_LEN];
	unsigned int row = 0;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	row = 0;
	autoadjust_table_init(table);
	autoadjust_table_strncpy(table, row, 0, "PRM VC Configuration");
	autoadjust_table_strncpy(table, row, 1, "VC_MPU");
	autoadjust_table_strncpy(table, row, 2, "VC_IVA");
	autoadjust_table_strncpy(table, row, 3, "VC_CORE");
	row++;

	for (id = OMAP4_VDD_MPU; id <= OMAP4_VDD_CORE; id++) {
		row = 1;
		autoadjust_table_strncpy(table, row, 0,
			"Power IC Slave Address (SA)");
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X",
			vc44xx_sa_get(id, vc_regs->prm_vc_smps_sa,
				vc_regs->prm_vc_cfg_channel));
		row++;

		autoadjust_table_strncpy(table, row, 0,
			"Voltage Reg. Addr (VOLRA)");
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X",
			vc44xx_volra_get(id, vc_regs->prm_vc_cfg_channel,
				vc_regs->prm_vc_smps_ra_vol));
		row++;

		autoadjust_table_strncpy(table, row, 0,
			"Command Reg. Addr (CMDRA)");
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X",
			vc44xx_cmdra_get(id, vc_regs->prm_vc_cfg_channel,
				vc_regs->prm_vc_val_smps_ra_cmd));
		row++;

		autoadjust_table_strncpy(table, row++, 0,
			"Command Values:");
		vc44xx_raw_cmd_values_get(id, vc_regs,
			&raw_cmd_on, &raw_cmd_onlp, &raw_cmd_ret, &raw_cmd_off);
		vc44xx_cmd_values_get(id, vc_regs,
			&cmd_on, &cmd_onlp, &cmd_ret, &cmd_off);
		strncpy(table[row][0], "  ON", TABLE_MAX_ELT_LEN);
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X (%.6lfV)",
			raw_cmd_on, smps_vsel2volt(vdd_id2smps_id(id), cmd_on));
		row++;

		autoadjust_table_strncpy(table, row, 0,
			"  ON-Low-Power (ONLP)");
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X (%.6lfV)",
			raw_cmd_onlp,
			smps_vsel2volt(vdd_id2smps_id(id), cmd_onlp));
		row++;

		autoadjust_table_strncpy(table, row, 0, "  RET");
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X (%.6lfV)",
			raw_cmd_ret,
			smps_vsel2volt(vdd_id2smps_id(id), cmd_ret));
		row++;

		autoadjust_table_strncpy(table, row, 0, "  OFF");
		snprintf(table[row][id], TABLE_MAX_ELT_LEN, "0x%02X (%.6lfV)",
			raw_cmd_off,
			smps_vsel2volt(vdd_id2smps_id(id), cmd_off));
		row++;

	}

	if (stream != NULL)
		autoadjust_table_fprint(stream, table, row, 4);

	return 0;
}
Exemple #30
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		core44xx_dependency_show
 * @BRIEF		analyse CORE dependency configuration
 * @RETURNS		0 in case of success
 *			OMAPCONF_ERR_CPU
 *			OMAPCONF_ERR_REG_ACCESS
 * @param[in, out]	stream: output file stream
 * @DESCRIPTION		analyse CORE dependency configuration
 *//*------------------------------------------------------------------------ */
int core44xx_dependency_show(FILE *stream)
{
	unsigned int cm_l3_1_dynamicdep;
	unsigned int cm_l3_2_dynamicdep;
	unsigned int cm_mpu_m3_staticdep;
	unsigned int cm_mpu_m3_dynamicdep;
	unsigned int cm_sdma_staticdep;
	unsigned int cm_sdma_dynamicdep;
	unsigned int cm_c2c_staticdep;
	unsigned int cm_c2c_dynamicdep;
	unsigned int cm_l4cfg_dynamicdep;
	int ret;

	CHECK_CPU(44xx, OMAPCONF_ERR_CPU);

	if (!init_done)
		core44xx_regtable_init();

	ret = mem_read(OMAP4430_CM_L3_1_DYNAMICDEP, &cm_l3_1_dynamicdep);
	ret += mem_read(OMAP4430_CM_L3_2_DYNAMICDEP, &cm_l3_2_dynamicdep);
	ret += mem_read(OMAP4430_CM_MPU_M3_STATICDEP, &cm_mpu_m3_staticdep);
	ret += mem_read(OMAP4430_CM_MPU_M3_DYNAMICDEP, &cm_mpu_m3_dynamicdep);
	ret += mem_read(OMAP4430_CM_SDMA_STATICDEP, &cm_sdma_staticdep);
	ret += mem_read(OMAP4430_CM_SDMA_DYNAMICDEP, &cm_sdma_dynamicdep);
	ret += mem_read(OMAP4430_CM_C2C_STATICDEP, &cm_c2c_staticdep);
	ret += mem_read(OMAP4430_CM_C2C_DYNAMICDEP, &cm_c2c_dynamicdep);
	ret += mem_read(OMAP4430_CM_L4CFG_DYNAMICDEP, &cm_l4cfg_dynamicdep);
	if (ret != 0)
		return OMAPCONF_ERR_REG_ACCESS;

	fprintf(stream,
		"|-------------------------------------------------------------"
		"-------------|\n");
	fprintf(stream,
		"| CORE Domain Dependency Configuration (Static/Dynamic)       "
		"             |\n");
	fprintf(stream,
		"|-------------------------------------------------------------"
		"-------------|\n");
	fprintf(stream,
		"|              |                           FROM:              "
		"             |\n");
	fprintf(stream,
		"|              |  L3_1   |  L3_2   | MPU_M3  |  SDMA   |   C2C"
		"   |  L4CFG  |\n");
	fprintf(stream,
		"|              |Stat|Dyn |Stat|Dyn |Stat|Dyn |Stat|Dyn |Stat|"
		"Dyn |Stat|Dyn |\n");
	fprintf(stream,
		"|-------------------------------------------------------------"
		"-------------|\n");
	fprintf(stream,
		"|    TOWARDS:  |    |    |    |    |    |    |    |    |    | "
		"   |    |    |\n");
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"MPU_M3",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 0) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 0) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"DSP",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 1) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 1) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"IVAHD",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 2) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 2) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 2) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 2) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"ABE",
		"", /* not implemented */
		((extract_bit(cm_l3_1_dynamicdep, 3) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 3) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 3) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 3) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"MEM IF",
		"", /* not implemented */
		((extract_bit(cm_l3_1_dynamicdep, 4) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 4) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 4) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 4) == 1) ? "En" : "Dis"),
		((extract_bit(cm_c2c_dynamicdep, 4) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 4) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L3_1",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 5) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 5) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 5) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 5) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 5) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L3_2",
		"", /* not implemented */
		((extract_bit(cm_l3_1_dynamicdep, 6) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 6) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_dynamicdep, 6) == 1) ? "En" : "Dis"),
		((extract_bit(cm_sdma_staticdep, 6) == 1) ? "En" : "Dis"),
		((extract_bit(cm_sdma_dynamicdep, 6) == 1) ? "En" : "Dis"),
		((extract_bit(cm_c2c_staticdep, 6) == 1) ? "En" : "Dis"),
		((extract_bit(cm_c2c_dynamicdep, 6) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 6) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L3INIT",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 7) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 7) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 7) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 7) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 7) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"DSS",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 8) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 8) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 8) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 8) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"ISS",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 9) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 9) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_dynamicdep, 9) == 1) ? "En" : "Dis"),
		((extract_bit(cm_sdma_staticdep, 9) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 9) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"GFX",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 10) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 10) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"SDMA",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 11) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 11) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L4CFG",
		"", /* not implemented */
		((extract_bit(cm_l3_1_dynamicdep, 12) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 12) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 12) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 12) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L4PER",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 13) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 13) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 13) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_c2c_staticdep, 13) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L4SEC",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 14) == 1) ? "En" : "Dis"),
		((extract_bit(cm_mpu_m3_staticdep, 14) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 14) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"" /* not implemented */);
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"L4WKUP",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 15) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		((extract_bit(cm_sdma_staticdep, 15) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 15) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"ALWONCORE",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 16) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 16) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"CEFUSE",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_mpu_m3_staticdep, 17) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 17) == 1) ? "En" : "Dis"));
	fprintf(stream,
		"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s"
		"|%-3s | %-3s|%-3s |\n",
		"C2C",
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l3_2_dynamicdep, 18) == 1) ? "En" : "Dis"),
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		"", /* not implemented */
		((extract_bit(cm_l4cfg_dynamicdep, 18) == 1) ? "En" : "Dis"));
	if (!cpu_is_omap4430())
		fprintf(stream,
			"| %-12s | %-3s|%-3s | %-3s|%-3s | %-3s|%-3s | %-3s|"
			"%-3s | %-3s|%-3s | %-3s|%-3s |\n",
			"MPU",
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			"", /* not implemented */
			((extract_bit(cm_l4cfg_dynamicdep, 19) == 1) ?
				"En" : "Dis"));

	fprintf(stream,
		"|-------------------------------------------------------------"
		"-------------|\n");
	fprintf(stream,
		"| Dynamic Dep  |         |         |         |         |      "
		"   |         |\n");
	fprintf(stream,
		"| %-12s |      %-2d |      %-2d |     %-2d  |         |      "
		"%-2d |      %-2d |\n",
		"Window Size",
		extract_bitfield(cm_l3_1_dynamicdep, 24, 4),
		extract_bitfield(cm_l3_2_dynamicdep, 24, 4),
		extract_bitfield(cm_mpu_m3_dynamicdep, 24, 4),
		extract_bitfield(cm_c2c_dynamicdep, 24, 4),
		extract_bitfield(cm_l4cfg_dynamicdep, 24, 4));
	fprintf(stream,
		"|------------------------------------------------------------"
		"--------------|\n\n");

	return 0;
}