blob: 7266c809ff9ac4323b13728513bbe0edfbeb1ef9 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.hardware.gpioimpl;
using fuchsia.hardware.gpio;
using zx;
[Transport = "Banjo", BanjoLayout = "ddk-protocol"]
protocol GpioImpl {
/// Configures a GPIO for input.
ConfigIn(uint32 index, uint32 flags) -> (zx.status s);
/// Configures a GPIO for output.
ConfigOut(uint32 index, uint8 initial_value) -> (zx.status s);
/// Configures the GPIO pin for an alternate function (I2C, SPI, etc)
/// the interpretation of "function" is platform dependent.
SetAltFunction(uint32 index, uint64 function) -> (zx.status s);
/// Configures the GPIO pin drive strength.
SetDriveStrength(uint32 index, uint64 ua) -> (zx.status s, uint64 actual_ua);
/// Reads the current value of a GPIO (0 or 1).
Read(uint32 index) -> (zx.status s, uint8 value);
/// Sets the current value of the GPIO (any non-zero value maps to 1).
Write(uint32 index, uint8 value) -> (zx.status s);
/// Gets an interrupt object pertaining to a particular GPIO pin.
GetInterrupt(uint32 index, uint32 flags) -> (zx.status s, zx.handle:INTERRUPT irq);
/// Release the interrupt.
ReleaseInterrupt(uint32 index) -> (zx.status s);
/// Set GPIO polarity.
SetPolarity(uint32 index, fuchsia.hardware.gpio.GpioPolarity polarity) -> (zx.status s);
};