/*---------------------------------------------------------------------------*/ static void owwriteb(unsigned byte) { int i = 7; do { if(byte & 0x01) { DS2411_OUTPUT(); OUTP_0(); udelay_tA(); OUTP_1(); /* Releases the bus */ udelay(tB); } else { OUTP_0(); udelay(tC); OUTP_1(); /* Releases the bus */ udelay(tD); } if(i == 0) { DS2411_INPUT(); return; } i--; byte >>= 1; } while(1); }
/*---------------------------------------------------------------------------*/ static unsigned owreadb(void) { unsigned result = 0; int i = 7; do { OUTP_0(); udelay_tA(); OUTP_1(); /* Releases the bus */ udelay(tE); if(INP()) { result |= 0x80; /* LSbit first */ } udelay(tF); if(i == 0) { return result; } i--; result >>= 1; } while(1); }