Ejemplo n.º 1
0
void tegra_init_emc(const struct tegra_emc_chip *chips, int chips_size)
{
	int i;
	int vid;
	int rev_id1;
	int rev_id2;
	int pid;
	int chip_matched = -1;

	vid = tegra_emc_read_mrr(5);
	rev_id1 = tegra_emc_read_mrr(6);
	rev_id2 = tegra_emc_read_mrr(7);
	pid = tegra_emc_read_mrr(8);

	for (i = 0; i < chips_size; i++) {
		if (chips[i].mem_manufacturer_id >= 0) {
			if (chips[i].mem_manufacturer_id != vid)
				continue;
		}
		if (chips[i].mem_revision_id1 >= 0) {
			if (chips[i].mem_revision_id1 != rev_id1)
				continue;
		}
		if (chips[i].mem_revision_id2 >= 0) {
			if (chips[i].mem_revision_id2 != rev_id2)
				continue;
		}
		if (chips[i].mem_pid >= 0) {
			if (chips[i].mem_pid != pid)
				continue;
		}

		chip_matched = i;
		break;
	}

	if (chip_matched >= 0) {
		pr_info("%s: %s memory found\n", __func__,
			chips[chip_matched].description);
		tegra_emc_table = chips[chip_matched].table;
		tegra_emc_table_size = chips[chip_matched].table_size;

		tegra_emc_min_bus_rate = tegra_emc_table[0].rate * 2 * 1000;
		tegra_emc_max_bus_rate = tegra_emc_table[tegra_emc_table_size - 1].rate * 2 * 1000;

	} else {
		pr_err("%s: Memory not recognized, memory scaling disabled\n",
			__func__);
		pr_info("%s: Memory vid     = 0x%04x", __func__, vid);
		pr_info("%s: Memory rev_id1 = 0x%04x", __func__, rev_id1);
		pr_info("%s: Memory rev_id2 = 0x%04x", __func__, rev_id2);
		pr_info("%s: Memory pid     = 0x%04x", __func__, pid);
	}
}
Ejemplo n.º 2
0
static void tegra_emc_match_chip_data(struct platform_device *pdev)
{
	int i;
	int vid;
	int rev_id1;
	int rev_id2;
	int pid;
	struct tegra_emc_pdata *pchips = pdev->dev.platform_data;
	int chips_size = pchips->num_tables;

	vid = tegra_emc_read_mrr(5);
	rev_id1 = tegra_emc_read_mrr(6);
	rev_id2 = tegra_emc_read_mrr(7);
	pid = tegra_emc_read_mrr(8);

	for (i = 0; i < chips_size; i++) {
		if (pchips[i].mem_manufacturer_id >= 0) {
			if (pchips[i].mem_manufacturer_id != vid)
				continue;
		}
		if (pchips[i].mem_revision_id1 >= 0) {
			if (pchips[i].mem_revision_id1 != rev_id1)
				continue;
		}
		if (pchips[i].mem_revision_id2 >= 0) {
			if (pchips[i].mem_revision_id2 != rev_id2)
				continue;
		}
		if (pchips[i].mem_pid >= 0) {
			if (pchips[i].mem_pid != pid)
				continue;
		}

		pr_info("%s: %s memory found\n", __func__,
			pchips[i].description);
		tegra_emc_table = pchips[i].tables;
		tegra_emc_table_size = pchips[i].num_tables;

		tegra_emc_min_bus_rate = tegra_emc_table[0].rate * 2 * 1000;
		tegra_emc_max_bus_rate = tegra_emc_table[tegra_emc_table_size - 1].rate * 2 * 1000;
		goto out;
	}

	pr_err("%s: Memory not recognized, memory scaling disabled\n",
		__func__);
out:
	pr_info("%s: Memory vid     = 0x%04x", __func__, vid);
	pr_info("%s: Memory rev_id1 = 0x%04x", __func__, rev_id1);
	pr_info("%s: Memory rev_id2 = 0x%04x", __func__, rev_id2);
	pr_info("%s: Memory pid     = 0x%04x", __func__, pid);
}