Example #1
0
void
miiinit(int pa)
{
	u16 v;

	readr(pa, Rstatus, &v);
	v = (v & Msana) != 0;
	seroutf("PHY(0x%X) Auto negotiation ability(0x%X)\r\n", pa, v);

	readr(pa, Ranadv, &v);
	writer(pa, Ranadv, defanadv(v));

	writer(pa, Rctl, Mcrsan | Mcanen);
	do {
		readr(pa, Rctl, &v);
	} while ((v & Mcrsan) != 0);
	seroutf("PHY(0x%X) Auto negotiation done\r\n", pa);

	do {
		v = 0;
		readr(pa, Rstatus, &v);
	} while (!(v & Mstancmp));
	seroutf("PHY(0x%X) status(0x%X)\r\n", pa, v);

	v = 0;
	readr(pa, Ranlpa, &v);
	seroutf("PHY(0x%X) auto neg link partner ability(0x%X)\r\n", pa, v);
}
Example #2
0
void
miidbg(int pa)
{
	u16 v, v1;
	readr(pa, Rphysts, &v);
	readr(pa, Rmicr, &v1);
	seroutf("PHY S:I]0x%X,0x%X\r\n", v, v1);
}
Example #3
0
void
miiresetphy(int pa)
{
	u16 v;

	writer(pa, Rctl, Mcreset);
	do {
		readr(pa, Rctl, &v);
	} while ((v & Mcreset) == 0);
	writer(pa, Rrbr, Vrbr);
}
Example #4
0
int main() {
	int n, q, z = 1, x, y, ans, t, m, i;
	n = read_int();
	q = read_int();
	//scanf("%d%d", &n, &q);
	char s[10];
	max = q;
	for(z = 1; z <= q; z++) {
		scanf("%s", s);
		if(strcmp(s, "ColSet") == 0) {
			//scanf("%d%d", &x, &y);
			x = read_int();
			y = read_int();
			if(cs0[x]||cs1[x])
			if(cs0[x] > cs1[x])updatec(0, cs0[x], -1);
			else updatec(1, cs1[x], -1);
			if(y == 0) {
				cs0[x] = z;
				updatec(0, cs0[x], 1);
			}
			else {
				cs1[x] = z;
				updatec(1, cs1[x], 1);
			}
		}
		else if(strcmp(s, "RowSet") == 0) {
			//scanf("%d%d", &x, &y);
			x = read_int();
			y = read_int();
			if(rs0[x]||rs1[x])
			if(rs0[x] > rs1[x])updater(0, rs0[x], -1);
			else updater(1, rs1[x], -1);
			if(y == 0) {
				rs0[x] = z;
				updater(0, rs0[x], 1);
			}
			else {
				rs1[x] = z;
				updater(1, rs1[x], 1);
			}
		}
		else if(strcmp(s, "RowQuery") == 0) {
			//scanf("%d", &x);
			x = read_int();
			if(rs0[x] >= rs1[x]) {
				ans = readc(1, z) - readc(1, rs0[x]);
				printf("%d\n", n-ans);
			}
			else {
				ans = readc(0, z) - readc(0, rs1[x]);
				printf("%d\n", ans);
			}
		}
		else if(strcmp(s, "ColQuery") == 0) {
			//scanf("%d", &x);
			x = read_int();
            if(cs0[x] >= cs1[x]) {
				ans = readr(1, z) - readr(1, cs0[x]);
				printf("%d\n", n-ans);
			}
			else {
				ans = readr(0, z) - readr(0, cs1[x]);
				printf("%d\n", ans);
			}
		}
	}
	return 0;
}