blob: 6f316bf4109c43c7449a28cde5839c6edc513d37 [file] [log] [blame]
// Copyright 2018 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 GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_FIRMWARE_BLOB_H_
#define GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_FIRMWARE_BLOB_H_
#include <ddk/device.h>
#include <ddk/driver.h>
#include <lib/zx/vmo.h>
#include <map>
#include <string>
class FirmwareBlob {
public:
enum class FirmwareType {
kMPEG12,
kH264,
kVp9Mmu,
kVp9MmuG12a,
};
~FirmwareBlob();
zx_status_t LoadFirmware(zx_device_t* device);
zx_status_t GetFirmwareData(FirmwareType firmware_type, uint8_t** data_out,
uint32_t* size_out);
void LoadFakeFirmwareForTesting(FirmwareType firmware_type, uint8_t* data,
uint32_t size);
private:
struct FirmwareCode {
uint64_t offset;
uint32_t size;
};
zx::vmo vmo_;
uintptr_t ptr_ = 0;
uint64_t fw_size_ = 0;
std::map<std::string, FirmwareCode> firmware_code_;
};
#endif // GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_FIRMWARE_BLOB_H_