blob: 2d0eddd870ff19cb5fc8edba23ad36e7e3d8547b [file] [log] [blame]
// 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 <ddktl/mmio.h>
#include <mock-mmio-reg/mock-mmio-reg.h>
// These override the weak methods in mt8167-gpio-regs.h.
// mock-mmio uses vaddr as a key to find MockMmioRegRegion, need to substract offset.
template <>
template <>
uint16_t ddk::MmioBuffer::Read<uint16_t>(zx_off_t offs) const {
ddk_mock::MockMmioRegRegion* mock_regs =
reinterpret_cast<ddk_mock::MockMmioRegRegion*>(
reinterpret_cast<uintptr_t>(mmio_.vaddr) - mmio_.offset);
ZX_ASSERT(mock_regs != nullptr);
return static_cast<uint16_t>((*mock_regs)[mmio_.offset + offs].Read());
}
template <>
template <>
void ddk::MmioBuffer::Write<uint16_t>(uint16_t val, zx_off_t offs) const {
ddk_mock::MockMmioRegRegion* mock_regs =
reinterpret_cast<ddk_mock::MockMmioRegRegion*>(
reinterpret_cast<uintptr_t>(mmio_.vaddr) - mmio_.offset);
ZX_ASSERT(mock_regs != nullptr);
(*mock_regs)[mmio_.offset + offs].Write(val);
}