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 #include <ddk/debug.h>
6 #include <ddk/device.h>
7 #include <ddk/platform-defs.h>
8 #include <ddk/protocol/platform/bus.h>
9
10 #include <soc/aml-s905d2/s905d2-gpio.h>
11 #include <soc/aml-s905d2/s905d2-hw.h>
12
13 #include <limits.h>
14
15 #include "astro.h"
16
17 static const pbus_mmio_t astro_canvas_mmios[] = {
18 {
19 .base = S905D2_DMC_BASE,
20 .length = S905D2_DMC_LENGTH,
21 },
22 };
23
24 static const pbus_bti_t astro_canvas_btis[] = {
25 {
26 .iommu_index = 0,
27 .bti_id = BTI_CANVAS,
28 },
29 };
30
31 static const pbus_dev_t canvas_dev = {
32 .name = "canvas",
33 .vid = PDEV_VID_AMLOGIC,
34 .pid = PDEV_PID_GENERIC,
35 .did = PDEV_DID_AMLOGIC_CANVAS,
36 .mmio_list = astro_canvas_mmios,
37 .mmio_count = countof(astro_canvas_mmios),
38 .bti_list = astro_canvas_btis,
39 .bti_count = countof(astro_canvas_btis),
40 };
41
aml_canvas_init(aml_bus_t * bus)42 zx_status_t aml_canvas_init(aml_bus_t* bus) {
43 zx_status_t status = pbus_protocol_device_add(&bus->pbus, ZX_PROTOCOL_AMLOGIC_CANVAS,
44 &canvas_dev);
45 if (status != ZX_OK) {
46 zxlogf(ERROR, "%s: pbus_protocol_device_add canvas failed: %d\n", __FUNCTION__, status);
47 return status;
48 }
49 return ZX_OK;
50 }
51