// 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. #include #include #include #include #include #include #include #include #include namespace eth { class AmlEthernet; using DeviceType = ddk::Device; class AmlEthernet : public DeviceType, public ddk::EthBoardProtocol { public: DISALLOW_COPY_AND_ASSIGN_ALLOW_MOVE(AmlEthernet); explicit AmlEthernet(zx_device_t* parent) : DeviceType(parent), pdev_(parent) {} static zx_status_t Create(zx_device_t* parent); // DDK Hooks. void DdkRelease(); void DdkUnbind(); // ETH_BOARD protocol. void EthBoardResetPhy(); private: // GPIO Indexes. enum { PHY_RESET, PHY_INTR, GPIO_COUNT, }; // MMIO Indexes enum { MMIO_PERIPH, MMIO_HHI, }; zx_status_t InitPdev(); zx_status_t Bind(); ddk::PDev pdev_; std::optional i2c_; std::optional gpios_[GPIO_COUNT]; std::optional periph_mmio_; std::optional hhi_mmio_; }; } // namespace eth