Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:00

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*
0004  *
0005  * Copyright (C) 2024 Kevin Kirspel
0006  *
0007  * Redistribution and use in source and binary forms, with or without
0008  * modification, are permitted provided that the following conditions
0009  * are met:
0010  * 1. Redistributions of source code must retain the above copyright
0011  *    notice, this list of conditions and the following disclaimer.
0012  * 2. Redistributions in binary form must reproduce the above copyright
0013  *    notice, this list of conditions and the following disclaimer in the
0014  *    documentation and/or other materials provided with the distribution.
0015  *
0016  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
0017  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0018  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0019  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
0020  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
0021  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
0022  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
0023  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
0024  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
0025  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
0026  * SUCH DAMAGE.
0027  */
0028 
0029 #ifndef _ALTERA_AVALON_HBUS_REGS_H
0030 #define _ALTERA_AVALON_HBUS_REGS_H
0031 
0032 #include <bsp_system.h>
0033 
0034 /* CSR */
0035 #define ALTERA_HBUS_CSR_RACT_MSK            (0x1)
0036 #define ALTERA_HBUS_CSR_RACT_OFST           (0)
0037 #define ALTERA_HBUS_CSR_RDECERR_MSK         (0x100)
0038 #define ALTERA_HBUS_CSR_RDECERR_OFST        (8)
0039 #define ALTERA_HBUS_CSR_RTRSERR_MSK         (0x200)
0040 #define ALTERA_HBUS_CSR_RTRSERR_OFST        (9)
0041 #define ALTERA_HBUS_CSR_RRSTOERR_MSK        (0x400)
0042 #define ALTERA_HBUS_CSR_RRSTOERR_OFST       (10)
0043 #define ALTERA_HBUS_CSR_RDSSTALL_MSK        (0x800)
0044 #define ALTERA_HBUS_CSR_RDSSTALL_OFST       (11)
0045 #define ALTERA_HBUS_CSR_WACT_MSK            (0x10000)
0046 #define ALTERA_HBUS_CSR_WACT_OFST           (16)
0047 #define ALTERA_HBUS_CSR_WDECERR_MSK         (0x1000000)
0048 #define ALTERA_HBUS_CSR_WDECERR_OFST        (24)
0049 #define ALTERA_HBUS_CSR_WTRSERR_MSK         (0x2000000)
0050 #define ALTERA_HBUS_CSR_WTRSERR_OFST        (25)
0051 #define ALTERA_HBUS_CSR_WRSTOERR_MSK        (0x4000000)
0052 #define ALTERA_HBUS_CSR_WRSTOERR_OFST       (26)
0053 
0054 /* IEN */
0055 #define ALTERA_HBUS_IEN_RPCINTE_MSK         (0x1)
0056 #define ALTERA_HBUS_IEN_RPCINTE_OFST        (0)
0057 #define ALTERA_HBUS_IEN_INTP_MSK            (0x80000000)
0058 #define ALTERA_HBUS_IEN_INTP_OFST           (31)
0059 
0060 /* ISR */
0061 #define ALTERA_HBUS_ISR_RPCINTS_MSK         (0x1)
0062 #define ALTERA_HBUS_ISR_RPCINTS_OFST        (0)
0063 
0064 /* MBR */
0065 #define ALTERA_HBUS_MBR_ADDRESS_MSK         (0xFF000000)
0066 #define ALTERA_HBUS_MBR_ADDRESS(x)          (x & ALTERA_HBUS_MBR_ADDRESS_MSK)
0067 
0068 /* MCR */
0069 #define ALTERA_HBUS_MCR_WRAPSIZE_MSK        (0x3)
0070 #define ALTERA_HBUS_MCR_WRAPSIZE_OFST       (0)
0071 #define ALTERA_HBUS_MCR_DEVTYPE_MSK         (0x10)
0072 #define ALTERA_HBUS_MCR_DEVTYPE_OFST        (4)
0073 #define ALTERA_HBUS_MCR_CRT_MSK             (0x20)
0074 #define ALTERA_HBUS_MCR_CRT_OFST            (5)
0075 #define ALTERA_HBUS_MCR_ACS_MSK             (0x10000)
0076 #define ALTERA_HBUS_MCR_ACS_OFST            (16)
0077 #define ALTERA_HBUS_MCR_TCMO_MSK            (0x20000)
0078 #define ALTERA_HBUS_MCR_TCMO_OFST           (17)
0079 #define ALTERA_HBUS_MCR_MAXLEN_MSK          (0x3FC0000)
0080 #define ALTERA_HBUS_MCR_MAXLEN_OFST         (18)
0081 #define ALTERA_HBUS_MCR_MAXEN_MSK           (0x80000000)
0082 #define ALTERA_HBUS_MCR_MAXEN_OFST          (31)
0083 
0084 #define ALTERA_HBUS_MCR_WRAPSIZE_SELECT(x)  \
0085   ((x) == 32 ? 0x3 : (x) == 64 ? 0x1 : (x) == 16 ? 0x2 : 0x3)
0086 #define ALTERA_HBUS_MCR_WRAPSIZE(x)         \
0087   ((ALTERA_HBUS_MCR_WRAPSIZE_SELECT(x) << ALTERA_HBUS_MCR_WRAPSIZE_OFST) & \
0088   ALTERA_HBUS_MCR_WRAPSIZE_MSK)
0089 #define ALTERA_HBUS_MCR_DEVTYPE(x)          \
0090   (((x) << ALTERA_HBUS_MCR_DEVTYPE_OFST) & ALTERA_HBUS_MCR_DEVTYPE_MSK)
0091 #define ALTERA_HBUS_MCR_CRT(x)              \
0092   (((x) << ALTERA_HBUS_MCR_CRT_OFST) & ALTERA_HBUS_MCR_CRT_MSK)
0093 #define ALTERA_HBUS_MCR_CRT_UPDATE(r, x)    \
0094   ((r) = ((r) & ALTERA_HBUS_MCR_CRT_MSK) | ALTERA_HBUS_MCR_CRT(x))
0095 #define ALTERA_HBUS_MCR_ACS(x)              \
0096   (((x) << ALTERA_HBUS_MCR_ACS_OFST) & ALTERA_HBUS_MCR_ACS_MSK)
0097 #define ALTERA_HBUS_MCR_TCMO(x)             \
0098   (((x) << ALTERA_HBUS_MCR_TCMO_OFST) & ALTERA_HBUS_MCR_TCMO_MSK)
0099 #define ALTERA_HBUS_MCR_MAXLEN(x)           \
0100   (((((x) / 2) - 1) << ALTERA_HBUS_MCR_MAXLEN_OFST) & \
0101   ALTERA_HBUS_MCR_MAXLEN_MSK)
0102 #define ALTERA_HBUS_MCR_MAXEN(x)            \
0103   (((x) << ALTERA_HBUS_MCR_MAXEN_OFST) & ALTERA_HBUS_MCR_MAXEN_MSK)
0104 
0105 /* MTR */
0106 #define ALTERA_HBUS_MTR_LTCY_MSK            (0xF)
0107 #define ALTERA_HBUS_MTR_LTCY_OFST           (0)
0108 #define ALTERA_HBUS_MTR_RFU_MSK             (0xF0)
0109 #define ALTERA_HBUS_MTR_RFU_OFST            (4)
0110 #define ALTERA_HBUS_MTR_WCSH_MSK            (0xF00)
0111 #define ALTERA_HBUS_MTR_WCSH_OFST           (8)
0112 #define ALTERA_HBUS_MTR_RCSH_MSK            (0xF000)
0113 #define ALTERA_HBUS_MTR_RCSH_OFST           (12)
0114 #define ALTERA_HBUS_MTR_WCSS_MSK            (0xF0000)
0115 #define ALTERA_HBUS_MTR_WCSS_OFST           (16)
0116 #define ALTERA_HBUS_MTR_RCSS_MSK            (0xF00000)
0117 #define ALTERA_HBUS_MTR_RCSS_OFST           (20)
0118 #define ALTERA_HBUS_MTR_WCSHI_MSK           (0xF000000)
0119 #define ALTERA_HBUS_MTR_WCSHI_OFST          (24)
0120 #define ALTERA_HBUS_MTR_RCSHI_MSK           (0xF0000000)
0121 #define ALTERA_HBUS_MTR_RCSHI_OFST          (28)
0122 
0123 #define ALTERA_HBUS_MTR_LTCY_SELECT(x)      \
0124   ((x) == 6 ? 0x1 : (x) == 4 ? 0xf : (x) == 5 ? 0x0 : (x) == 3 ? 0xe : 0x1)
0125 #define ALTERA_HBUS_MTR_LTCY(x)             \
0126   ((ALTERA_HBUS_MTR_LTCY_SELECT(x) << ALTERA_HBUS_MTR_LTCY_OFST) & \
0127   ALTERA_HBUS_MTR_LTCY_MSK)
0128 
0129 /* GPOR */
0130 #define ALTERA_HBUS_GPOR_GPO_MSK            (0x3)
0131 #define ALTERA_HBUS_GPOR_GPO_OFST           (0)
0132 
0133 /* WPR */
0134 #define ALTERA_HBUS_WPR_WP_MSK              (0x1)
0135 #define ALTERA_HBUS_WPR_WP_OFST             (0)
0136 
0137 /* LBR */
0138 #define ALTERA_HBUS_LBR_LOOPBACK_MSK        (0x1)
0139 #define ALTERA_HBUS_LBR_LOOPBACK_OFST       (0)
0140 
0141 /* TAR */
0142 #define ALTERA_HBUS_TAR_WTA_MSK             (0x3)
0143 #define ALTERA_HBUS_TAR_WTA_OFST            (0)
0144 #define ALTERA_HBUS_TAR_RTA_MSK             (0x30)
0145 #define ALTERA_HBUS_TAR_RTA_OFST            (4)
0146 
0147 #ifdef __cplusplus
0148 extern "C" {
0149 #endif
0150 
0151 typedef struct
0152 {
0153   volatile uint32_t csr;
0154   volatile uint32_t ien;
0155   volatile uint32_t isr;
0156   volatile uint32_t icr;
0157   volatile uint32_t mbr0;
0158   volatile uint32_t mbr1;
0159   volatile uint32_t mbr2;
0160   volatile uint32_t mbr3;
0161   volatile uint32_t mcr0;
0162   volatile uint32_t mcr1;
0163   volatile uint32_t mcr2;
0164   volatile uint32_t mcr3;
0165   volatile uint32_t mtr0;
0166   volatile uint32_t mtr1;
0167   volatile uint32_t mtr2;
0168   volatile uint32_t mtr3;
0169   volatile uint32_t gpor;
0170   volatile uint32_t wpr;
0171   volatile uint32_t lbr;
0172   volatile uint32_t tar;
0173 }altera_avalon_hbus_ctrl_regs;
0174 
0175 #define HBUS_CTRL_REGS \
0176   (( volatile altera_avalon_hbus_ctrl_regs* ) \
0177   HYPERBUS_CTRL_ALTERA_AXI4_SLAVE_REGISTER_BASE )
0178 
0179 #ifdef __cplusplus
0180 }
0181 #endif
0182 
0183 #endif