blob: 377fc9a515fe9a61c468f046ad652446895f3c6a [file] [log] [blame]
// Copyright 2023 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.
#ifndef SRC_DEVICES_BOARD_DRIVERS_VIM3_DEVICETREE_VIM3_DEVICETREE_H_
#define SRC_DEVICES_BOARD_DRIVERS_VIM3_DEVICETREE_VIM3_DEVICETREE_H_
#include <lib/driver/component/cpp/driver_base.h>
#include <lib/driver/devicetree/manager/manager.h>
#include <lib/driver/devicetree/visitors/registry.h>
#include <memory>
#include <optional>
namespace vim3_dt {
// Vim3 board driver based on device tree
class Vim3Devicetree : public fdf::DriverBase {
public:
Vim3Devicetree(fdf::DriverStartArgs start_args, fdf::UnownedSynchronizedDispatcher dispatcher)
: fdf::DriverBase("vim3-devicetree", std::move(start_args), std::move(dispatcher)) {}
zx::result<> Start() final;
private:
std::optional<fdf_devicetree::Manager> manager_;
std::unique_ptr<fdf_devicetree::VisitorRegistry> visitors_;
fidl::SyncClient<fuchsia_driver_framework::Node> node_;
};
} // namespace vim3_dt
#endif // SRC_DEVICES_BOARD_DRIVERS_VIM3_DEVICETREE_VIM3_DEVICETREE_H_