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}