Home | History | Annotate | Download | only in AcpiTablesPCAT
      1 /** @file
      2 Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
      3 This program and the accompanying materials
      4 are licensed and made available under the terms and conditions of the BSD License
      5 which accompanies this distribution.  The full text of the license may be found at
      6 http://opensource.org/licenses/bsd-license.php
      7 
      8 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
      9 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     10 
     11 **/
     12 
     13 Device(IOTD) {
     14   Name(_HID, "MSFT8000")
     15   Name(_CID, "MSFT8000")
     16 
     17   Name(_CRS, ResourceTemplate() {
     18     // Index 0
     19     SPISerialBus(            // Pin 5, 7, 9 , 11 of JP1 for SIO_SPI
     20       1,                     // Device selection
     21       PolarityLow,           // Device selection polarity
     22       FourWireMode,          // wiremode
     23       8,                     // databit len
     24       ControllerInitiated,   // slave mode
     25       8000000,               // Connection speed
     26       ClockPolarityLow,      // Clock polarity
     27       ClockPhaseSecond,      // clock phase
     28       "\\_SB.SPI1",          // ResourceSource: SPI bus controller name
     29       0,                     // ResourceSourceIndex
     30       ResourceConsumer,      // Resource usage
     31       JSPI,                  // DescriptorName: creates name for offset of resource descriptor
     32       )                      // Vendor Data
     33 
     34     // Index 1
     35     I2CSerialBus(            // Pin 13, 15 of JP1, for SIO_I2C5 (signal)
     36       0x00,                  // SlaveAddress: bus address (TBD)
     37       ,                      // SlaveMode: default to ControllerInitiated
     38       400000,                // ConnectionSpeed: in Hz
     39       ,                      // Addressing Mode: default to 7 bit
     40       "\\_SB.I2C6",          // ResourceSource: I2C bus controller name (For MinnowBoard Max, hardware I2C5(0-based) is reported as ACPI I2C6(1-based))
     41       ,
     42       ,
     43       JI2C,                  // Descriptor Name: creates name for offset of resource descriptor
     44       )                      // VendorData
     45 
     46     // Index 2
     47     UARTSerialBus(           // Pin 17, 19 of JP1, for SIO_UART2
     48       115200,                // InitialBaudRate: in bits ber second
     49       ,                      // BitsPerByte: default to 8 bits
     50       ,                      // StopBits: Defaults to one bit
     51       0xfc,                  // LinesInUse: 8 1-bit flags to declare line enabled
     52       ,                      // IsBigEndian: default to LittleEndian
     53       ,                      // Parity: Defaults to no parity
     54       ,                      // FlowControl: Defaults to no flow control
     55       32,                    // ReceiveBufferSize
     56       32,                    // TransmitBufferSize
     57       "\\_SB.URT2",          // ResourceSource: UART bus controller name
     58       ,
     59       ,
     60       UAR2,                  // DescriptorName: creates name for offset of resource descriptor
     61       )
     62 
     63     // Index 3
     64     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO2",) {0}  // Pin 21 of JP1 (GPIO_S5[00])
     65     // Index 4
     66     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO2",) {0}
     67 
     68     // Index 5
     69     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO2",) {1}  // Pin 23 of JP1 (GPIO_S5[01])
     70     // Index 6
     71     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO2",) {1}
     72 
     73     // Index 7
     74     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO2",) {2}  // Pin 25 of JP1 (GPIO_S5[02])
     75     // Index 8
     76     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO2",) {2}
     77 
     78     // Index 9
     79     UARTSerialBus(           // Pin 6, 8, 10, 12 of JP1, for SIO_UART1
     80       115200,                // InitialBaudRate: in bits ber second
     81       ,                      // BitsPerByte: default to 8 bits
     82       ,                      // StopBits: Defaults to one bit
     83       0xfc,                  // LinesInUse: 8 1-bit flags to declare line enabled
     84       ,                      // IsBigEndian: default to LittleEndian
     85       ,                      // Parity: Defaults to no parity
     86       FlowControlHardware,   // FlowControl: Defaults to no flow control
     87       32,                    // ReceiveBufferSize
     88       32,                    // TransmitBufferSize
     89       "\\_SB.URT1",          // ResourceSource: UART bus controller name
     90       ,
     91       ,
     92       UAR1,              // DescriptorName: creates name for offset of resource descriptor
     93       )
     94 
     95     // Index 10
     96     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {62}  // Pin 14 of JP1 (GPIO_SC[62])
     97     // Index 11
     98     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {62}
     99 
    100     // Index 12
    101     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {63}  // Pin 16 of JP1 (GPIO_SC[63])
    102     // Index 13
    103     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {63}
    104 
    105     // Index 14
    106     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {65}  // Pin 18 of JP1 (GPIO_SC[65])
    107     // Index 15
    108     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {65}
    109 
    110     // Index 16
    111     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {64}  // Pin 20 of JP1 (GPIO_SC[64])
    112     // Index 17
    113     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {64}
    114 
    115     // Index 18
    116     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {94}  // Pin 22 of JP1 (GPIO_SC[94])
    117     // Index 19
    118     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {94}
    119 
    120     // Index 20
    121     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {95}  // Pin 24 of JP1 (GPIO_SC[95])
    122     // Index 21
    123     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {95}
    124 
    125     // Index 22
    126     GpioIo (Shared, PullDefault, 0, 0, IoRestrictionNone, "\\_SB.GPO0",) {54}  // Pin 26 of JP1 (GPIO_SC[54])
    127     // Index 23
    128     GpioInt(Edge, ActiveBoth, SharedAndWake, PullNone, 0,"\\_SB.GPO0",) {54}
    129   })
    130 
    131   Name(_DSD, Package() {
    132     ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
    133     Package(1) {	  // Just one Property for IOT (at this time)
    134       Package(2) {	//The symbolic-identifiers property
    135         "symbolic-identifiers",
    136         Package() {	//Contains all the <resource index, symbolic-identifier> pairs
    137           0, "SPI0",
    138           1, "I2C5",
    139           2, "UART2",
    140           3, 21,       // Pin 21 of JP1 (GPIO_S5[00])
    141           4, 21,       // Pin 21 for separate resource.
    142           5, 23,       // Pin 23 of JP1 (GPIO_S5[01])
    143           6, 23,
    144           7, 25,       // Pin 25 of JP1 (GPIO_S5[02])
    145           8, 25,
    146           9, "UART1",
    147           10, 14,      // Pin 14 of JP1 (GPIO_SC[62])
    148           11, 14,
    149           12, 16,      // Pin 16 of JP1 (GPIO_SC[63])
    150           13, 16,
    151           14, 18,      // Pin 18 of JP1 (GPIO_SC[65])
    152           15, 18,
    153           16, 20,      // Pin 20 of JP1 (GPIO_SC[64])
    154           17, 20,
    155           18, 22,      // Pin 22 of JP1 (GPIO_SC[94])
    156           19, 22,
    157           20, 24,      // Pin 24 of JP1 (GPIO_SC[95])
    158           21, 24,
    159           22, 26,      // Pin 26 of JP1 (GPIO_SC[54])
    160           23, 26
    161         }
    162       }
    163     }
    164   })
    165 
    166   Method(_STA,0,Serialized) {
    167 
    168     //
    169     // Only report IoT virtual device when all pins' configuration follows MSFT's datasheet.
    170     //
    171     If (LEqual(IOT, 1)) {
    172       Return (0xF)
    173     }
    174 
    175     Return (0x0)
    176   }
    177 }
    178