blob: 2aec87d13ca89e47925d432d7312bb19d6e54d6c [file] [log] [blame]
# Copyright 2024 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.
load(
"@rules_fuchsia//fuchsia:defs.bzl",
"fuchsia_cc_driver",
"fuchsia_cc_test",
"fuchsia_component_manifest",
"fuchsia_driver_bind_bytecode",
"fuchsia_driver_component",
"fuchsia_package",
"fuchsia_structured_config_cpp_elf_lib",
"fuchsia_structured_config_values",
"fuchsia_unittest_package",
)
fuchsia_driver_bind_bytecode(
name = "dwc3-bind",
output = "dwc3.bindbc",
rules = "meta/dwc3.bind",
deps = [
"@fuchsia_sdk//bind/fuchsia.clock",
"@fuchsia_sdk//bind/fuchsia.designware.platform",
"@fuchsia_sdk//bind/fuchsia.devicetree",
"@fuchsia_sdk//bind/fuchsia.interconnect",
"@fuchsia_sdk//bind/fuchsia.platform",
"@fuchsia_sdk//bind/fuchsia.regulator",
"@fuchsia_sdk//bind/fuchsia.reset",
"@fuchsia_sdk//fidl/fuchsia.hardware.interconnect:fuchsia.hardware.interconnect_bindlib",
"@fuchsia_sdk//fidl/fuchsia.hardware.usb.phy:fuchsia.hardware.usb.phy_bindlib",
],
)
cc_library(
name = "dwc3-common",
srcs = [
"dwc3.cc",
"dwc3.h",
"dwc3-commands.cc",
"dwc3-endpoints.cc",
"dwc3-ep0.cc",
"dwc3-event-fifo.h",
"dwc3-events.cc",
"dwc3-fifo.h",
"dwc3-metrics.cc",
"dwc3-metrics.h",
"dwc3-regs.h",
"dwc3-trb-fifo.h",
"dwc3-types.h",
],
defines = [
"ZX_ASSERT_LEVEL=2",
"_ALL_SOURCE",
],
deps = [
":dwc3-config",
"//src/devices/lib/dma-buffer",
"//src/devices/usb/lib/usb:descriptors",
"//src/devices/usb/lib/usb:usb-fidl",
"//src/devices/usb/lib/usb-endpoint:usb-endpoint-server",
"//src/lib/ddk:ddk_metadata",
"@fuchsia_sdk//bind/fuchsia.designware.platform:fuchsia.designware.platform_cc",
"@fuchsia_sdk//bind/fuchsia:fuchsia_cc",
"@fuchsia_sdk//fidl/fuchsia.boot.metadata:fuchsia.boot.metadata_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.clock:fuchsia.hardware.clock_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.interconnect:fuchsia.hardware.interconnect_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.reset:fuchsia.hardware.reset_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.usb.dci:fuchsia.hardware.usb.dci_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.usb.endpoint:fuchsia.hardware.usb.endpoint_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.usb.phy:fuchsia.hardware.usb.phy_cpp",
"@fuchsia_sdk//fidl/fuchsia.hardware.vreg:fuchsia.hardware.vreg_cpp",
"@fuchsia_sdk//fidl/fuchsia.io:fuchsia.io_cpp",
"@fuchsia_sdk//pkg/async-cpp",
"@fuchsia_sdk//pkg/driver_component_cpp",
"@fuchsia_sdk//pkg/driver_logging_cpp",
"@fuchsia_sdk//pkg/driver_metadata_cpp",
"@fuchsia_sdk//pkg/driver_mmio_cpp",
"@fuchsia_sdk//pkg/driver_platform_device_cpp",
"@fuchsia_sdk//pkg/driver_power_cpp",
"@fuchsia_sdk//pkg/fit",
"@fuchsia_sdk//pkg/hwreg",
"@fuchsia_sdk//pkg/inspect",
"@fuchsia_sdk//pkg/sync_cpp",
],
)
fuchsia_cc_driver(
name = "dwc3-driver",
output_name = "dwc3",
deps = [
":dwc3-common",
"@fuchsia_sdk//pkg/driver_runtime_cpp",
],
)
fuchsia_component_manifest(
name = "manifest",
src = "meta/dwc3.cml",
)
fuchsia_structured_config_cpp_elf_lib(
name = "dwc3-config",
cm_label = ":manifest",
)
fuchsia_structured_config_values(
name = "dwc3-config-values",
cm_label = ":manifest",
cvf_output_name = "dwc3-config",
values = {
"enable_suspend": False,
},
)
fuchsia_driver_component(
name = "component",
bind_bytecode = ":dwc3-bind",
driver_lib = ":dwc3-driver",
manifest = ":manifest",
)
fuchsia_package(
name = "dwc3",
package_name = "dwc3",
components = [":component"],
fuchsia_api_level = "HEAD",
package_repository_name = "fuchsia.com",
resources = [":dwc3-config-values"],
visibility = ["//visibility:public"],
)
# Tests
fuchsia_cc_test(
name = "dwc3-test-bin",
srcs = [
"dwc3-test.cc",
],
linkstatic = True,
deps = [
":dwc3-common",
"@com_google_googletest//:gtest_main",
"@fuchsia_sdk//fidl/fuchsia.hardware.interconnect:fuchsia.hardware.interconnect_cpp",
"@fuchsia_sdk//pkg/component_outgoing_cpp",
"@fuchsia_sdk//pkg/driver_fake_platform_device_cpp",
"@fuchsia_sdk//pkg/driver_testing_cpp",
"@internal_sdk//pkg/fake-mmio-reg",
],
)
fuchsia_cc_test(
name = "dwc3-fifo-test-bin",
srcs = [
"dwc3-fifo.h",
"dwc3-fifo-test.cc",
],
linkstatic = True,
deps = [
"//src/devices/lib/dma-buffer",
"@com_google_googletest//:gtest_main",
"@fuchsia_sdk//pkg/driver_fake_bti_cpp",
"@fuchsia_sdk//pkg/driver_logging_cpp",
],
)
fuchsia_cc_test(
name = "dwc3-trb-fifo-test-bin",
srcs = [
"dwc3-fifo.h",
"dwc3-trb-fifo.h",
"dwc3-trb-fifo-test.cc",
"dwc3-types.h",
],
linkstatic = True,
deps = [
"//src/devices/lib/dma-buffer",
"@com_google_googletest//:gtest_main",
"@fuchsia_sdk//pkg/driver_fake_bti_cpp",
"@fuchsia_sdk//pkg/driver_logging_cpp",
],
)
fuchsia_unittest_package(
name = "dwc3-test-package",
package_name = "dwc3-test",
fuchsia_api_level = "HEAD",
unit_tests = [
":dwc3-test-bin",
":dwc3-fifo-test-bin",
":dwc3-trb-fifo-test-bin",
],
visibility = ["//visibility:public"],
)