blob: 5c954a3c492898f736aeacf71051061058689f8b [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.
#pragma once
#include <zircon/compiler.h>
#include <ddk/protocol/platform-device.h>
#include <ddktl/mmio.h>
#include <fbl/unique_ptr.h>
#include "vpu-regs.h"
#include "common.h"
namespace astro_display {
class Vpu {
public:
Vpu() {}
zx_status_t Init(zx_device_t* parent);
// This function powers on VPU related blocks. The function contains undocumented
// register and/or power-on sequences.
void PowerOn();
// This function powers off VPU related blocks. The function contains undocumented
// register and/or power-off sequences.
void PowerOff();
// This function sets up default video post processing unit. It contains undocumented
// registers and/or initialization sequences
void VppInit();
private:
// This function configures the VPU-related clocks. It contains undocumented registers
// and/or clock initialization sequences
void ConfigureClock();
fbl::unique_ptr<ddk::MmioBuffer> vpu_mmio_;
fbl::unique_ptr<ddk::MmioBuffer> hhi_mmio_;
fbl::unique_ptr<ddk::MmioBuffer> aobus_mmio_;
fbl::unique_ptr<ddk::MmioBuffer> cbus_mmio_;
platform_device_protocol_t pdev_ = {};
bool initialized_ = false;
};
} // namespace astro_display