static int vgbemiiw(Mii* mii, int phy, int addr, int data) { Ctlr* ctlr; int i; if(phy != 1) return -1; ctlr = mii->ctlr; wiob(ctlr, MiiAddr, addr); wiow(ctlr, MiiData, (ushort) data); wiob(ctlr, MiiCmd, MiiCmd_write); for(i = 0; i < Timeout; i++) if((riob(ctlr, MiiCmd) & MiiCmd_write) == 0) break; if(i >= Timeout){ print("vgbe: miiw timeout\n"); return -1; } return 0; }
static int vgbemiiw(Mii* mii, int phy, int addr, int data) { Ctlr* ctlr; int i; if(phy != 1) return -1; ctlr = mii->ctlr; // write our addr to the Mii wiob(ctlr, MiiAddr, addr); // write our data to the Mii data reg wiow(ctlr, MiiData, (uint16_t) data); wiob(ctlr, MiiCmd, MiiCmd_write); // poll the mii for(i = 0; i < Timeout; i++) if((riob(ctlr, MiiCmd) & MiiCmd_write) == 0) break; if(i >= Timeout){ print("vgbe: miiw timeout\n"); return -1; } return 0; }