From: "Steven J. Hill" <Steven.Hill@xxxxxxxxxx> Update CIU_FUSE register to support newer platforms. Also, simplify the other register functions. Only values for CIU_FUSE changed, the others remain the same. Signed-off-by: Steven J. Hill <steven.hill@xxxxxxxxxx> Acked-by: David Daney <david.daney@xxxxxxxxxx> --- arch/mips/include/asm/octeon/cvmx-ciu-defs.h | 166 +++++++++++---------------- 1 file changed, 69 insertions(+), 97 deletions(-) diff --git a/arch/mips/include/asm/octeon/cvmx-ciu-defs.h b/arch/mips/include/asm/octeon/cvmx-ciu-defs.h index 6e61792..4d3d36f 100644 --- a/arch/mips/include/asm/octeon/cvmx-ciu-defs.h +++ b/arch/mips/include/asm/octeon/cvmx-ciu-defs.h @@ -4,7 +4,7 @@ * Contact: support@xxxxxxxxxxxxxxxxxx * This file is part of the OCTEON SDK * - * Copyright (c) 2003-2012 Cavium Networks + * Copyright (c) 2003-2017 Cavium, Inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, Version 2, as @@ -43,7 +43,31 @@ #define CVMX_CIU_EN2_PPX_IP4(offset) (CVMX_ADD_IO_SEG(0x000107000000A400ull) + ((offset) & 15) * 8) #define CVMX_CIU_EN2_PPX_IP4_W1C(offset) (CVMX_ADD_IO_SEG(0x000107000000CC00ull) + ((offset) & 15) * 8) #define CVMX_CIU_EN2_PPX_IP4_W1S(offset) (CVMX_ADD_IO_SEG(0x000107000000AC00ull) + ((offset) & 15) * 8) -#define CVMX_CIU_FUSE (CVMX_ADD_IO_SEG(0x0001070000000728ull)) +#define CVMX_CIU_FUSE CVMX_CIU_FUSE_FUNC() +static inline uint64_t CVMX_CIU_FUSE_FUNC(void) +{ + switch (cvmx_get_octeon_family() & OCTEON_FAMILY_MASK) { + case OCTEON_CN30XX: + case OCTEON_CN31XX: + case OCTEON_CN38XX: + case OCTEON_CN50XX: + case OCTEON_CN52XX: + case OCTEON_CN56XX: + case OCTEON_CN58XX: + case OCTEON_CN61XX: + case OCTEON_CN63XX: + case OCTEON_CN66XX: + case OCTEON_CN68XX: + case OCTEON_CN70XX: + case OCTEON_CNF71XX: + default: + return CVMX_ADD_IO_SEG(0x0001070000000728ull); + case OCTEON_CN73XX: + case OCTEON_CN78XX: + case OCTEON_CNF75XX: + return CVMX_ADD_IO_SEG(0x00010100000001A0ull); + } +} #define CVMX_CIU_GSTOP (CVMX_ADD_IO_SEG(0x0001070000000710ull)) #define CVMX_CIU_INT33_SUM0 (CVMX_ADD_IO_SEG(0x0001070000000110ull)) #define CVMX_CIU_INTX_EN0(offset) (CVMX_ADD_IO_SEG(0x0001070000000200ull) + ((offset) & 63) * 16) @@ -64,94 +88,47 @@ #define CVMX_CIU_INT_SUM1 (CVMX_ADD_IO_SEG(0x0001070000000108ull)) static inline uint64_t CVMX_CIU_MBOX_CLRX(unsigned long offset) { - switch (cvmx_get_octeon_family()) { - case OCTEON_CN30XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN52XX & OCTEON_FAMILY_MASK: - case OCTEON_CNF71XX & OCTEON_FAMILY_MASK: - case OCTEON_CN61XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN31XX & OCTEON_FAMILY_MASK: - case OCTEON_CN50XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN38XX & OCTEON_FAMILY_MASK: - case OCTEON_CN58XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN56XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN66XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN63XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; - case OCTEON_CN68XX & OCTEON_FAMILY_MASK: + if (cvmx_get_octeon_family() == (OCTEON_CN68XX & OCTEON_FAMILY_MASK)) return CVMX_ADD_IO_SEG(0x0001070100100600ull) + (offset) * 8; - } - return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; + else + return CVMX_ADD_IO_SEG(0x0001070000000680ull) + (offset) * 8; } - static inline uint64_t CVMX_CIU_MBOX_SETX(unsigned long offset) { - switch (cvmx_get_octeon_family()) { - case OCTEON_CN30XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN52XX & OCTEON_FAMILY_MASK: - case OCTEON_CNF71XX & OCTEON_FAMILY_MASK: - case OCTEON_CN61XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN31XX & OCTEON_FAMILY_MASK: - case OCTEON_CN50XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN38XX & OCTEON_FAMILY_MASK: - case OCTEON_CN58XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN56XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN66XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN63XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; - case OCTEON_CN68XX & OCTEON_FAMILY_MASK: + if (cvmx_get_octeon_family() == (OCTEON_CN68XX & OCTEON_FAMILY_MASK)) return CVMX_ADD_IO_SEG(0x0001070100100400ull) + (offset) * 8; - } - return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; + else + return CVMX_ADD_IO_SEG(0x0001070000000600ull) + (offset) * 8; } - #define CVMX_CIU_NMI (CVMX_ADD_IO_SEG(0x0001070000000718ull)) #define CVMX_CIU_PCI_INTA (CVMX_ADD_IO_SEG(0x0001070000000750ull)) #define CVMX_CIU_PP_BIST_STAT (CVMX_ADD_IO_SEG(0x00010700000007E0ull)) #define CVMX_CIU_PP_DBG (CVMX_ADD_IO_SEG(0x0001070000000708ull)) static inline uint64_t CVMX_CIU_PP_POKEX(unsigned long offset) { - switch (cvmx_get_octeon_family()) { - case OCTEON_CN30XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN52XX & OCTEON_FAMILY_MASK: - case OCTEON_CNF71XX & OCTEON_FAMILY_MASK: - case OCTEON_CN61XX & OCTEON_FAMILY_MASK: - case OCTEON_CN70XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN31XX & OCTEON_FAMILY_MASK: - case OCTEON_CN50XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN38XX & OCTEON_FAMILY_MASK: - case OCTEON_CN58XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN56XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN66XX & OCTEON_FAMILY_MASK: + switch (cvmx_get_octeon_family() & OCTEON_FAMILY_MASK) { + case OCTEON_CN30XX: + case OCTEON_CN31XX: + case OCTEON_CN38XX: + case OCTEON_CN50XX: + case OCTEON_CN52XX: + case OCTEON_CN56XX: + case OCTEON_CN58XX: + case OCTEON_CN61XX: + case OCTEON_CN63XX: + case OCTEON_CN66XX: + case OCTEON_CN70XX: + case OCTEON_CNF71XX: + default: return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN63XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; - case OCTEON_CN68XX & OCTEON_FAMILY_MASK: + case OCTEON_CN68XX: return CVMX_ADD_IO_SEG(0x0001070100100200ull) + (offset) * 8; - case OCTEON_CNF75XX & OCTEON_FAMILY_MASK: - case OCTEON_CN73XX & OCTEON_FAMILY_MASK: - case OCTEON_CN78XX & OCTEON_FAMILY_MASK: + case OCTEON_CN73XX: + case OCTEON_CN78XX: + case OCTEON_CNF75XX: return CVMX_ADD_IO_SEG(0x0001010000030000ull) + (offset) * 8; } - return CVMX_ADD_IO_SEG(0x0001070000000580ull) + (offset) * 8; } - #define CVMX_CIU_PP_RST (CVMX_ADD_IO_SEG(0x0001070000000700ull)) #define CVMX_CIU_QLM0 (CVMX_ADD_IO_SEG(0x0001070000000780ull)) #define CVMX_CIU_QLM1 (CVMX_ADD_IO_SEG(0x0001070000000788ull)) @@ -179,36 +156,31 @@ static inline uint64_t CVMX_CIU_PP_POKEX(unsigned long offset) #define CVMX_CIU_TIM_MULTI_CAST (CVMX_ADD_IO_SEG(0x000107000000C200ull)) static inline uint64_t CVMX_CIU_WDOGX(unsigned long offset) { - switch (cvmx_get_octeon_family()) { - case OCTEON_CN30XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN52XX & OCTEON_FAMILY_MASK: - case OCTEON_CNF71XX & OCTEON_FAMILY_MASK: - case OCTEON_CN61XX & OCTEON_FAMILY_MASK: - case OCTEON_CN70XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN31XX & OCTEON_FAMILY_MASK: - case OCTEON_CN50XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN38XX & OCTEON_FAMILY_MASK: - case OCTEON_CN58XX & OCTEON_FAMILY_MASK: + switch (cvmx_get_octeon_family() & OCTEON_FAMILY_MASK) { + case OCTEON_CN30XX: + case OCTEON_CN31XX: + case OCTEON_CN38XX: + case OCTEON_CN50XX: + case OCTEON_CN52XX: + case OCTEON_CN56XX: + case OCTEON_CN58XX: + case OCTEON_CN61XX: + case OCTEON_CN63XX: + case OCTEON_CN66XX: + case OCTEON_CN70XX: + case OCTEON_CNF71XX: + default: return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN56XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN66XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN63XX & OCTEON_FAMILY_MASK: - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; - case OCTEON_CN68XX & OCTEON_FAMILY_MASK: + case OCTEON_CN68XX: return CVMX_ADD_IO_SEG(0x0001070100100000ull) + (offset) * 8; - case OCTEON_CNF75XX & OCTEON_FAMILY_MASK: - case OCTEON_CN73XX & OCTEON_FAMILY_MASK: - case OCTEON_CN78XX & OCTEON_FAMILY_MASK: + case OCTEON_CN73XX: + case OCTEON_CN78XX: + case OCTEON_CNF75XX: return CVMX_ADD_IO_SEG(0x0001010000020000ull) + (offset) * 8; } - return CVMX_ADD_IO_SEG(0x0001070000000500ull) + (offset) * 8; } + union cvmx_ciu_bist { uint64_t u64; struct cvmx_ciu_bist_s { -- 2.1.4