This version now transmits and receives.
[people/andreif/gpxe.git] / src / drivers / bitbash / bitbash.c
index 270c1b9..ec94fee 100644 (file)
@@ -37,8 +37,7 @@
  */
 void write_bit ( struct bit_basher *basher, unsigned int bit_id,
                 unsigned long data ) {
-       basher->write ( basher, bit_id, ( data ? -1UL : 0 ) );
-       udelay ( basher->udelay );
+       basher->op->write ( basher, bit_id, ( data ? -1UL : 0 ) );
 }
 
 /**
@@ -48,8 +47,10 @@ void write_bit ( struct bit_basher *basher, unsigned int bit_id,
  * @v bit_id           Bit number
  * @ret data           Value read
  *
- * @c data will always be either 0 or 1.
+ * @c data will always be either 0 or -1UL.  The idea is that the
+ * caller can simply binary-AND the returned value with whatever mask
+ * it needs to apply.
  */
 int read_bit ( struct bit_basher *basher, unsigned int bit_id ) {
-       return ( basher->read ( basher, bit_id ) ? 1 : 0 );
+       return ( basher->op->read ( basher, bit_id ) ? -1UL : 0 );
 }