blob: 391264ff43d5bc2a87f23e0f392367272a0f0950 [file] [log] [blame]
// 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.
@available(added=7)
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;
};
closed protocol Device {
/// Create an I2c bus on the FTDI device with a given `layout` and
/// with `device` attached to it.
strict CreateI2C(struct {
layout I2cBusLayout;
device I2cDevice;
});
};