blob: 58a92369bf8a8c0c6fe3333f1daba28098c47ded [file] [log] [blame]
// Copyright 2017 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 "common.h"
#include "edid.h"
#include "hidisplay.h"
#include <ddktl/device.h>
#include <optional>
#include <ddk/mmio-buffer.h>
#include <lib/mmio/mmio.h>
#include <lib/mipi-dsi/mipi-dsi.h>
#include <ddk/protocol/dsiimpl.h>
#include <ddktl/protocol/dsiimpl.h>
namespace hi_display {
class HiDsi {
public:
zx_status_t DsiInit(zx_device_t* parent);
zx_status_t DsiMipiInit();
zx_status_t DsiGetDisplayTiming();
void DsiDphyWrite(uint32_t reg, uint32_t val);
void DsiConfigureDphyPll();
zx_status_t DsiConfigureDphy();
zx_status_t GetDisplayResolution(uint32_t& width, uint32_t& height);
private:
zx_status_t DsiHostConfig(const display_setting_t& disp_setting);
zx_status_t HiDsiGetDisplaySetting(display_setting_t &);
ddk::DsiImplProtocolClient dsiimpl_;
DetailedTiming* std_raw_dtd_;
DisplayTiming* std_disp_timing_;
DetailedTiming* raw_dtd_;
DisplayTiming* disp_timing_;
HiEdid* edid_;
};
} // namespace hi_display