Home | History | Annotate | Download | only in Include
      1 /** @file
      2 Header file for QuarkSCSocId Ioh.
      3 Copyright (c) 2013-2015 Intel Corporation.
      4 
      5 This program and the accompanying materials
      6 are licensed and made available under the terms and conditions of the BSD License
      7 which accompanies this distribution.  The full text of the license may be found at
      8 http://opensource.org/licenses/bsd-license.php
      9 
     10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 
     14 **/
     15 #ifndef _IOH_H_
     16 #define _IOH_H_
     17 
     18 #ifndef BIT0
     19 #define BIT0    0x01
     20 #define BIT1    0x02
     21 #define BIT2    0x04
     22 #define BIT3    0x08
     23 #define BIT4    0x10
     24 #define BIT5    0x20
     25 #define BIT6    0x40
     26 #define BIT7    0x80
     27 #define BIT8    0x100
     28 #define BIT9    0x200
     29 #define BIT00   0x00000001
     30 #define BIT01   0x00000002
     31 #define BIT02   0x00000004
     32 #define BIT03   0x00000008
     33 #define BIT04   0x00000010
     34 #define BIT05   0x00000020
     35 #define BIT06   0x00000040
     36 #define BIT07   0x00000080
     37 #define BIT08   0x00000100
     38 #define BIT09   0x00000200
     39 #define BIT10   0x00000400
     40 #define BIT11   0x00000800
     41 #define BIT12   0x00001000
     42 #define BIT13   0x00002000
     43 #define BIT14   0x00004000
     44 #define BIT15   0x00008000
     45 #define BIT16   0x00010000
     46 #define BIT17   0x00020000
     47 #define BIT18   0x00040000
     48 #define BIT19   0x00080000
     49 #define BIT20   0x00100000
     50 #define BIT21   0x00200000
     51 #define BIT22   0x00400000
     52 #define BIT23   0x00800000
     53 #define BIT24   0x01000000
     54 #define BIT25   0x02000000
     55 #define BIT26   0x04000000
     56 #define BIT27   0x08000000
     57 #define BIT28   0x10000000
     58 #define BIT29   0x20000000
     59 #define BIT30   0x40000000
     60 #define BIT31   0x80000000
     61 #endif
     62 
     63 #define IOH_PCI_CFG_ADDRESS(bus,dev,func,reg) \
     64     ((UINT32) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + \
     65     (((UINTN)func) << 8) + ((UINTN)reg) ))& 0x00000000ffffffff
     66 
     67 //----------------------------------------------------------------------------
     68 
     69 #define INTEL_VENDOR_ID         0x8086  // Intel Vendor ID
     70 
     71 //----------------------------------------------------------------------------
     72 // Pci Configuration Map Register Offsets
     73 //----------------------------------------------------------------------------
     74 #define PCI_REG_VID             0x00    // Vendor ID Register
     75 #define PCI_REG_DID             0x02    // Device ID Register
     76 #define PCI_REG_PCICMD          0x04    // PCI Command Register
     77 #define PCI_REG_PCISTS          0x06    // PCI Status Register
     78 #define PCI_REG_RID             0x08    // PCI Revision ID Register
     79 #define PCI_REG_PI              0x09    // Programming Interface
     80 #define PCI_REG_SCC             0x0a    // Sub Class Code Register
     81 #define PCI_REG_BCC             0x0b    // Base Class Code Register
     82 #define PCI_REG_PMLT            0x0d    // Primary Master Latnecy Timer
     83 #define PCI_REG_HDR             0x0e    // Header Type Register
     84 #define PCI_REG_PBUS            0x18    // Primary Bus Number Register
     85 #define PCI_REG_SBUS            0x19    // Secondary Bus Number Register
     86 #define PCI_REG_SUBUS           0x1a    // Subordinate Bus Number Register
     87 #define PCI_REG_SMLT            0x1b    // Secondary Master Latnecy Timer
     88 #define PCI_REG_IOBASE          0x1c    // I/O base Register
     89 #define PCI_REG_IOLIMIT         0x1d    // I/O Limit Register
     90 #define PCI_REG_SECSTATUS       0x1e    // Secondary Status Register
     91 #define PCI_REG_MEMBASE         0x20    // Memory Base Register
     92 #define PCI_REG_MEMLIMIT        0x22    // Memory Limit Register
     93 #define PCI_REG_PRE_MEMBASE     0x24    // Prefretchable memory Base register
     94 #define PCI_REG_PRE_MEMLIMIT    0x26    // Prefretchable memory Limit register
     95 #define PCI_REG_SVID0           0x2c    // Subsystem Vendor ID low byte
     96 #define PCI_REG_SVID1           0x2d    // Subsystem Vendor ID high byte
     97 #define PCI_REG_SID0            0x2e    // Subsystem ID low byte
     98 #define PCI_REG_SID1            0x2f    // Subsystem ID high byte
     99 #define PCI_REG_IOBASE_U        0x30    // I/O base Upper Register
    100 #define PCI_REG_IOLIMIT_U       0x32    // I/O Limit Upper Register
    101 #define PCI_REG_INTLINE         0x3c    // Interrupt Line Register
    102 #define PCI_REG_BRIDGE_CNTL     0x3e    // Bridge Control Register
    103 
    104 //---------------------------------------------------------------------------
    105 // QuarkSCSocId Packet Hub definitions
    106 //---------------------------------------------------------------------------
    107 
    108 #define PCIE_BRIDGE_VID_DID     0x88008086
    109 
    110 //---------------------------------------------------------------------------
    111 // Quark South Cluster definitions.
    112 //---------------------------------------------------------------------------
    113 
    114 #define IOH_BUS                           0
    115 #define IOH_PCI_IOSF2AHB_0_DEV_NUM        0x14
    116 #define IOH_PCI_IOSF2AHB_0_MAX_FUNCS      7
    117 #define IOH_PCI_IOSF2AHB_1_DEV_NUM        0x15
    118 #define IOH_PCI_IOSF2AHB_1_MAX_FUNCS      3
    119 
    120 //---------------------------------------------------------------------------
    121 // Quark South Cluster USB definitions.
    122 //---------------------------------------------------------------------------
    123 
    124 #define IOH_USB_BUS_NUMBER                IOH_BUS
    125 #define IOH_USB_CONTROLLER_MMIO_RANGE     0x1000
    126 #define IOH_MAX_OHCI_USB_CONTROLLERS      1
    127 #define IOH_MAX_EHCI_USB_CONTROLLERS      1
    128 #define IOH_MAX_USBDEVICE_USB_CONTROLLERS 1
    129 
    130 #define R_IOH_USB_VENDOR_ID               0x00
    131 #define   V_IOH_USB_VENDOR_ID               INTEL_VENDOR_ID
    132 #define R_IOH_USB_DEVICE_ID               0x02
    133 #define R_IOH_USB_COMMAND                 0x04
    134 #define   B_IOH_USB_COMMAND_BME             BIT2
    135 #define   B_IOH_USB_COMMAND_MSE             BIT1
    136 #define   B_IOH_USB_COMMAND_ISE             BIT0
    137 #define R_IOH_USB_MEMBAR                  0x10
    138 #define   B_IOH_USB_MEMBAR_ADDRESS_MASK     0xFFFFF000  // [31:12].
    139 #define R_IOH_USB_OHCI_HCCABAR            0x18
    140 
    141 //---------------------------------------------------------------------------
    142 // Quark South Cluster OHCI definitions
    143 //---------------------------------------------------------------------------
    144 #define IOH_USB_OHCI_DEVICE_NUMBER        IOH_PCI_IOSF2AHB_0_DEV_NUM
    145 #define IOH_OHCI_FUNCTION_NUMBER          0x04
    146 
    147 //---------------------------------------------------------------------------
    148 // Quark South Cluster EHCI definitions
    149 //---------------------------------------------------------------------------
    150 #define IOH_USB_EHCI_DEVICE_NUMBER        IOH_PCI_IOSF2AHB_0_DEV_NUM
    151 #define IOH_EHCI_FUNCTION_NUMBER          0x03
    152 
    153 //
    154 // EHCI memory mapped registers offset from memory BAR0.
    155 //
    156 #define R_IOH_EHCI_CAPLENGTH              0x00
    157 #define R_IOH_EHCI_INSNREG01              0x94
    158 #define   B_IOH_EHCI_INSNREG01_OUT_THRESHOLD_BP    (16)
    159 #define   B_IOH_EHCI_INSNREG01_OUT_THRESHOLD_MASK  (0xff << B_IOH_EHCI_INSNREG01_OUT_THRESHOLD_BP)
    160 #define   B_IOH_EHCI_INSNREG01_IN_THRESHOLD_BP     (0)
    161 #define   B_IOH_EHCI_INSNREG01_IN_THRESHOLD_MASK   (0xff << B_IOH_EHCI_INSNREG01_IN_THRESHOLD_BP)
    162 
    163 //
    164 // EHCI memory mapped registers offset from memory BAR0 + Cap length value.
    165 //
    166 #define R_IOH_EHCI_CONFIGFLAGS            0x40
    167 
    168 //---------------------------------------------------------------------------
    169 // Quark South Cluster USB Device definitions
    170 //---------------------------------------------------------------------------
    171 #define IOH_USBDEVICE_DEVICE_NUMBER       IOH_PCI_IOSF2AHB_0_DEV_NUM
    172 #define IOH_USBDEVICE_FUNCTION_NUMBER     0x02
    173 
    174 //
    175 // USB Device memory mapped registers offset from memory BAR0.
    176 //
    177 #define R_IOH_USBDEVICE_D_INTR_UDC_REG                      0x40c
    178 #define R_IOH_USBDEVICE_D_INTR_MSK_UDC_REG                  0x410
    179 #define   B_IOH_USBDEVICE_D_INTR_MSK_UDC_REG_MASK1_MASK       0xff
    180 #define R_IOH_USBDEVICE_EP_INTR_UDC_REG                     0x414
    181 #define R_IOH_USBDEVICE_EP_INTR_MSK_UDC_REG                 0x418
    182 #define   B_IOH_USBDEVICE_EP_INTR_MSK_UDC_REG_OUT_EP_MASK     0x000f0000
    183 #define   B_IOH_USBDEVICE_EP_INTR_MSK_UDC_REG_IN_EP_MASK      0x0000000f
    184 
    185 //---------------------------------------------------------------------------
    186 // Quark South Cluster 10/100 Mbps Ethernet Device definitions.
    187 //---------------------------------------------------------------------------
    188 #define IOH_MAC0_BUS_NUMBER                                 IOH_BUS
    189 #define IOH_MAC0_DEVICE_NUMBER                              IOH_PCI_IOSF2AHB_0_DEV_NUM
    190 #define IOH_MAC0_FUNCTION_NUMBER                            0x06
    191 #define IOH_MAC1_BUS_NUMBER                                 IOH_BUS
    192 #define IOH_MAC1_DEVICE_NUMBER                              IOH_PCI_IOSF2AHB_0_DEV_NUM
    193 #define IOH_MAC1_FUNCTION_NUMBER                            0x07
    194 
    195 //
    196 // MAC Device PCI config registers.
    197 //
    198 #define R_IOH_MAC_DEVICE_ID                                 0x02
    199 #define   V_IOH_MAC_VENDOR_ID                                 INTEL_VENDOR_ID
    200 #define R_IOH_MAC_DEVICE_ID                                 0x02
    201 #define   V_IOH_MAC_DEVICE_ID                                 0x0937
    202 #define R_IOH_MAC_COMMAND                                   0x04
    203 #define   B_IOH_MAC_COMMAND_BME                               BIT2
    204 #define   B_IOH_MAC_COMMAND_MSE                               BIT1
    205 #define   B_IOH_MAC_COMMAND_ISE                               BIT0
    206 #define R_IOH_MAC_MEMBAR                                    0x10
    207 #define   B_IOH_MAC_MEMBAR_ADDRESS_MASK                       0xFFFFF000
    208 
    209 //
    210 // LAN Device memory mapped registers offset from memory BAR0.
    211 //
    212 #define R_IOH_MAC_GMAC_REG_8                                0x20
    213 #define   B_IOH_MAC_USERVER_MASK                              0x0000FF00
    214 #define   B_IOH_MAC_SNPSVER_MASK                              0x000000FF
    215 #define R_IOH_MAC_GMAC_REG_16                               0x40
    216 #define   B_IOH_MAC_ADDRHI_MASK                               0x0000FFFF
    217 #define   B_IOH_MAC_AE                                        BIT31
    218 #define R_IOH_MAC_GMAC_REG_17                               0x44
    219 #define   B_IOH_MAC_ADDRLO_MASK                               0xFFFFFFFF
    220 
    221 //---------------------------------------------------------------------------
    222 // Quark I2C / GPIO definitions
    223 //---------------------------------------------------------------------------
    224 
    225 #define   V_IOH_I2C_GPIO_VENDOR_ID          INTEL_VENDOR_ID
    226 #define   V_IOH_I2C_GPIO_DEVICE_ID          0x0934
    227 
    228 #define R_IOH_I2C_MEMBAR                  0x10
    229 #define   B_IOH_I2C_GPIO_MEMBAR_ADDR_MASK   0xFFFFF000  // [31:12].
    230 
    231 #define GPIO_SWPORTA_DR                   0x00
    232 #define GPIO_SWPORTA_DDR                  0x04
    233 #define GPIO_INTEN                        0x30
    234 #define GPIO_INTMASK                      0x34
    235 #define GPIO_INTTYPE_LEVEL                0x38
    236 #define GPIO_INT_POLARITY                 0x3C
    237 #define GPIO_INTSTATUS                    0x40
    238 #define GPIO_RAW_INTSTATUS                0x44
    239 #define GPIO_DEBOUNCE                     0x48
    240 #define GPIO_PORTA_EOI                    0x4C
    241 #define GPIO_EXT_PORTA                    0x50
    242 #define GPIO_EXT_PORTB                    0x54
    243 #define GPIO_LS_SYNC                      0x60
    244 #define GPIO_CONFIG_REG2                  0x70
    245 #define GPIO_CONFIG_REG1                  0x74
    246 
    247 //---------------------------------------------------------------------------
    248 // Quark South Cluster UART definitions.
    249 //---------------------------------------------------------------------------
    250 
    251 #define R_IOH_UART_MEMBAR                 0x10
    252 #define   B_IOH_UART_MEMBAR_ADDRESS_MASK    0xFFFFF000  // [31:12].
    253 
    254 #endif
    255