static int arm_cmn_map_show()

in arm-cmn.c [411:472]


static int arm_cmn_map_show(struct seq_file *s, void *data)
{
	struct arm_cmn *cmn = s->private;
	int x, y, p, pmax = fls(cmn->ports_used);

	seq_puts(s, "     X");
	for (x = 0; x < cmn->mesh_x; x++)
		seq_printf(s, "    %d    ", x);
	seq_puts(s, "\nY P D+");
	y = cmn->mesh_y;
	while (y--) {
		int xp_base = cmn->mesh_x * y;
		u8 port[6][CMN_MAX_DIMENSION];

		for (x = 0; x < cmn->mesh_x; x++)
			seq_puts(s, "--------+");

		seq_printf(s, "\n%d    |", y);
		for (x = 0; x < cmn->mesh_x; x++) {
			struct arm_cmn_node *xp = cmn->xps + xp_base + x;
			void __iomem *base = xp->pmu_base - CMN_PMU_OFFSET;

			port[0][x] = readl_relaxed(base + CMN_MXP__CONNECT_INFO_P0);
			port[1][x] = readl_relaxed(base + CMN_MXP__CONNECT_INFO_P1);
			port[2][x] = readl_relaxed(base + CMN_MXP__CONNECT_INFO_P2);
			port[3][x] = readl_relaxed(base + CMN_MXP__CONNECT_INFO_P3);
			port[4][x] = readl_relaxed(base + CMN_MXP__CONNECT_INFO_P4);
			port[5][x] = readl_relaxed(base + CMN_MXP__CONNECT_INFO_P5);
			seq_printf(s, " XP #%-2d |", xp_base + x);
		}

		seq_puts(s, "\n     |");
		for (x = 0; x < cmn->mesh_x; x++) {
			u8 dtc = cmn->xps[xp_base + x].dtc;

			if (dtc & (dtc - 1))
				seq_puts(s, " DTC ?? |");
			else
				seq_printf(s, " DTC %ld  |", __ffs(dtc));
		}
		seq_puts(s, "\n     |");
		for (x = 0; x < cmn->mesh_x; x++)
			seq_puts(s, "........|");

		for (p = 0; p < pmax; p++) {
			seq_printf(s, "\n  %d  |", p);
			for (x = 0; x < cmn->mesh_x; x++)
				seq_puts(s, arm_cmn_device_type(port[p][x]));
			seq_puts(s, "\n    0|");
			for (x = 0; x < cmn->mesh_x; x++)
				arm_cmn_show_logid(s, x, y, p, 0);
			seq_puts(s, "\n    1|");
			for (x = 0; x < cmn->mesh_x; x++)
				arm_cmn_show_logid(s, x, y, p, 1);
		}
		seq_puts(s, "\n-----+");
	}
	for (x = 0; x < cmn->mesh_x; x++)
		seq_puts(s, "--------+");
	seq_puts(s, "\n");
	return 0;
}