From e90b64d625dcdc28ad811316c9eaf2d7de6ca0d4 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 8 Jun 2006 19:47:09 +0000 Subject: Added sketch of bit-bashing interface common code --- src/include/gpxe/bitbash.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/include/gpxe/bitbash.h (limited to 'src/include') diff --git a/src/include/gpxe/bitbash.h b/src/include/gpxe/bitbash.h new file mode 100644 index 000000000..9bee39134 --- /dev/null +++ b/src/include/gpxe/bitbash.h @@ -0,0 +1,44 @@ +#ifndef _GPXE_BITBASH_H +#define _GPXE_BITBASH_H + +/** @file + * + * Bit-bashing interfaces + * + */ + +/** A bit-bashing interface */ +struct bit_basher { + /** + * Set/clear output bit + * + * @v basher Bit-bashing interface + * @v bit_id Bit number + * @v data Value to write + * + * @c data will be 0 if a logic 0 should be written (i.e. the + * bit should be cleared), or -1UL if a logic 1 should be + * written (i.e. the bit should be set). This is done so that + * the method may simply binary-AND @c data with the + * appropriate bit mask. + */ + void ( * write ) ( struct bit_basher *basher, unsigned int bit_id, + unsigned long data ); + /** + * Read input bit + * + * @v basher Bit-bashing interface + * @v bit_id Bit number + * @ret zero Input is a logic 0 + * @ret non-zero Input is a logic 1 + */ + int ( * read ) ( struct bit_basher *basher, unsigned int bit_id ); + /** Delay between subsequent calls to write(), in microseconds */ + unsigned int udelay; +}; + +extern void write_bit ( struct bit_basher *basher, unsigned int bit_id, + unsigned long data ); +extern int read_bit ( struct bit_basher *basher, unsigned int bit_id ); + +#endif /* _GPXE_BITBASH_H */ -- cgit v1.2.3-55-g7522