1 // Copyright 2018 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #pragma once
6 
7 #include <unistd.h>
8 #include <zircon/compiler.h>
9 #include <ddk/protocol/platform/device.h>
10 #include <fbl/unique_ptr.h>
11 #include <hwreg/mmio.h>
12 #include <ddk/protocol/gpio.h>
13 #include "dw-mipi-dsi.h"
14 
15 namespace astro_display {
16 
17 class Lcd {
18 public:
Lcd(uint8_t panel_type)19     Lcd(uint8_t panel_type) : panel_type_(panel_type) {}
20 
21     zx_status_t Init(zx_device_t* parent);
22     zx_status_t Enable();
23     zx_status_t Disable();
24 private:
25     zx_status_t LoadInitTable(const uint8_t* buffer, size_t size);
26     zx_status_t GetDisplayId();
27 
28     uint8_t                                     panel_type_;
29     gpio_protocol_t                             gpio_ = {};
30     fbl::unique_ptr<astro_display::DwMipiDsi>   dsi_;
31 
32     bool                                        initialized_ = false;
33     bool                                        enabled_ =false;
34 };
35 
36 } // namespace astro_display
37