// 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.ethernet.mac;

using zx;

const uint32 MAC_ARRAY_LENGTH = 6;

[Transport = "Banjo", BanjoLayout = "ddk-callback"]
protocol EthMacCallbacks {
    ConfigPhy(array<uint8>:MAC_ARRAY_LENGTH mac) -> (zx.status s);
};

[Transport = "Banjo", BanjoLayout = "ddk-protocol"]
protocol EthMac {
    MdioRead(uint32 reg) -> (zx.status s, uint32 val);
    MdioWrite(uint32 reg, uint32 val) -> (zx.status s);
    RegisterCallbacks(EthMacCallbacks cb) -> (zx.status s);
};
