diff options
| author | Michael Brown | 2006-06-08 21:47:09 +0200 |
|---|---|---|
| committer | Michael Brown | 2006-06-08 21:47:09 +0200 |
| commit | e90b64d625dcdc28ad811316c9eaf2d7de6ca0d4 (patch) | |
| tree | a2cd3d2bb3925c4ae2b12eb9c559a2b4488e9269 /src/include | |
| parent | Fix bug with >256 cylinders. (diff) | |
| download | ipxe-e90b64d625dcdc28ad811316c9eaf2d7de6ca0d4.tar.gz ipxe-e90b64d625dcdc28ad811316c9eaf2d7de6ca0d4.tar.xz ipxe-e90b64d625dcdc28ad811316c9eaf2d7de6ca0d4.zip | |
Added sketch of bit-bashing interface common code
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/gpxe/bitbash.h | 44 |
1 files changed, 44 insertions, 0 deletions
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 */ |
