1279377Simp// Copyright 2018 The Fuchsia Authors. All rights reserved.
2279377Simp// Use of this source code is governed by a BSD-style license that can be
3295436Sandrew// found in the LICENSE file.
4295436Sandrew
5295436Sandrew#include <ddk/debug.h>
6295436Sandrew#include <ddk/device.h>
7295436Sandrew#include <ddk/protocol/platform-bus.h>
8295436Sandrew#include <ddk/protocol/platform-defs.h>
9295436Sandrew
10295436Sandrew#include <soc/aml-s905d2/s905d2-gpio.h>
11295436Sandrew#include <soc/aml-s905d2/s905d2-hw.h>
12295436Sandrew
13295436Sandrew#include <limits.h>
14295436Sandrew
15295436Sandrew#include "astro.h"
16295436Sandrew
17295436Sandrewstatic const pbus_mmio_t astro_canvas_mmios[] = {
18295436Sandrew    {
19295436Sandrew        .base = S905D2_DMC_BASE,
20295436Sandrew        .length = S905D2_DMC_LENGTH,
21295436Sandrew    },
22295436Sandrew};
23295436Sandrew
24295436Sandrewstatic const pbus_bti_t astro_canvas_btis[] = {
25295436Sandrew    {
26295436Sandrew        .iommu_index = 0,
27295436Sandrew        .bti_id = BTI_CANVAS,
28295436Sandrew    },
29295436Sandrew};
30295436Sandrew
31295436Sandrewstatic const pbus_dev_t canvas_dev = {
32295436Sandrew    .name = "canvas",
33295436Sandrew    .vid = PDEV_VID_AMLOGIC,
34295436Sandrew    .pid = PDEV_PID_GENERIC,
35295436Sandrew    .did = PDEV_DID_AMLOGIC_CANVAS,
36295436Sandrew    .mmios = astro_canvas_mmios,
37295436Sandrew    .mmio_count = countof(astro_canvas_mmios),
38295436Sandrew    .btis = astro_canvas_btis,
39295436Sandrew    .bti_count = countof(astro_canvas_btis),
40279377Simp};
41279377Simp
42279377Simpzx_status_t aml_canvas_init(aml_bus_t* bus) {
43279377Simp    zx_status_t status = pbus_protocol_device_add(&bus->pbus, ZX_PROTOCOL_AMLOGIC_CANVAS,
44279377Simp                                                  &canvas_dev);
45279377Simp    if (status != ZX_OK) {
46279377Simp        zxlogf(ERROR, "%s: pbus_protocol_device_add canvas failed: %d\n", __FUNCTION__, status);
47279377Simp        return status;
48279377Simp    }
49279377Simp    return ZX_OK;
50279377Simp}