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 "sherlock.h" 6 7 #include <ddk/debug.h> 8 #include <ddk/device.h> 9 #include <ddk/platform-defs.h> 10 #include <ddk/protocol/platform/bus.h> 11 12 #include <soc/aml-t931/t931-hw.h> 13 14 #include <limits.h> 15 16 namespace sherlock { 17 18 static const pbus_mmio_t sherlock_canvas_mmios[] = { 19 { 20 .base = T931_DMC_BASE, 21 .length = T931_DMC_LENGTH, 22 }, 23 }; 24 25 static const pbus_bti_t sherlock_canvas_btis[] = { 26 { 27 .iommu_index = 0, 28 .bti_id = BTI_CANVAS, 29 }, 30 }; 31 __anon2310a3c30102() 32static pbus_dev_t canvas_dev = []() { 33 pbus_dev_t dev; 34 dev.name = "canvas"; 35 dev.vid = PDEV_VID_AMLOGIC; 36 dev.pid = PDEV_PID_GENERIC; 37 dev.did = PDEV_DID_AMLOGIC_CANVAS; 38 dev.mmio_list = sherlock_canvas_mmios; 39 dev.mmio_count = countof(sherlock_canvas_mmios); 40 dev.bti_list = sherlock_canvas_btis; 41 dev.bti_count = countof(sherlock_canvas_btis); 42 return dev; 43 }(); 44 CanvasInit()45zx_status_t Sherlock::CanvasInit() { 46 zx_status_t status = pbus_.ProtocolDeviceAdd(ZX_PROTOCOL_AMLOGIC_CANVAS, &canvas_dev); 47 if (status != ZX_OK) { 48 zxlogf(ERROR, "Sherlock::CanvasInit: pbus_device_add failed: %d\n", status); 49 return status; 50 } 51 return status; 52 } 53 54 } // namespace sherlock 55