mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-18 10:54:37 +00:00

Add the necessary DSDT files copied from tianocore to boot the RPi4. In addition generate a board specific SSDT to dynamically enable/disable ACPI devices based on FDT. This is required to support the various variants and boot options. It also allows to test the code on QEMU 9.0 without modifications, since it doesn't emulate PCIe yet. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Simon Glass <sjg@chromium.org> Cc: Matthias Brugger <mbrugger@suse.com> Cc: Peter Robinson <pbrobinson@gmail.com>
195 lines
11 KiB
Text
195 lines
11 KiB
Text
/** @file
|
|
*
|
|
* [DSDT] RHProxy device to enable WinRT API (RHPX)
|
|
*
|
|
* Copyright (c) 2018, Andrey Warkentin <andrey.warkentin@gmail.com>
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
*
|
|
**/
|
|
|
|
Device (RHPX)
|
|
{
|
|
Name (_HID, "MSFT8000")
|
|
Name (_CID, "MSFT8000")
|
|
Name (_UID, 1)
|
|
|
|
Name(_CRS, ResourceTemplate ()
|
|
{
|
|
// Index 0
|
|
SPISerialBus ( // SCKL - GPIO 11 - Pin 23
|
|
// MOSI - GPIO 10 - Pin 19
|
|
// MISO - GPIO 9 - Pin 21
|
|
// CE0 - GPIO 8 - Pin 24
|
|
0, // Device selection (CE0)
|
|
PolarityLow, // Device selection polarity
|
|
FourWireMode, // WireMode
|
|
8, // DataBit len
|
|
ControllerInitiated, // Slave mode
|
|
4000000, // Connection speed
|
|
ClockPolarityLow, // Clock polarity
|
|
ClockPhaseFirst, // Clock phase
|
|
"\\_SB.GDV0.SPI0", // ResourceSource: SPI bus controller name
|
|
0, // ResourceSourceIndex
|
|
// Resource usage
|
|
// DescriptorName: creates name for offset of resource descriptor
|
|
) // Vendor Data
|
|
|
|
// Index 1
|
|
SPISerialBus ( // SCKL - GPIO 11 - Pin 23
|
|
// MOSI - GPIO 10 - Pin 19
|
|
// MISO - GPIO 9 - Pin 21
|
|
// CE1 - GPIO 7 - Pin 26
|
|
1, // Device selection (CE1)
|
|
PolarityLow, // Device selection polarity
|
|
FourWireMode, // WireMode
|
|
8, // DataBit len
|
|
ControllerInitiated, // Slave mode
|
|
4000000, // Connection speed
|
|
ClockPolarityLow, // Clock polarity
|
|
ClockPhaseFirst, // Clock phase
|
|
"\\_SB.GDV0.SPI0", // ResourceSource: SPI bus controller name
|
|
0, // ResourceSourceIndex
|
|
// Resource usage
|
|
// DescriptorName: creates name for offset of resource descriptor
|
|
) // Vendor Data
|
|
|
|
// Index 2
|
|
I2CSerialBus ( // Pin 3 (GPIO2, SDA1), 5 (GPIO3, SCL1)
|
|
0xFFFF, // SlaveAddress: placeholder
|
|
, // SlaveMode: default to ControllerInitiated
|
|
0, // ConnectionSpeed: placeholder
|
|
, // Addressing Mode: default to 7 bit
|
|
"\\_SB.GDV0.I2C1", // ResourceSource: I2C bus controller name
|
|
,
|
|
,
|
|
, // Descriptor Name: creates name for offset of resource descriptor
|
|
) // Vendor Data
|
|
|
|
// Index 3
|
|
SPISerialBus ( // SPI1_SCLK - GPIO21
|
|
// SPI1_MOSI - GPIO20
|
|
// SPI1_MISO - GPIO19
|
|
// SPI1_CE2_N - GPIO16
|
|
2, // Device selection (CE2)
|
|
PolarityLow, // Device selection polarity
|
|
FourWireMode, // WireMode
|
|
8, // DataBit len
|
|
ControllerInitiated, // Slave mode
|
|
4000000, // Connection speed
|
|
ClockPolarityLow, // Clock polarity
|
|
ClockPhaseFirst, // Clock phase
|
|
"\\_SB.GDV0.SPI1", // ResourceSource: SPI bus controller name
|
|
0, // ResourceSourceIndex
|
|
// Resource usage
|
|
// DescriptorName: creates name for offset of resource descriptor
|
|
) // Vendor Data
|
|
|
|
// GPIO 2
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 2 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 2 }
|
|
// GPIO 3
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 3 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 3 }
|
|
// GPIO 4
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 4 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 4 }
|
|
// GPIO 5
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 5 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 5 }
|
|
// GPIO 6
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 6 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 6 }
|
|
// GPIO 7
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 7 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 7 }
|
|
// GPIO 8
|
|
GpioIO (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 8 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.GDV0.GPI0",) { 8 }
|
|
// GPIO 9
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 9 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 9 }
|
|
// GPIO 10
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 10 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 10 }
|
|
// GPIO 11
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 11 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 11 }
|
|
// GPIO 12
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 12 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 12 }
|
|
// GPIO 13
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 13 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 13 }
|
|
// NTRAID#MSFT-7141401-2016/04/7-jordanrh - disable UART muxing
|
|
// until a proper solution can be created for the dmap conflict
|
|
// GPIO 14 - UART TX
|
|
// GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 14 }
|
|
// GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 14 }
|
|
// GPIO 15 - UART RX
|
|
// GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 15 }
|
|
// GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 15 }
|
|
// GPIO 16
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 16 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 16 }
|
|
// GPIO 17
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 17 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 17 }
|
|
// GPIO 18
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 18 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 18 }
|
|
// GPIO 19
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 19 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 19 }
|
|
// GPIO 20
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 20 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 20 }
|
|
// GPIO 21
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 21 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 21 }
|
|
// GPIO 22
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 22 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 22 }
|
|
// GPIO 23
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 23 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 23 }
|
|
// GPIO 24
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 24 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 24 }
|
|
// GPIO 25
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 25 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 25 }
|
|
// GPIO 26
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 26 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 26 }
|
|
// GPIO 27
|
|
GpioIO (Shared, PullDown, 0, 0, IoRestrictionNone, "\\_SB.GDV0.GPI0", 0, ResourceConsumer,,) { 27 }
|
|
GpioInt (Edge, ActiveBoth, Shared, PullDown, 0, "\\_SB.GDV0.GPI0",) { 27 }
|
|
})
|
|
|
|
Name (_DSD, Package()
|
|
{
|
|
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
|
|
Package ()
|
|
{
|
|
// Reference http://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md
|
|
// SPI 0
|
|
Package (2) { "bus-SPI-SPI0", Package() { 0, 1 } }, // Index 0 & 1
|
|
Package (2) { "SPI0-MinClockInHz", 7629 }, // 7629 Hz
|
|
Package (2) { "SPI0-MaxClockInHz", 125000000 }, // 125 MHz
|
|
Package (2) { "SPI0-SupportedDataBitLengths", Package() { 8 } }, // Data Bit Length
|
|
// I2C1
|
|
Package (2) { "bus-I2C-I2C1", Package() { 2 } },
|
|
// GPIO Pin Count and supported drive modes
|
|
Package (2) { "GPIO-PinCount", 54 },
|
|
Package (2) { "GPIO-UseDescriptorPinNumbers", 1 },
|
|
Package (2) { "GPIO-SupportedDriveModes", 0xf }, // InputHighImpedance, InputPullUp, InputPullDown, OutputCmos
|
|
// SPI 1
|
|
Package (2) { "bus-SPI-SPI1", Package() { 3 }}, // Index 3
|
|
Package (2) { "SPI1-MinClockInHz", 30511 }, // 30.5 kHz
|
|
Package (2) { "SPI1-MaxClockInHz", 20000000 }, // 20 MHz
|
|
Package (2) { "SPI1-SupportedDataBitLengths", Package() { 8 } }, // Data Bit Length
|
|
}
|
|
})
|
|
}
|