machine: add helpers for bit-banged driver support

The returned pointer and value can be used to set or clear a specific
pin.
This commit is contained in:
Ayke van Laethem
2018-10-15 19:56:27 +02:00
parent 392bba8394
commit ccee42ec7a
+14
View File
@@ -34,6 +34,20 @@ func (p GPIO) Set(high bool) {
}
}
// Return the register and mask to enable a given GPIO pin. This can be used to
// implement bit-banged drivers.
func (p GPIO) PortMaskSet() (*uint32, uint32) {
port, pin := p.getPortPin()
return (*uint32)(&port.OUTSET), 1 << pin
}
// Return the register and mask to disable a given port. This can be used to
// implement bit-banged drivers.
func (p GPIO) PortMaskClear() (*uint32, uint32) {
port, pin := p.getPortPin()
return (*uint32)(&port.OUTCLR), 1 << pin
}
// Get returns the current value of a GPIO pin.
func (p GPIO) Get() bool {
port, pin := p.getPortPin()