/** @file * * [DSDT] Serial devices (UART). * * Copyright (c) 2021, ARM Limited. All rights reserved. * Copyright (c) 2020, Pete Batard * Copyright (c) 2018, Andrey Warkentin * Copyright (c) Microsoft Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include #include "acpitables.h" // PL011 based UART. Device (URT0) { Name (_HID, "BCM2837") Name (_CID, "ARMH0011") Name (_UID, 0x4) Name (_CCA, 0x0) Name (RBUF, ResourceTemplate () { MEMORY32FIXED (ReadWrite, 0, BCM2836_PL011_UART_LENGTH, RMEM) Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_PL011_UART_INTERRUPT } }) Method (_CRS, 0x0, Serialized) { MEMORY32SETBASE (RBUF, RMEM, RBAS, BCM2836_PL011_UART_OFFSET) Return (^RBUF) } Name (CLCK, 48000000) Name (_DSD, Package () { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package (2) { "clock-frequency", CLCK }, } }) } // // UART Mini. // // This device is referenced in the DBG2 table, which will cause the system to // not start the driver when the debugger is enabled and to mark the device // with problem code 53 (CM_PROB_USED_BY_DEBUGGER). // Device (URTM) { Name (_HID, "BCM2836") Name (_CID, "BCM2836") Name (_UID, 0x0) Name (_CCA, 0x0) Name (RBUF, ResourceTemplate () { MEMORY32FIXED (ReadWrite, 0, BCM2836_MINI_UART_LENGTH, RMEM) Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) { BCM2836_MINI_UART_INTERRUPT } }) Method (_CRS, 0x0, Serialized) { MEMORY32SETBASE (RBUF, RMEM, RBAS, BCM2836_MINI_UART_OFFSET) Return (^RBUF) } // // Mini Uart Clock Rate will be dynamically updated during boot // External (\_SB.URTM.MUCR, IntObj) Name (_DSD, Package () { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package (2) { "clock-frequency", MUCR }, } }) } // // Multifunction serial bus device to support Bluetooth function. // Device(BTH0) { Name (_HID, "BCM2EA6") Name (_CID, "BCM2EA6") // // UART In Use will be dynamically updated during boot // External (\_SB.BTH0.URIU, IntObj) Method (_STA) { Return (0xf) } // // Resource for URT0 (PL011) // Name (BTPL, ResourceTemplate () { UARTSerialBus( 115200, // InitialBaudRate: in BPS , // BitsPerByte: default to 8 bits , // StopBits: Defaults to one bit 0x00, // LinesInUse: 8 1-bit flags to // declare enabled control lines. // Raspberry Pi does not exposed // HW control signals -> not supported. // Optional bits: // - Bit 7 (0x80) Request To Send (RTS) // - Bit 6 (0x40) Clear To Send (CTS) // - Bit 5 (0x20) Data Terminal Ready (DTR) // - Bit 4 (0x10) Data Set Ready (DSR) // - Bit 3 (0x08) Ring Indicator (RI) // - Bit 2 (0x04) Data Carrier Detect (DTD) // - Bit 1 (0x02) Reserved. Must be 0. // - Bit 0 (0x01) Reserved. Must be 0. , // IsBigEndian: // default to LittleEndian. , // Parity: Defaults to no parity , // FlowControl: Defaults to // no flow control. 16, // ReceiveBufferSize 16, // TransmitBufferSize "\\_SB.GDV0.URT0", // ResourceSource: // UART bus controller name , // ResourceSourceIndex: assumed to be 0 , // ResourceUsage: assumed to be // ResourceConsumer UAR0, // DescriptorName: creates name // for offset of resource descriptor ) // Vendor data }) // // Resource for URTM (miniUART) // Name (BTMN, ResourceTemplate () { // // BT UART: ResourceSource will be dynamically updated to // either URT0 (PL011) or URTM (miniUART) during boot // UARTSerialBus( 115200, // InitialBaudRate: in BPS , // BitsPerByte: default to 8 bits , // StopBits: Defaults to one bit 0x00, // LinesInUse: 8 1-bit flags to // declare enabled control lines. // Raspberry Pi does not exposed // HW control signals -> not supported. // Optional bits: // - Bit 7 (0x80) Request To Send (RTS) // - Bit 6 (0x40) Clear To Send (CTS) // - Bit 5 (0x20) Data Terminal Ready (DTR) // - Bit 4 (0x10) Data Set Ready (DSR) // - Bit 3 (0x08) Ring Indicator (RI) // - Bit 2 (0x04) Data Carrier Detect (DTD) // - Bit 1 (0x02) Reserved. Must be 0. // - Bit 0 (0x01) Reserved. Must be 0. , // IsBigEndian: // default to LittleEndian. , // Parity: Defaults to no parity , // FlowControl: Defaults to // no flow control. 16, // ReceiveBufferSize 16, // TransmitBufferSize "\\_SB.GDV0.URTM", // ResourceSource: // UART bus controller name , // ResourceSourceIndex: assumed to be 0 , // ResourceUsage: assumed to be // ResourceConsumer UARM, // DescriptorName: creates name // for offset of resource descriptor ) // Vendor data }) Method (_CRS, 0x0, Serialized) { if (URIU == 0) { // // PL011 UART is configured for console output // Return Mini UART for Bluetooth // return (^BTMN) } else { // // Mini UART is configured for console output // Return PL011 UART for Bluetooth // return (^BTPL) } } }