blob: 9409a04845e9f5a14d3605ae61e9dd9ed537a84f [file] [log] [blame]
/*
* 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_ */