| /* |
| * Copyright (c) 2017 Jean-Paul Etienne <fractalclone@gmail.com> |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @file SoC configuration macros for the SiFive Freedom E310 processor |
| */ |
| |
| #ifndef __RISCV32_FE310_SOC_H_ |
| #define __RISCV32_FE310_SOC_H_ |
| |
| #include <soc_common.h> |
| |
| /* PLatform Level Interrupt Controller (PLIC) interrupt sources */ |
| |
| /* Watchdog Compare Interrupt */ |
| #define FE310_WDOGCMP_IRQ (RISCV_MAX_GENERIC_IRQ + 1) |
| |
| /* RTC Compare Interrupt */ |
| #define FE310_RTCCMP_IRQ (RISCV_MAX_GENERIC_IRQ + 2) |
| |
| /* UART Interrupts */ |
| #define FE310_UART_0_IRQ (RISCV_MAX_GENERIC_IRQ + 3) |
| #define FE310_UART_1_IRQ (RISCV_MAX_GENERIC_IRQ + 4) |
| |
| /* QSPI Interrupts */ |
| #define FE310_QSPI_0_IRQ (RISCV_MAX_GENERIC_IRQ + 5) |
| #define FE310_QSPI_1_IRQ (RISCV_MAX_GENERIC_IRQ + 6) |
| #define FE310_QSPI_2_IRQ (RISCV_MAX_GENERIC_IRQ + 7) |
| |
| /* GPIO Interrupts */ |
| #define FE310_GPIO_0_IRQ (RISCV_MAX_GENERIC_IRQ + 8) |
| #define FE310_GPIO_1_IRQ (RISCV_MAX_GENERIC_IRQ + 9) |
| #define FE310_GPIO_2_IRQ (RISCV_MAX_GENERIC_IRQ + 10) |
| #define FE310_GPIO_3_IRQ (RISCV_MAX_GENERIC_IRQ + 11) |
| #define FE310_GPIO_4_IRQ (RISCV_MAX_GENERIC_IRQ + 12) |
| #define FE310_GPIO_5_IRQ (RISCV_MAX_GENERIC_IRQ + 13) |
| #define FE310_GPIO_6_IRQ (RISCV_MAX_GENERIC_IRQ + 14) |
| #define FE310_GPIO_7_IRQ (RISCV_MAX_GENERIC_IRQ + 15) |
| #define FE310_GPIO_8_IRQ (RISCV_MAX_GENERIC_IRQ + 16) |
| #define FE310_GPIO_9_IRQ (RISCV_MAX_GENERIC_IRQ + 17) |
| #define FE310_GPIO_10_IRQ (RISCV_MAX_GENERIC_IRQ + 18) |
| #define FE310_GPIO_11_IRQ (RISCV_MAX_GENERIC_IRQ + 19) |
| #define FE310_GPIO_12_IRQ (RISCV_MAX_GENERIC_IRQ + 20) |
| #define FE310_GPIO_13_IRQ (RISCV_MAX_GENERIC_IRQ + 21) |
| #define FE310_GPIO_14_IRQ (RISCV_MAX_GENERIC_IRQ + 22) |
| #define FE310_GPIO_15_IRQ (RISCV_MAX_GENERIC_IRQ + 23) |
| #define FE310_GPIO_16_IRQ (RISCV_MAX_GENERIC_IRQ + 24) |
| #define FE310_GPIO_17_IRQ (RISCV_MAX_GENERIC_IRQ + 25) |
| #define FE310_GPIO_18_IRQ (RISCV_MAX_GENERIC_IRQ + 26) |
| #define FE310_GPIO_19_IRQ (RISCV_MAX_GENERIC_IRQ + 27) |
| #define FE310_GPIO_20_IRQ (RISCV_MAX_GENERIC_IRQ + 28) |
| #define FE310_GPIO_21_IRQ (RISCV_MAX_GENERIC_IRQ + 29) |
| #define FE310_GPIO_22_IRQ (RISCV_MAX_GENERIC_IRQ + 30) |
| #define FE310_GPIO_23_IRQ (RISCV_MAX_GENERIC_IRQ + 31) |
| #define FE310_GPIO_24_IRQ (RISCV_MAX_GENERIC_IRQ + 32) |
| #define FE310_GPIO_25_IRQ (RISCV_MAX_GENERIC_IRQ + 33) |
| #define FE310_GPIO_26_IRQ (RISCV_MAX_GENERIC_IRQ + 34) |
| #define FE310_GPIO_27_IRQ (RISCV_MAX_GENERIC_IRQ + 35) |
| #define FE310_GPIO_28_IRQ (RISCV_MAX_GENERIC_IRQ + 36) |
| #define FE310_GPIO_29_IRQ (RISCV_MAX_GENERIC_IRQ + 37) |
| #define FE310_GPIO_30_IRQ (RISCV_MAX_GENERIC_IRQ + 38) |
| #define FE310_GPIO_31_IRQ (RISCV_MAX_GENERIC_IRQ + 39) |
| |
| /* PWM Interrupts */ |
| #define FE310_PWM_0_CMP_0_IRQ (RISCV_MAX_GENERIC_IRQ + 40) |
| #define FE310_PWM_0_CMP_1_IRQ (RISCV_MAX_GENERIC_IRQ + 41) |
| #define FE310_PWM_0_CMP_2_IRQ (RISCV_MAX_GENERIC_IRQ + 42) |
| #define FE310_PWM_0_CMP_3_IRQ (RISCV_MAX_GENERIC_IRQ + 43) |
| |
| #define FE310_PWM_1_CMP_0_IRQ (RISCV_MAX_GENERIC_IRQ + 44) |
| #define FE310_PWM_1_CMP_1_IRQ (RISCV_MAX_GENERIC_IRQ + 45) |
| #define FE310_PWM_1_CMP_2_IRQ (RISCV_MAX_GENERIC_IRQ + 46) |
| #define FE310_PWM_1_CMP_3_IRQ (RISCV_MAX_GENERIC_IRQ + 47) |
| |
| #define FE310_PWM_2_CMP_0_IRQ (RISCV_MAX_GENERIC_IRQ + 48) |
| #define FE310_PWM_2_CMP_1_IRQ (RISCV_MAX_GENERIC_IRQ + 49) |
| #define FE310_PWM_2_CMP_2_IRQ (RISCV_MAX_GENERIC_IRQ + 50) |
| #define FE310_PWM_2_CMP_3_IRQ (RISCV_MAX_GENERIC_IRQ + 51) |
| |
| /* UART Configuration */ |
| #define FE310_UART_0_BASE_ADDR 0x10013000 |
| #define FE310_UART_1_BASE_ADDR 0x10023000 |
| |
| /* GPIO Configuration */ |
| #define FE310_GPIO_0_BASE_ADDR 0x10012000 |
| |
| /* PINMUX Configuration */ |
| #define FE310_PINMUX_0_BASE_ADDR (FE310_GPIO_0_BASE_ADDR + 0x38) |
| |
| /* PINMUX IO Hardware Functions */ |
| #define FE310_PINMUX_IOF0 0x00 |
| #define FE310_PINMUX_IOF1 0x01 |
| |
| /* PINMUX MAX PINS */ |
| #define FE310_PINMUX_PINS 32 |
| |
| /* Platform Level Interrupt Controller Configuration */ |
| #define FE310_PLIC_BASE_ADDR 0x0C000000 |
| #define FE310_PLIC_PRIO_BASE_ADDR FE310_PLIC_BASE_ADDR |
| #define FE310_PLIC_IRQ_EN_BASE_ADDR (FE310_PLIC_BASE_ADDR + 0x2000) |
| #define FE310_PLIC_REG_BASE_ADDR (FE310_PLIC_BASE_ADDR + 0x200000) |
| |
| #define FE310_PLIC_MAX_PRIORITY 7 |
| |
| /* Timer configuration */ |
| #define RISCV_MTIME_BASE 0x0200BFF8 |
| #define RISCV_MTIMECMP_BASE 0x02004000 |
| |
| /* lib-c hooks required RAM defined variables */ |
| #define RISCV_RAM_BASE CONFIG_RISCV_RAM_BASE_ADDR |
| #define RISCV_RAM_SIZE CONFIG_RISCV_RAM_SIZE |
| |
| #endif /* __RISCV32_FE310_SOC_H_ */ |