123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- /** @file
- *
- * [DSDT] Serial devices (UART).
- *
- * Copyright (c) 2021, ARM Limited. All rights reserved.
- * Copyright (c) 2020, Pete Batard <pete@akeo.ie>
- * Copyright (c) 2018, Andrey Warkentin <andrey.warkentin@gmail.com>
- * Copyright (c) Microsoft Corporation. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-2-Clause-Patent
- *
- **/
- #include <IndustryStandard/Bcm2836.h>
- #include "AcpiTables.h"
- // PL011 based UART.
- Device (URT0)
- {
- Name (_HID, "BCM2837")
- Name (_CID, "ARMH0011")
- Name (_UID, 0x4)
- Name (_CCA, 0x0)
- Method (_STA)
- {
- Return (0xf)
- }
- 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)
- Method (_STA)
- {
- Return (0xf)
- }
- 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
- // 0x4D 0x55 0x43 0x52 0xC 0x1000000 (Value must be > 16777215)
- //
- Name (MUCR, 0x1000000)
- 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
- // 0x55 0x52 0x49 0x55 0xA 0x2 (Value must > 1)
- //
- Name (URIU, 0x2)
- 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)
- }
- }
- }
|