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 SEDI_IREG_BASE_DEFINE(DMA, 0, 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 SEDI_IREG_BASE_DEFINE(GPIO, 0, 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 SEDI_REG_BASE_DEFINE(WDT, 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 SEDI_IREG_BASE_DEFINE(IPC, HOST, 0x4100000); 100 SEDI_IREG_BASE_DEFINE(IPC, CSME, 0x4110000); 101 SEDI_IREG_BASE_DEFINE(IPC, PMC, 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 SEDI_IREG_BASE_DEFINE(SPI, 0, 0x8000000); 141 SEDI_IREG_BASE_DEFINE(SPI, 1, 0x8002000); 142 143 /**SPI physical addr for DMA transfer**/ 144 #define SEDI_SPI_0_REG_DMA 0x8000000 145 #define SEDI_SPI_1_REG_DMA 0x8002000 146 147 #define SPI_FIFO_DEPTH (64) 148 #define SEDI_SPI_USE_DMA (1) 149 150 151 #endif /* _SEDI_SOC_REGS_H_ */ 152