// Copyright 2019 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.ftdi;

/// Each one of these represents an I2cDevice that will exist
/// on the newly created bus. The I2C bus will try and bind
/// a driver on the bus with the given VID, PID, DID.
type I2cDevice = struct {
    address uint32;
    vid uint32;
    pid uint32;
    did uint32;
};

/// This represents the data necessary for the FTDI device
/// to create an I2C bus.
type I2cBusLayout = struct {
    scl uint32;
    /// The FTDI needs two pins to be able to drive input and output for
    /// SDA. Please specify the two pins here. They *must* be physically
    /// tied together on the board with a jumper wire.
    sda_out uint32;
    sda_in uint32;
};

protocol Device {
    /// Create an I2c bus on the FTDI device with a given `layout` and
    /// with `device` attached to it.
    CreateI2C(struct {
        layout I2cBusLayout;
        device I2cDevice;
    });
};
