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 /**DMA block TS**/ 44 #define SEDI_DMA_PERIPH_MAX_SIZE 4096 45 #define SEDI_DMA_PERIPH_MAX_SIZE_SHIFT 12 46 47 /****** i2c *****/ 48 /*! 49 * \struct sedi_i2c 50 * \brief I2C device bus ID 51 */ 52 typedef enum { 53 SEDI_I2C_0 = 0, 54 SEDI_I2C_1, 55 SEDI_I2C_2, 56 SEDI_I2C_NUM 57 } sedi_i2c_t; 58 59 SEDI_IREG_BASE_DEFINE(I2C, 0, 0x0000); 60 SEDI_IREG_BASE_DEFINE(I2C, 1, 0x2000); 61 SEDI_IREG_BASE_DEFINE(I2C, 2, 0x4000); 62 63 #define I2C_FIFO_DEPTH (64) 64 65 /****** GPIO *****/ 66 67 /*! 68 * \struct sedi_gpio 69 * \brief GPIO controller device ID 70 */ 71 typedef enum { SEDI_GPIO_0 = 0, SEDI_GPIO_NUM } sedi_gpio_t; 72 73 #define ISH_PIN_NUM 36 74 #define SEDI_GPIO_SOC_PORT_NUM (2U) 75 76 SEDI_IREG_BASE_DEFINE(GPIO, 0, 0x00100000); 77 78 79 typedef enum { 80 SEDI_HW_REV_INVALID = 0, 81 } sedi_hw_rev_t; 82 83 /****** WDT *****/ 84 85 /*! 86 * \struct sedi_watchdog 87 * \brief WATCHDOG device bus ID 88 */ 89 90 typedef enum { SEDI_WATCHDOG_0 = 0, SEDI_WATCHDOG_NUM } sedi_watchdog_t; 91 92 SEDI_REG_BASE_DEFINE(WDT, 0x4900000); 93 94 /****** HPET *****/ 95 SEDI_REG_BASE_DEFINE(HPET, 0x04700000); 96 97 #define SEDI_HPET_SOC_TIMER_NUM (3) 98 99 #define SEDI_IRQ_HPET_TIMER_0 (14) 100 #define SEDI_IRQ_HPET_TIMER_1 (0) /* fake IRQ number, same as timer 0's */ 101 102 /****** IPC *****/ 103 SEDI_IREG_BASE_DEFINE(IPC, HOST, 0x4100000); 104 SEDI_IREG_BASE_DEFINE(IPC, CSME, 0x4110000); 105 SEDI_IREG_BASE_DEFINE(IPC, PMC, 0x4111000); 106 107 /****** MISC *****/ 108 #define SEDI_MISC_BASE (0x04400000) 109 110 #define SEDI_RTC_COUNTER (SEDI_MISC_BASE + 0x70) 111 #define SEDI_RTC_COUNTER0 (SEDI_MISC_BASE + 0x70) 112 #define SEDI_RTC_COUNTER1 (SEDI_MISC_BASE + 0x74) 113 114 /****** PM *****/ 115 #define SEDI_PMU_BASE (0x04200000) 116 #define SEDI_CCU_BASE 0x04300000 117 118 #define SEDI_IRQ_RESET_PREP (6) 119 #define SEDI_IRQ_PCIEDEV (9) 120 #define SEDI_IRQ_PMU2IOAPIC (10) 121 122 /****** APIC *****/ 123 #define SEDI_IOAPIC_BASE 0xFEC00000 124 #define SEDI_LAPIC_BASE 0xFEE00000 125 126 #define SEDI_IOAPIC_IDX (SEDI_IOAPIC_BASE + 0x0000) 127 #define SEDI_IOAPIC_WDW (SEDI_IOAPIC_BASE + 0x0010) 128 #define SEDI_IOAPIC_EOI (SEDI_IOAPIC_BASE + 0x0040) 129 130 #define SEDI_IOAPIC_IOREDTBL 0x10 131 #define SEDI_IOAPIC_REDTBL_MASK 0x00010000 132 133 /****** SPI *****/ 134 /*! 135 * \struct sedi_spi 136 * \brief SPI device bus ID 137 */ 138 typedef enum { 139 SEDI_SPI_0 = 0, 140 SEDI_SPI_1, 141 SEDI_SPI_NUM 142 } sedi_spi_t; 143 144 SEDI_IREG_BASE_DEFINE(SPI, 0, 0x8000000); 145 SEDI_IREG_BASE_DEFINE(SPI, 1, 0x8002000); 146 147 /**SPI physical addr for DMA transfer**/ 148 #define SEDI_SPI_0_REG_DMA 0x8000000 149 #define SEDI_SPI_1_REG_DMA 0x8002000 150 151 #define SPI_FIFO_DEPTH (64) 152 #define SEDI_SPI_USE_DMA (1) 153 154 155 #endif /* _SEDI_SOC_REGS_H_ */ 156