1 /* 2 * Copyright (c) 2023 Intel Corporation 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef _SEDI_SOC_REGS_H_ 8 #define _SEDI_SOC_REGS_H_ 9 10 #include "sedi_reg_defs.h" 11 12 /****** uart *****/ 13 14 /** Number of UART controllers. */ 15 typedef enum { 16 SEDI_UART_0 = 0, 17 SEDI_UART_1, 18 SEDI_UART_2, 19 SEDI_UART_NUM 20 } sedi_uart_t; 21 22 /* UART register base addresses. */ 23 SEDI_IREG_BASE_DEFINE(UART, 0, 0x08100000); 24 SEDI_IREG_BASE_DEFINE(UART, 1, 0x08102000); 25 SEDI_IREG_BASE_DEFINE(UART, 2, 0x08104000); 26 27 #define SEDI_UART_SFT_RST_REG (0x0430004C) 28 #define SEDI_UART_SFT_RST_MASK (0x7) 29 30 31 /****** dma *****/ 32 /*! 33 * \struct sedi_dma 34 * \brief DMA device bus ID 35 */ 36 typedef enum { 37 SEDI_DMA_0 = 0, 38 SEDI_DMA_NUM 39 } sedi_dma_t; 40 41 #define SEDI_DMA_0_REG_BASE (0x10100000) 42 43 /****** i2c *****/ 44 /*! 45 * \struct sedi_i2c 46 * \brief I2C device bus ID 47 */ 48 typedef enum { 49 SEDI_I2C_0 = 0, 50 SEDI_I2C_1, 51 SEDI_I2C_2, 52 SEDI_I2C_NUM 53 } sedi_i2c_t; 54 55 SEDI_IREG_BASE_DEFINE(I2C, 0, 0x0000); 56 SEDI_IREG_BASE_DEFINE(I2C, 1, 0x2000); 57 SEDI_IREG_BASE_DEFINE(I2C, 2, 0x4000); 58 59 #define I2C_FIFO_DEPTH (64) 60 61 /****** GPIO *****/ 62 63 /*! 64 * \struct sedi_gpio 65 * \brief GPIO controller device ID 66 */ 67 typedef enum { SEDI_GPIO_0 = 0, SEDI_GPIO_NUM } sedi_gpio_t; 68 69 #define ISH_PIN_NUM 36 70 #define SEDI_GPIO_SOC_PORT_NUM (2U) 71 72 #define SEDI_GPIO_0_REG_BASE (0x00100000) 73 74 75 typedef enum { 76 SEDI_HW_REV_INVALID = 0, 77 } sedi_hw_rev_t; 78 79 /****** WDT *****/ 80 81 /*! 82 * \struct sedi_watchdog 83 * \brief WATCHDOG device bus ID 84 */ 85 86 typedef enum { SEDI_WATCHDOG_0 = 0, SEDI_WATCHDOG_NUM } sedi_watchdog_t; 87 88 #define SEDI_WATCHDOG_0_REG_BASE 0x4900000 89 90 /****** HPET *****/ 91 SEDI_REG_BASE_DEFINE(HPET, 0x04700000); 92 93 #define SEDI_HPET_SOC_TIMER_NUM (3) 94 95 #define SEDI_IRQ_HPET_TIMER_0 (14) 96 #define SEDI_IRQ_HPET_TIMER_1 (0) /* fake IRQ number, same as timer 0's */ 97 98 /****** IPC *****/ 99 #define IPC_HOST_BASE (0x4100000) 100 #define IPC_CSME_BASE (0x4110000) 101 #define IPC_PMC_BASE (0x4111000) 102 103 /****** MISC *****/ 104 #define SEDI_MISC_BASE (0x04400000) 105 106 #define SEDI_RTC_COUNTER (SEDI_MISC_BASE + 0x70) 107 #define SEDI_RTC_COUNTER0 (SEDI_MISC_BASE + 0x70) 108 #define SEDI_RTC_COUNTER1 (SEDI_MISC_BASE + 0x74) 109 110 /****** PM *****/ 111 #define SEDI_PMU_BASE (0x04200000) 112 #define SEDI_CCU_BASE 0x04300000 113 114 #define SEDI_IRQ_RESET_PREP (6) 115 #define SEDI_IRQ_PCIEDEV (9) 116 #define SEDI_IRQ_PMU2IOAPIC (10) 117 118 /****** APIC *****/ 119 #define SEDI_IOAPIC_BASE 0xFEC00000 120 #define SEDI_LAPIC_BASE 0xFEE00000 121 122 #define SEDI_IOAPIC_IDX (SEDI_IOAPIC_BASE + 0x0000) 123 #define SEDI_IOAPIC_WDW (SEDI_IOAPIC_BASE + 0x0010) 124 #define SEDI_IOAPIC_EOI (SEDI_IOAPIC_BASE + 0x0040) 125 126 #define SEDI_IOAPIC_IOREDTBL 0x10 127 #define SEDI_IOAPIC_REDTBL_MASK 0x00010000 128 129 /****** SPI *****/ 130 /*! 131 * \struct sedi_spi 132 * \brief SPI device bus ID 133 */ 134 typedef enum { 135 SEDI_SPI_0 = 0, 136 SEDI_SPI_1, 137 SEDI_SPI_NUM 138 } sedi_spi_t; 139 140 #define SEDI_SPI_0_REG_BASE (0x8000000) 141 #define SEDI_SPI_1_REG_BASE (0x8002000) 142 143 #define SPI_FIFO_DEPTH (64) 144 145 146 #endif /* _SEDI_SOC_REGS_H_ */ 147