W4_PHYSMGMT
PUT16(W4_PHYSMGMT, PHYSMGMT_DIR);
PUT16(W4_PHYSMGMT, val);
PUT16(W4_PHYSMGMT, val | PHYSMGMT_CLK);
PUT16(W4_PHYSMGMT, val);
PUT16(W4_PHYSMGMT, PHYSMGMT_DATA | PHYSMGMT_DIR);
PUT16(W4_PHYSMGMT, PHYSMGMT_DATA | PHYSMGMT_DIR | PHYSMGMT_CLK);
PUT16(W4_PHYSMGMT, PHYSMGMT_DATA | PHYSMGMT_DIR);
PUT16(W4_PHYSMGMT, 0); /* switch to input */
PUT16(W4_PHYSMGMT, PHYSMGMT_CLK); /* turnaround time */
PUT16(W4_PHYSMGMT, 0);
PUT16(W4_PHYSMGMT, PHYSMGMT_CLK); /* idle time */
PUT16(W4_PHYSMGMT, 0);
if (GET16(W4_PHYSMGMT) & PHYSMGMT_DATA) {
PUT16(W4_PHYSMGMT, PHYSMGMT_CLK);
PUT16(W4_PHYSMGMT, 0);
PUT16(W4_PHYSMGMT, PHYSMGMT_DIR);
PUT16(W4_PHYSMGMT, PHYSMGMT_DIR);