18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __SPI_CAVIUM_H
38c2ecf20Sopenharmony_ci#define __SPI_CAVIUM_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <linux/clk.h>
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#define OCTEON_SPI_MAX_BYTES 9
88c2ecf20Sopenharmony_ci#define OCTEON_SPI_MAX_CLOCK_HZ 16000000
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cistruct octeon_spi_regs {
118c2ecf20Sopenharmony_ci	int config;
128c2ecf20Sopenharmony_ci	int status;
138c2ecf20Sopenharmony_ci	int tx;
148c2ecf20Sopenharmony_ci	int data;
158c2ecf20Sopenharmony_ci};
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistruct octeon_spi {
188c2ecf20Sopenharmony_ci	void __iomem *register_base;
198c2ecf20Sopenharmony_ci	u64 last_cfg;
208c2ecf20Sopenharmony_ci	u64 cs_enax;
218c2ecf20Sopenharmony_ci	int sys_freq;
228c2ecf20Sopenharmony_ci	struct octeon_spi_regs regs;
238c2ecf20Sopenharmony_ci	struct clk *clk;
248c2ecf20Sopenharmony_ci};
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci#define OCTEON_SPI_CFG(x)	(x->regs.config)
278c2ecf20Sopenharmony_ci#define OCTEON_SPI_STS(x)	(x->regs.status)
288c2ecf20Sopenharmony_ci#define OCTEON_SPI_TX(x)	(x->regs.tx)
298c2ecf20Sopenharmony_ci#define OCTEON_SPI_DAT0(x)	(x->regs.data)
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ciint octeon_spi_transfer_one_message(struct spi_master *master,
328c2ecf20Sopenharmony_ci				    struct spi_message *msg);
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci/* MPI register descriptions */
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci#define CVMX_MPI_CFG (CVMX_ADD_IO_SEG(0x0001070000001000ull))
378c2ecf20Sopenharmony_ci#define CVMX_MPI_DATX(offset) (CVMX_ADD_IO_SEG(0x0001070000001080ull) + ((offset) & 15) * 8)
388c2ecf20Sopenharmony_ci#define CVMX_MPI_STS (CVMX_ADD_IO_SEG(0x0001070000001008ull))
398c2ecf20Sopenharmony_ci#define CVMX_MPI_TX (CVMX_ADD_IO_SEG(0x0001070000001010ull))
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciunion cvmx_mpi_cfg {
428c2ecf20Sopenharmony_ci	uint64_t u64;
438c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_s {
448c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
458c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
468c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
478c2ecf20Sopenharmony_ci		uint64_t csena3:1;
488c2ecf20Sopenharmony_ci		uint64_t csena2:1;
498c2ecf20Sopenharmony_ci		uint64_t csena1:1;
508c2ecf20Sopenharmony_ci		uint64_t csena0:1;
518c2ecf20Sopenharmony_ci		uint64_t cslate:1;
528c2ecf20Sopenharmony_ci		uint64_t tritx:1;
538c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
548c2ecf20Sopenharmony_ci		uint64_t cshi:1;
558c2ecf20Sopenharmony_ci		uint64_t csena:1;
568c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
578c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
588c2ecf20Sopenharmony_ci		uint64_t wireor:1;
598c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
608c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
618c2ecf20Sopenharmony_ci		uint64_t enable:1;
628c2ecf20Sopenharmony_ci#else
638c2ecf20Sopenharmony_ci		uint64_t enable:1;
648c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
658c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
668c2ecf20Sopenharmony_ci		uint64_t wireor:1;
678c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
688c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
698c2ecf20Sopenharmony_ci		uint64_t csena:1;
708c2ecf20Sopenharmony_ci		uint64_t cshi:1;
718c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
728c2ecf20Sopenharmony_ci		uint64_t tritx:1;
738c2ecf20Sopenharmony_ci		uint64_t cslate:1;
748c2ecf20Sopenharmony_ci		uint64_t csena0:1;
758c2ecf20Sopenharmony_ci		uint64_t csena1:1;
768c2ecf20Sopenharmony_ci		uint64_t csena2:1;
778c2ecf20Sopenharmony_ci		uint64_t csena3:1;
788c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
798c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
808c2ecf20Sopenharmony_ci#endif
818c2ecf20Sopenharmony_ci	} s;
828c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_cn30xx {
838c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
848c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
858c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
868c2ecf20Sopenharmony_ci		uint64_t reserved_12_15:4;
878c2ecf20Sopenharmony_ci		uint64_t cslate:1;
888c2ecf20Sopenharmony_ci		uint64_t tritx:1;
898c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
908c2ecf20Sopenharmony_ci		uint64_t cshi:1;
918c2ecf20Sopenharmony_ci		uint64_t csena:1;
928c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
938c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
948c2ecf20Sopenharmony_ci		uint64_t wireor:1;
958c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
968c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
978c2ecf20Sopenharmony_ci		uint64_t enable:1;
988c2ecf20Sopenharmony_ci#else
998c2ecf20Sopenharmony_ci		uint64_t enable:1;
1008c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
1018c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
1028c2ecf20Sopenharmony_ci		uint64_t wireor:1;
1038c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
1048c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
1058c2ecf20Sopenharmony_ci		uint64_t csena:1;
1068c2ecf20Sopenharmony_ci		uint64_t cshi:1;
1078c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
1088c2ecf20Sopenharmony_ci		uint64_t tritx:1;
1098c2ecf20Sopenharmony_ci		uint64_t cslate:1;
1108c2ecf20Sopenharmony_ci		uint64_t reserved_12_15:4;
1118c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
1128c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
1138c2ecf20Sopenharmony_ci#endif
1148c2ecf20Sopenharmony_ci	} cn30xx;
1158c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_cn31xx {
1168c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
1178c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
1188c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
1198c2ecf20Sopenharmony_ci		uint64_t reserved_11_15:5;
1208c2ecf20Sopenharmony_ci		uint64_t tritx:1;
1218c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
1228c2ecf20Sopenharmony_ci		uint64_t cshi:1;
1238c2ecf20Sopenharmony_ci		uint64_t csena:1;
1248c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
1258c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
1268c2ecf20Sopenharmony_ci		uint64_t wireor:1;
1278c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
1288c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
1298c2ecf20Sopenharmony_ci		uint64_t enable:1;
1308c2ecf20Sopenharmony_ci#else
1318c2ecf20Sopenharmony_ci		uint64_t enable:1;
1328c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
1338c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
1348c2ecf20Sopenharmony_ci		uint64_t wireor:1;
1358c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
1368c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
1378c2ecf20Sopenharmony_ci		uint64_t csena:1;
1388c2ecf20Sopenharmony_ci		uint64_t cshi:1;
1398c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
1408c2ecf20Sopenharmony_ci		uint64_t tritx:1;
1418c2ecf20Sopenharmony_ci		uint64_t reserved_11_15:5;
1428c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
1438c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
1448c2ecf20Sopenharmony_ci#endif
1458c2ecf20Sopenharmony_ci	} cn31xx;
1468c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_cn30xx cn50xx;
1478c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_cn61xx {
1488c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
1498c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
1508c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
1518c2ecf20Sopenharmony_ci		uint64_t reserved_14_15:2;
1528c2ecf20Sopenharmony_ci		uint64_t csena1:1;
1538c2ecf20Sopenharmony_ci		uint64_t csena0:1;
1548c2ecf20Sopenharmony_ci		uint64_t cslate:1;
1558c2ecf20Sopenharmony_ci		uint64_t tritx:1;
1568c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
1578c2ecf20Sopenharmony_ci		uint64_t cshi:1;
1588c2ecf20Sopenharmony_ci		uint64_t reserved_6_6:1;
1598c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
1608c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
1618c2ecf20Sopenharmony_ci		uint64_t wireor:1;
1628c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
1638c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
1648c2ecf20Sopenharmony_ci		uint64_t enable:1;
1658c2ecf20Sopenharmony_ci#else
1668c2ecf20Sopenharmony_ci		uint64_t enable:1;
1678c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
1688c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
1698c2ecf20Sopenharmony_ci		uint64_t wireor:1;
1708c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
1718c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
1728c2ecf20Sopenharmony_ci		uint64_t reserved_6_6:1;
1738c2ecf20Sopenharmony_ci		uint64_t cshi:1;
1748c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
1758c2ecf20Sopenharmony_ci		uint64_t tritx:1;
1768c2ecf20Sopenharmony_ci		uint64_t cslate:1;
1778c2ecf20Sopenharmony_ci		uint64_t csena0:1;
1788c2ecf20Sopenharmony_ci		uint64_t csena1:1;
1798c2ecf20Sopenharmony_ci		uint64_t reserved_14_15:2;
1808c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
1818c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
1828c2ecf20Sopenharmony_ci#endif
1838c2ecf20Sopenharmony_ci	} cn61xx;
1848c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_cn66xx {
1858c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
1868c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
1878c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
1888c2ecf20Sopenharmony_ci		uint64_t csena3:1;
1898c2ecf20Sopenharmony_ci		uint64_t csena2:1;
1908c2ecf20Sopenharmony_ci		uint64_t reserved_12_13:2;
1918c2ecf20Sopenharmony_ci		uint64_t cslate:1;
1928c2ecf20Sopenharmony_ci		uint64_t tritx:1;
1938c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
1948c2ecf20Sopenharmony_ci		uint64_t cshi:1;
1958c2ecf20Sopenharmony_ci		uint64_t reserved_6_6:1;
1968c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
1978c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
1988c2ecf20Sopenharmony_ci		uint64_t wireor:1;
1998c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
2008c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
2018c2ecf20Sopenharmony_ci		uint64_t enable:1;
2028c2ecf20Sopenharmony_ci#else
2038c2ecf20Sopenharmony_ci		uint64_t enable:1;
2048c2ecf20Sopenharmony_ci		uint64_t idlelo:1;
2058c2ecf20Sopenharmony_ci		uint64_t clk_cont:1;
2068c2ecf20Sopenharmony_ci		uint64_t wireor:1;
2078c2ecf20Sopenharmony_ci		uint64_t lsbfirst:1;
2088c2ecf20Sopenharmony_ci		uint64_t int_ena:1;
2098c2ecf20Sopenharmony_ci		uint64_t reserved_6_6:1;
2108c2ecf20Sopenharmony_ci		uint64_t cshi:1;
2118c2ecf20Sopenharmony_ci		uint64_t idleclks:2;
2128c2ecf20Sopenharmony_ci		uint64_t tritx:1;
2138c2ecf20Sopenharmony_ci		uint64_t cslate:1;
2148c2ecf20Sopenharmony_ci		uint64_t reserved_12_13:2;
2158c2ecf20Sopenharmony_ci		uint64_t csena2:1;
2168c2ecf20Sopenharmony_ci		uint64_t csena3:1;
2178c2ecf20Sopenharmony_ci		uint64_t clkdiv:13;
2188c2ecf20Sopenharmony_ci		uint64_t reserved_29_63:35;
2198c2ecf20Sopenharmony_ci#endif
2208c2ecf20Sopenharmony_ci	} cn66xx;
2218c2ecf20Sopenharmony_ci	struct cvmx_mpi_cfg_cn61xx cnf71xx;
2228c2ecf20Sopenharmony_ci};
2238c2ecf20Sopenharmony_ci
2248c2ecf20Sopenharmony_ciunion cvmx_mpi_datx {
2258c2ecf20Sopenharmony_ci	uint64_t u64;
2268c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s {
2278c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
2288c2ecf20Sopenharmony_ci		uint64_t reserved_8_63:56;
2298c2ecf20Sopenharmony_ci		uint64_t data:8;
2308c2ecf20Sopenharmony_ci#else
2318c2ecf20Sopenharmony_ci		uint64_t data:8;
2328c2ecf20Sopenharmony_ci		uint64_t reserved_8_63:56;
2338c2ecf20Sopenharmony_ci#endif
2348c2ecf20Sopenharmony_ci	} s;
2358c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s cn30xx;
2368c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s cn31xx;
2378c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s cn50xx;
2388c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s cn61xx;
2398c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s cn66xx;
2408c2ecf20Sopenharmony_ci	struct cvmx_mpi_datx_s cnf71xx;
2418c2ecf20Sopenharmony_ci};
2428c2ecf20Sopenharmony_ci
2438c2ecf20Sopenharmony_ciunion cvmx_mpi_sts {
2448c2ecf20Sopenharmony_ci	uint64_t u64;
2458c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s {
2468c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
2478c2ecf20Sopenharmony_ci		uint64_t reserved_13_63:51;
2488c2ecf20Sopenharmony_ci		uint64_t rxnum:5;
2498c2ecf20Sopenharmony_ci		uint64_t reserved_1_7:7;
2508c2ecf20Sopenharmony_ci		uint64_t busy:1;
2518c2ecf20Sopenharmony_ci#else
2528c2ecf20Sopenharmony_ci		uint64_t busy:1;
2538c2ecf20Sopenharmony_ci		uint64_t reserved_1_7:7;
2548c2ecf20Sopenharmony_ci		uint64_t rxnum:5;
2558c2ecf20Sopenharmony_ci		uint64_t reserved_13_63:51;
2568c2ecf20Sopenharmony_ci#endif
2578c2ecf20Sopenharmony_ci	} s;
2588c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s cn30xx;
2598c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s cn31xx;
2608c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s cn50xx;
2618c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s cn61xx;
2628c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s cn66xx;
2638c2ecf20Sopenharmony_ci	struct cvmx_mpi_sts_s cnf71xx;
2648c2ecf20Sopenharmony_ci};
2658c2ecf20Sopenharmony_ci
2668c2ecf20Sopenharmony_ciunion cvmx_mpi_tx {
2678c2ecf20Sopenharmony_ci	uint64_t u64;
2688c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_s {
2698c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
2708c2ecf20Sopenharmony_ci		uint64_t reserved_22_63:42;
2718c2ecf20Sopenharmony_ci		uint64_t csid:2;
2728c2ecf20Sopenharmony_ci		uint64_t reserved_17_19:3;
2738c2ecf20Sopenharmony_ci		uint64_t leavecs:1;
2748c2ecf20Sopenharmony_ci		uint64_t reserved_13_15:3;
2758c2ecf20Sopenharmony_ci		uint64_t txnum:5;
2768c2ecf20Sopenharmony_ci		uint64_t reserved_5_7:3;
2778c2ecf20Sopenharmony_ci		uint64_t totnum:5;
2788c2ecf20Sopenharmony_ci#else
2798c2ecf20Sopenharmony_ci		uint64_t totnum:5;
2808c2ecf20Sopenharmony_ci		uint64_t reserved_5_7:3;
2818c2ecf20Sopenharmony_ci		uint64_t txnum:5;
2828c2ecf20Sopenharmony_ci		uint64_t reserved_13_15:3;
2838c2ecf20Sopenharmony_ci		uint64_t leavecs:1;
2848c2ecf20Sopenharmony_ci		uint64_t reserved_17_19:3;
2858c2ecf20Sopenharmony_ci		uint64_t csid:2;
2868c2ecf20Sopenharmony_ci		uint64_t reserved_22_63:42;
2878c2ecf20Sopenharmony_ci#endif
2888c2ecf20Sopenharmony_ci	} s;
2898c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_cn30xx {
2908c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
2918c2ecf20Sopenharmony_ci		uint64_t reserved_17_63:47;
2928c2ecf20Sopenharmony_ci		uint64_t leavecs:1;
2938c2ecf20Sopenharmony_ci		uint64_t reserved_13_15:3;
2948c2ecf20Sopenharmony_ci		uint64_t txnum:5;
2958c2ecf20Sopenharmony_ci		uint64_t reserved_5_7:3;
2968c2ecf20Sopenharmony_ci		uint64_t totnum:5;
2978c2ecf20Sopenharmony_ci#else
2988c2ecf20Sopenharmony_ci		uint64_t totnum:5;
2998c2ecf20Sopenharmony_ci		uint64_t reserved_5_7:3;
3008c2ecf20Sopenharmony_ci		uint64_t txnum:5;
3018c2ecf20Sopenharmony_ci		uint64_t reserved_13_15:3;
3028c2ecf20Sopenharmony_ci		uint64_t leavecs:1;
3038c2ecf20Sopenharmony_ci		uint64_t reserved_17_63:47;
3048c2ecf20Sopenharmony_ci#endif
3058c2ecf20Sopenharmony_ci	} cn30xx;
3068c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_cn30xx cn31xx;
3078c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_cn30xx cn50xx;
3088c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_cn61xx {
3098c2ecf20Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
3108c2ecf20Sopenharmony_ci		uint64_t reserved_21_63:43;
3118c2ecf20Sopenharmony_ci		uint64_t csid:1;
3128c2ecf20Sopenharmony_ci		uint64_t reserved_17_19:3;
3138c2ecf20Sopenharmony_ci		uint64_t leavecs:1;
3148c2ecf20Sopenharmony_ci		uint64_t reserved_13_15:3;
3158c2ecf20Sopenharmony_ci		uint64_t txnum:5;
3168c2ecf20Sopenharmony_ci		uint64_t reserved_5_7:3;
3178c2ecf20Sopenharmony_ci		uint64_t totnum:5;
3188c2ecf20Sopenharmony_ci#else
3198c2ecf20Sopenharmony_ci		uint64_t totnum:5;
3208c2ecf20Sopenharmony_ci		uint64_t reserved_5_7:3;
3218c2ecf20Sopenharmony_ci		uint64_t txnum:5;
3228c2ecf20Sopenharmony_ci		uint64_t reserved_13_15:3;
3238c2ecf20Sopenharmony_ci		uint64_t leavecs:1;
3248c2ecf20Sopenharmony_ci		uint64_t reserved_17_19:3;
3258c2ecf20Sopenharmony_ci		uint64_t csid:1;
3268c2ecf20Sopenharmony_ci		uint64_t reserved_21_63:43;
3278c2ecf20Sopenharmony_ci#endif
3288c2ecf20Sopenharmony_ci	} cn61xx;
3298c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_s cn66xx;
3308c2ecf20Sopenharmony_ci	struct cvmx_mpi_tx_cn61xx cnf71xx;
3318c2ecf20Sopenharmony_ci};
3328c2ecf20Sopenharmony_ci
3338c2ecf20Sopenharmony_ci#endif /* __SPI_CAVIUM_H */
334