From d9df77f0f20003cb108a44308989d69bf335e5fb Mon Sep 17 00:00:00 2001 From: Braden Kell <bradenkell@google.com> Date: Tue, 23 Apr 2019 18:53:58 +0000 Subject: [PATCH] [as370][board] Add board driver for AS370 Test: 'dm dump' shows board driver Change-Id: I5143ef17ac06a4131b3ce772a123bfb49cf22e59 --- zircon/system/dev/board/BUILD.gn | 1 + zircon/system/dev/board/as370/BUILD.gn | 19 +++++++++++ zircon/system/dev/board/as370/as370.cpp | 45 +++++++++++++++++++++++++ zircon/system/dev/board/as370/as370.h | 20 +++++++++++ 4 files changed, 85 insertions(+) create mode 100644 zircon/system/dev/board/as370/BUILD.gn create mode 100644 zircon/system/dev/board/as370/as370.cpp create mode 100644 zircon/system/dev/board/as370/as370.h diff --git a/zircon/system/dev/board/BUILD.gn b/zircon/system/dev/board/BUILD.gn index db738beb1ae..b201f7b3cd1 100644 --- a/zircon/system/dev/board/BUILD.gn +++ b/zircon/system/dev/board/BUILD.gn @@ -12,6 +12,7 @@ group("board") { ] if (current_cpu == "arm64") { deps += [ + "as370", "astro", "gauss", "hikey960", diff --git a/zircon/system/dev/board/as370/BUILD.gn b/zircon/system/dev/board/as370/BUILD.gn new file mode 100644 index 00000000000..e2f5f9cb459 --- /dev/null +++ b/zircon/system/dev/board/as370/BUILD.gn @@ -0,0 +1,19 @@ +# 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. + +driver("as370") { + sources = [ + "as370.cpp", + ] + deps = [ + "$zx/system/ulib/ddk", + "$zx/system/ulib/ddktl", + "$zx/system/ulib/fbl", + "$zx/system/ulib/zx", + "$zx/system/ulib/zxcpp", + ] + data_deps = [ + "$zx/kernel/target/arm64/boot-shim:as370", + ] +} diff --git a/zircon/system/dev/board/as370/as370.cpp b/zircon/system/dev/board/as370/as370.cpp new file mode 100644 index 00000000000..63f85195182 --- /dev/null +++ b/zircon/system/dev/board/as370/as370.cpp @@ -0,0 +1,45 @@ +// 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. + +#include "as370.h" + +#include <ddk/binding.h> +#include <ddk/debug.h> +#include <ddk/platform-defs.h> +#include <fbl/alloc_checker.h> +#include <fbl/unique_ptr.h> + +namespace board_as370 { + +zx_status_t As370::Create(void* ctx, zx_device_t* parent) { + fbl::AllocChecker ac; + auto board = fbl::make_unique_checked<As370>(&ac, parent); + if (!ac.check()) { + return ZX_ERR_NO_MEMORY; + } + + zx_status_t status = board->DdkAdd("as370", DEVICE_ADD_NON_BINDABLE); + if (status != ZX_OK) { + return status; + } + + __UNUSED auto* dummy = board.release(); + + return ZX_OK; +} + +} // namespace board_as370 + +static zx_driver_ops_t driver_ops = []() { + zx_driver_ops_t ops; + ops.version = DRIVER_OPS_VERSION; + ops.bind = board_as370::As370::Create; + return ops; +}(); + +ZIRCON_DRIVER_BEGIN(as370, driver_ops, "zircon", "0.1", 3) + BI_ABORT_IF(NE, BIND_PROTOCOL, ZX_PROTOCOL_PBUS), + BI_ABORT_IF(NE, BIND_PLATFORM_DEV_VID, PDEV_VID_SYNAPTICS), + BI_MATCH_IF(EQ, BIND_PLATFORM_DEV_PID, PDEV_PID_SYNAPTICS_AS370), +ZIRCON_DRIVER_END(as370) diff --git a/zircon/system/dev/board/as370/as370.h b/zircon/system/dev/board/as370/as370.h new file mode 100644 index 00000000000..5b36818f435 --- /dev/null +++ b/zircon/system/dev/board/as370/as370.h @@ -0,0 +1,20 @@ +// 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. + +#pragma once + +#include <ddktl/device.h> + +namespace board_as370 { + +class As370 : public ddk::Device<As370> { +public: + As370(zx_device_t* parent) : ddk::Device<As370>(parent) {} + + static zx_status_t Create(void* ctx, zx_device_t* parent); + + void DdkRelease() { delete this; } +}; + +} // namespace board_as370 -- GitLab