# Copyright 2022 Google LLC.
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

package(default_visibility = ["//visibility:public"])

load("@lowrisc_opentitan//rules:opentitan.bzl", "OPENTITAN_CPU")

cc_library(
    name = "util",
    hdrs = [
        "util.h",
    ],
    target_compatible_with = [OPENTITAN_CPU],
)

cc_library(
    name = "tar_header",
    hdrs = [
        "tar.h",
    ],
    target_compatible_with = [OPENTITAN_CPU],
)

cc_library(
    name = "virtual_memory",
    srcs = [
        "virtual_memory.c",
    ],
    hdrs = [
        "virtual_memory.h",
    ],
    target_compatible_with = [OPENTITAN_CPU],
    deps = [
        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
    ],
)

# TODO(atv): Merge SPI codes under @lowrisc_opentitan//sw/device/lib/testing:spi_device_testutils
# and @lowrisc_opentitan//sw/device/lib/testing:spi_flash_testutils with the SPI codes in matcha.
cc_library(
    name = "spi_flash",
    srcs = [
        "spi_flash.c",
    ],
    hdrs = [
        "spi_flash.h",
    ],
    target_compatible_with = [OPENTITAN_CPU],
    deps = [
        ":tar_header",
        "//hw/top_matcha/sw/autogen:top_matcha",
        "@lowrisc_opentitan//sw/device/lib/dif:spi_host",
        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
    ],
)

cc_library(
    name = "camera_hm01b0",
    srcs = [
        "camera_hm01b0.c",
    ],
    hdrs = [
        "camera_hm01b0.h",
        "camera_hm01b0_regs.h",
    ],
    target_compatible_with = [OPENTITAN_CPU],
    deps = [
        "//hw/top_matcha/sw/autogen:top_matcha",
        "//sw/device/lib/dif:rv_plic_sec",
        "@lowrisc_opentitan//sw/device/lib/dif:i2c",
        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
    ],
)
