18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* Renesas Ethernet AVB device driver 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Copyright (C) 2014-2015 Renesas Electronics Corporation 58c2ecf20Sopenharmony_ci * Copyright (C) 2015 Renesas Solutions Corp. 68c2ecf20Sopenharmony_ci * Copyright (C) 2015-2016 Cogent Embedded, Inc. <source@cogentembedded.com> 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Based on the SuperH Ethernet driver 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#ifndef __RAVB_H__ 128c2ecf20Sopenharmony_ci#define __RAVB_H__ 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include <linux/interrupt.h> 158c2ecf20Sopenharmony_ci#include <linux/io.h> 168c2ecf20Sopenharmony_ci#include <linux/kernel.h> 178c2ecf20Sopenharmony_ci#include <linux/mdio-bitbang.h> 188c2ecf20Sopenharmony_ci#include <linux/netdevice.h> 198c2ecf20Sopenharmony_ci#include <linux/phy.h> 208c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 218c2ecf20Sopenharmony_ci#include <linux/ptp_clock_kernel.h> 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#define BE_TX_RING_SIZE 64 /* TX ring size for Best Effort */ 248c2ecf20Sopenharmony_ci#define BE_RX_RING_SIZE 1024 /* RX ring size for Best Effort */ 258c2ecf20Sopenharmony_ci#define NC_TX_RING_SIZE 64 /* TX ring size for Network Control */ 268c2ecf20Sopenharmony_ci#define NC_RX_RING_SIZE 64 /* RX ring size for Network Control */ 278c2ecf20Sopenharmony_ci#define BE_TX_RING_MIN 64 288c2ecf20Sopenharmony_ci#define BE_RX_RING_MIN 64 298c2ecf20Sopenharmony_ci#define BE_TX_RING_MAX 1024 308c2ecf20Sopenharmony_ci#define BE_RX_RING_MAX 2048 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci#define PKT_BUF_SZ 1538 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci/* Driver's parameters */ 358c2ecf20Sopenharmony_ci#define RAVB_ALIGN 128 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci/* Hardware time stamp */ 388c2ecf20Sopenharmony_ci#define RAVB_TXTSTAMP_VALID 0x00000001 /* TX timestamp valid */ 398c2ecf20Sopenharmony_ci#define RAVB_TXTSTAMP_ENABLED 0x00000010 /* Enable TX timestamping */ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci#define RAVB_RXTSTAMP_VALID 0x00000001 /* RX timestamp valid */ 428c2ecf20Sopenharmony_ci#define RAVB_RXTSTAMP_TYPE 0x00000006 /* RX type mask */ 438c2ecf20Sopenharmony_ci#define RAVB_RXTSTAMP_TYPE_V2_L2_EVENT 0x00000002 448c2ecf20Sopenharmony_ci#define RAVB_RXTSTAMP_TYPE_ALL 0x00000006 458c2ecf20Sopenharmony_ci#define RAVB_RXTSTAMP_ENABLED 0x00000010 /* Enable RX timestamping */ 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cienum ravb_reg { 488c2ecf20Sopenharmony_ci /* AVB-DMAC registers */ 498c2ecf20Sopenharmony_ci CCC = 0x0000, 508c2ecf20Sopenharmony_ci DBAT = 0x0004, 518c2ecf20Sopenharmony_ci DLR = 0x0008, 528c2ecf20Sopenharmony_ci CSR = 0x000C, 538c2ecf20Sopenharmony_ci CDAR0 = 0x0010, 548c2ecf20Sopenharmony_ci CDAR1 = 0x0014, 558c2ecf20Sopenharmony_ci CDAR2 = 0x0018, 568c2ecf20Sopenharmony_ci CDAR3 = 0x001C, 578c2ecf20Sopenharmony_ci CDAR4 = 0x0020, 588c2ecf20Sopenharmony_ci CDAR5 = 0x0024, 598c2ecf20Sopenharmony_ci CDAR6 = 0x0028, 608c2ecf20Sopenharmony_ci CDAR7 = 0x002C, 618c2ecf20Sopenharmony_ci CDAR8 = 0x0030, 628c2ecf20Sopenharmony_ci CDAR9 = 0x0034, 638c2ecf20Sopenharmony_ci CDAR10 = 0x0038, 648c2ecf20Sopenharmony_ci CDAR11 = 0x003C, 658c2ecf20Sopenharmony_ci CDAR12 = 0x0040, 668c2ecf20Sopenharmony_ci CDAR13 = 0x0044, 678c2ecf20Sopenharmony_ci CDAR14 = 0x0048, 688c2ecf20Sopenharmony_ci CDAR15 = 0x004C, 698c2ecf20Sopenharmony_ci CDAR16 = 0x0050, 708c2ecf20Sopenharmony_ci CDAR17 = 0x0054, 718c2ecf20Sopenharmony_ci CDAR18 = 0x0058, 728c2ecf20Sopenharmony_ci CDAR19 = 0x005C, 738c2ecf20Sopenharmony_ci CDAR20 = 0x0060, 748c2ecf20Sopenharmony_ci CDAR21 = 0x0064, 758c2ecf20Sopenharmony_ci ESR = 0x0088, 768c2ecf20Sopenharmony_ci APSR = 0x008C, /* R-Car Gen3 only */ 778c2ecf20Sopenharmony_ci RCR = 0x0090, 788c2ecf20Sopenharmony_ci RQC0 = 0x0094, 798c2ecf20Sopenharmony_ci RQC1 = 0x0098, 808c2ecf20Sopenharmony_ci RQC2 = 0x009C, 818c2ecf20Sopenharmony_ci RQC3 = 0x00A0, 828c2ecf20Sopenharmony_ci RQC4 = 0x00A4, 838c2ecf20Sopenharmony_ci RPC = 0x00B0, 848c2ecf20Sopenharmony_ci UFCW = 0x00BC, 858c2ecf20Sopenharmony_ci UFCS = 0x00C0, 868c2ecf20Sopenharmony_ci UFCV0 = 0x00C4, 878c2ecf20Sopenharmony_ci UFCV1 = 0x00C8, 888c2ecf20Sopenharmony_ci UFCV2 = 0x00CC, 898c2ecf20Sopenharmony_ci UFCV3 = 0x00D0, 908c2ecf20Sopenharmony_ci UFCV4 = 0x00D4, 918c2ecf20Sopenharmony_ci UFCD0 = 0x00E0, 928c2ecf20Sopenharmony_ci UFCD1 = 0x00E4, 938c2ecf20Sopenharmony_ci UFCD2 = 0x00E8, 948c2ecf20Sopenharmony_ci UFCD3 = 0x00EC, 958c2ecf20Sopenharmony_ci UFCD4 = 0x00F0, 968c2ecf20Sopenharmony_ci SFO = 0x00FC, 978c2ecf20Sopenharmony_ci SFP0 = 0x0100, 988c2ecf20Sopenharmony_ci SFP1 = 0x0104, 998c2ecf20Sopenharmony_ci SFP2 = 0x0108, 1008c2ecf20Sopenharmony_ci SFP3 = 0x010C, 1018c2ecf20Sopenharmony_ci SFP4 = 0x0110, 1028c2ecf20Sopenharmony_ci SFP5 = 0x0114, 1038c2ecf20Sopenharmony_ci SFP6 = 0x0118, 1048c2ecf20Sopenharmony_ci SFP7 = 0x011C, 1058c2ecf20Sopenharmony_ci SFP8 = 0x0120, 1068c2ecf20Sopenharmony_ci SFP9 = 0x0124, 1078c2ecf20Sopenharmony_ci SFP10 = 0x0128, 1088c2ecf20Sopenharmony_ci SFP11 = 0x012C, 1098c2ecf20Sopenharmony_ci SFP12 = 0x0130, 1108c2ecf20Sopenharmony_ci SFP13 = 0x0134, 1118c2ecf20Sopenharmony_ci SFP14 = 0x0138, 1128c2ecf20Sopenharmony_ci SFP15 = 0x013C, 1138c2ecf20Sopenharmony_ci SFP16 = 0x0140, 1148c2ecf20Sopenharmony_ci SFP17 = 0x0144, 1158c2ecf20Sopenharmony_ci SFP18 = 0x0148, 1168c2ecf20Sopenharmony_ci SFP19 = 0x014C, 1178c2ecf20Sopenharmony_ci SFP20 = 0x0150, 1188c2ecf20Sopenharmony_ci SFP21 = 0x0154, 1198c2ecf20Sopenharmony_ci SFP22 = 0x0158, 1208c2ecf20Sopenharmony_ci SFP23 = 0x015C, 1218c2ecf20Sopenharmony_ci SFP24 = 0x0160, 1228c2ecf20Sopenharmony_ci SFP25 = 0x0164, 1238c2ecf20Sopenharmony_ci SFP26 = 0x0168, 1248c2ecf20Sopenharmony_ci SFP27 = 0x016C, 1258c2ecf20Sopenharmony_ci SFP28 = 0x0170, 1268c2ecf20Sopenharmony_ci SFP29 = 0x0174, 1278c2ecf20Sopenharmony_ci SFP30 = 0x0178, 1288c2ecf20Sopenharmony_ci SFP31 = 0x017C, 1298c2ecf20Sopenharmony_ci SFM0 = 0x01C0, 1308c2ecf20Sopenharmony_ci SFM1 = 0x01C4, 1318c2ecf20Sopenharmony_ci TGC = 0x0300, 1328c2ecf20Sopenharmony_ci TCCR = 0x0304, 1338c2ecf20Sopenharmony_ci TSR = 0x0308, 1348c2ecf20Sopenharmony_ci TFA0 = 0x0310, 1358c2ecf20Sopenharmony_ci TFA1 = 0x0314, 1368c2ecf20Sopenharmony_ci TFA2 = 0x0318, 1378c2ecf20Sopenharmony_ci CIVR0 = 0x0320, 1388c2ecf20Sopenharmony_ci CIVR1 = 0x0324, 1398c2ecf20Sopenharmony_ci CDVR0 = 0x0328, 1408c2ecf20Sopenharmony_ci CDVR1 = 0x032C, 1418c2ecf20Sopenharmony_ci CUL0 = 0x0330, 1428c2ecf20Sopenharmony_ci CUL1 = 0x0334, 1438c2ecf20Sopenharmony_ci CLL0 = 0x0338, 1448c2ecf20Sopenharmony_ci CLL1 = 0x033C, 1458c2ecf20Sopenharmony_ci DIC = 0x0350, 1468c2ecf20Sopenharmony_ci DIS = 0x0354, 1478c2ecf20Sopenharmony_ci EIC = 0x0358, 1488c2ecf20Sopenharmony_ci EIS = 0x035C, 1498c2ecf20Sopenharmony_ci RIC0 = 0x0360, 1508c2ecf20Sopenharmony_ci RIS0 = 0x0364, 1518c2ecf20Sopenharmony_ci RIC1 = 0x0368, 1528c2ecf20Sopenharmony_ci RIS1 = 0x036C, 1538c2ecf20Sopenharmony_ci RIC2 = 0x0370, 1548c2ecf20Sopenharmony_ci RIS2 = 0x0374, 1558c2ecf20Sopenharmony_ci TIC = 0x0378, 1568c2ecf20Sopenharmony_ci TIS = 0x037C, 1578c2ecf20Sopenharmony_ci ISS = 0x0380, 1588c2ecf20Sopenharmony_ci CIE = 0x0384, /* R-Car Gen3 only */ 1598c2ecf20Sopenharmony_ci GCCR = 0x0390, 1608c2ecf20Sopenharmony_ci GMTT = 0x0394, 1618c2ecf20Sopenharmony_ci GPTC = 0x0398, 1628c2ecf20Sopenharmony_ci GTI = 0x039C, 1638c2ecf20Sopenharmony_ci GTO0 = 0x03A0, 1648c2ecf20Sopenharmony_ci GTO1 = 0x03A4, 1658c2ecf20Sopenharmony_ci GTO2 = 0x03A8, 1668c2ecf20Sopenharmony_ci GIC = 0x03AC, 1678c2ecf20Sopenharmony_ci GIS = 0x03B0, 1688c2ecf20Sopenharmony_ci GCPT = 0x03B4, /* Undocumented? */ 1698c2ecf20Sopenharmony_ci GCT0 = 0x03B8, 1708c2ecf20Sopenharmony_ci GCT1 = 0x03BC, 1718c2ecf20Sopenharmony_ci GCT2 = 0x03C0, 1728c2ecf20Sopenharmony_ci GIE = 0x03CC, /* R-Car Gen3 only */ 1738c2ecf20Sopenharmony_ci GID = 0x03D0, /* R-Car Gen3 only */ 1748c2ecf20Sopenharmony_ci DIL = 0x0440, /* R-Car Gen3 only */ 1758c2ecf20Sopenharmony_ci RIE0 = 0x0460, /* R-Car Gen3 only */ 1768c2ecf20Sopenharmony_ci RID0 = 0x0464, /* R-Car Gen3 only */ 1778c2ecf20Sopenharmony_ci RIE2 = 0x0470, /* R-Car Gen3 only */ 1788c2ecf20Sopenharmony_ci RID2 = 0x0474, /* R-Car Gen3 only */ 1798c2ecf20Sopenharmony_ci TIE = 0x0478, /* R-Car Gen3 only */ 1808c2ecf20Sopenharmony_ci TID = 0x047c, /* R-Car Gen3 only */ 1818c2ecf20Sopenharmony_ci 1828c2ecf20Sopenharmony_ci /* E-MAC registers */ 1838c2ecf20Sopenharmony_ci ECMR = 0x0500, 1848c2ecf20Sopenharmony_ci RFLR = 0x0508, 1858c2ecf20Sopenharmony_ci ECSR = 0x0510, 1868c2ecf20Sopenharmony_ci ECSIPR = 0x0518, 1878c2ecf20Sopenharmony_ci PIR = 0x0520, 1888c2ecf20Sopenharmony_ci PSR = 0x0528, 1898c2ecf20Sopenharmony_ci PIPR = 0x052c, 1908c2ecf20Sopenharmony_ci MPR = 0x0558, 1918c2ecf20Sopenharmony_ci PFTCR = 0x055c, 1928c2ecf20Sopenharmony_ci PFRCR = 0x0560, 1938c2ecf20Sopenharmony_ci GECMR = 0x05b0, 1948c2ecf20Sopenharmony_ci MAHR = 0x05c0, 1958c2ecf20Sopenharmony_ci MALR = 0x05c8, 1968c2ecf20Sopenharmony_ci TROCR = 0x0700, /* R-Car Gen3 only */ 1978c2ecf20Sopenharmony_ci CEFCR = 0x0740, 1988c2ecf20Sopenharmony_ci FRECR = 0x0748, 1998c2ecf20Sopenharmony_ci TSFRCR = 0x0750, 2008c2ecf20Sopenharmony_ci TLFRCR = 0x0758, 2018c2ecf20Sopenharmony_ci RFCR = 0x0760, 2028c2ecf20Sopenharmony_ci MAFCR = 0x0778, 2038c2ecf20Sopenharmony_ci}; 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci/* Register bits of the Ethernet AVB */ 2078c2ecf20Sopenharmony_ci/* CCC */ 2088c2ecf20Sopenharmony_cienum CCC_BIT { 2098c2ecf20Sopenharmony_ci CCC_OPC = 0x00000003, 2108c2ecf20Sopenharmony_ci CCC_OPC_RESET = 0x00000000, 2118c2ecf20Sopenharmony_ci CCC_OPC_CONFIG = 0x00000001, 2128c2ecf20Sopenharmony_ci CCC_OPC_OPERATION = 0x00000002, 2138c2ecf20Sopenharmony_ci CCC_GAC = 0x00000080, 2148c2ecf20Sopenharmony_ci CCC_DTSR = 0x00000100, 2158c2ecf20Sopenharmony_ci CCC_CSEL = 0x00030000, 2168c2ecf20Sopenharmony_ci CCC_CSEL_HPB = 0x00010000, 2178c2ecf20Sopenharmony_ci CCC_CSEL_ETH_TX = 0x00020000, 2188c2ecf20Sopenharmony_ci CCC_CSEL_GMII_REF = 0x00030000, 2198c2ecf20Sopenharmony_ci CCC_LBME = 0x01000000, 2208c2ecf20Sopenharmony_ci}; 2218c2ecf20Sopenharmony_ci 2228c2ecf20Sopenharmony_ci/* CSR */ 2238c2ecf20Sopenharmony_cienum CSR_BIT { 2248c2ecf20Sopenharmony_ci CSR_OPS = 0x0000000F, 2258c2ecf20Sopenharmony_ci CSR_OPS_RESET = 0x00000001, 2268c2ecf20Sopenharmony_ci CSR_OPS_CONFIG = 0x00000002, 2278c2ecf20Sopenharmony_ci CSR_OPS_OPERATION = 0x00000004, 2288c2ecf20Sopenharmony_ci CSR_OPS_STANDBY = 0x00000008, /* Undocumented? */ 2298c2ecf20Sopenharmony_ci CSR_DTS = 0x00000100, 2308c2ecf20Sopenharmony_ci CSR_TPO0 = 0x00010000, 2318c2ecf20Sopenharmony_ci CSR_TPO1 = 0x00020000, 2328c2ecf20Sopenharmony_ci CSR_TPO2 = 0x00040000, 2338c2ecf20Sopenharmony_ci CSR_TPO3 = 0x00080000, 2348c2ecf20Sopenharmony_ci CSR_RPO = 0x00100000, 2358c2ecf20Sopenharmony_ci}; 2368c2ecf20Sopenharmony_ci 2378c2ecf20Sopenharmony_ci/* ESR */ 2388c2ecf20Sopenharmony_cienum ESR_BIT { 2398c2ecf20Sopenharmony_ci ESR_EQN = 0x0000001F, 2408c2ecf20Sopenharmony_ci ESR_ET = 0x00000F00, 2418c2ecf20Sopenharmony_ci ESR_EIL = 0x00001000, 2428c2ecf20Sopenharmony_ci}; 2438c2ecf20Sopenharmony_ci 2448c2ecf20Sopenharmony_ci/* APSR */ 2458c2ecf20Sopenharmony_cienum APSR_BIT { 2468c2ecf20Sopenharmony_ci APSR_MEMS = 0x00000002, 2478c2ecf20Sopenharmony_ci APSR_CMSW = 0x00000010, 2488c2ecf20Sopenharmony_ci APSR_DM = 0x00006000, /* Undocumented? */ 2498c2ecf20Sopenharmony_ci APSR_DM_RDM = 0x00002000, 2508c2ecf20Sopenharmony_ci APSR_DM_TDM = 0x00004000, 2518c2ecf20Sopenharmony_ci}; 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci/* RCR */ 2548c2ecf20Sopenharmony_cienum RCR_BIT { 2558c2ecf20Sopenharmony_ci RCR_EFFS = 0x00000001, 2568c2ecf20Sopenharmony_ci RCR_ENCF = 0x00000002, 2578c2ecf20Sopenharmony_ci RCR_ESF = 0x0000000C, 2588c2ecf20Sopenharmony_ci RCR_ETS0 = 0x00000010, 2598c2ecf20Sopenharmony_ci RCR_ETS2 = 0x00000020, 2608c2ecf20Sopenharmony_ci RCR_RFCL = 0x1FFF0000, 2618c2ecf20Sopenharmony_ci}; 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_ci/* RQC0/1/2/3/4 */ 2648c2ecf20Sopenharmony_cienum RQC_BIT { 2658c2ecf20Sopenharmony_ci RQC_RSM0 = 0x00000003, 2668c2ecf20Sopenharmony_ci RQC_UFCC0 = 0x00000030, 2678c2ecf20Sopenharmony_ci RQC_RSM1 = 0x00000300, 2688c2ecf20Sopenharmony_ci RQC_UFCC1 = 0x00003000, 2698c2ecf20Sopenharmony_ci RQC_RSM2 = 0x00030000, 2708c2ecf20Sopenharmony_ci RQC_UFCC2 = 0x00300000, 2718c2ecf20Sopenharmony_ci RQC_RSM3 = 0x03000000, 2728c2ecf20Sopenharmony_ci RQC_UFCC3 = 0x30000000, 2738c2ecf20Sopenharmony_ci}; 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci/* RPC */ 2768c2ecf20Sopenharmony_cienum RPC_BIT { 2778c2ecf20Sopenharmony_ci RPC_PCNT = 0x00000700, 2788c2ecf20Sopenharmony_ci RPC_DCNT = 0x00FF0000, 2798c2ecf20Sopenharmony_ci}; 2808c2ecf20Sopenharmony_ci 2818c2ecf20Sopenharmony_ci/* UFCW */ 2828c2ecf20Sopenharmony_cienum UFCW_BIT { 2838c2ecf20Sopenharmony_ci UFCW_WL0 = 0x0000003F, 2848c2ecf20Sopenharmony_ci UFCW_WL1 = 0x00003F00, 2858c2ecf20Sopenharmony_ci UFCW_WL2 = 0x003F0000, 2868c2ecf20Sopenharmony_ci UFCW_WL3 = 0x3F000000, 2878c2ecf20Sopenharmony_ci}; 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ci/* UFCS */ 2908c2ecf20Sopenharmony_cienum UFCS_BIT { 2918c2ecf20Sopenharmony_ci UFCS_SL0 = 0x0000003F, 2928c2ecf20Sopenharmony_ci UFCS_SL1 = 0x00003F00, 2938c2ecf20Sopenharmony_ci UFCS_SL2 = 0x003F0000, 2948c2ecf20Sopenharmony_ci UFCS_SL3 = 0x3F000000, 2958c2ecf20Sopenharmony_ci}; 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_ci/* UFCV0/1/2/3/4 */ 2988c2ecf20Sopenharmony_cienum UFCV_BIT { 2998c2ecf20Sopenharmony_ci UFCV_CV0 = 0x0000003F, 3008c2ecf20Sopenharmony_ci UFCV_CV1 = 0x00003F00, 3018c2ecf20Sopenharmony_ci UFCV_CV2 = 0x003F0000, 3028c2ecf20Sopenharmony_ci UFCV_CV3 = 0x3F000000, 3038c2ecf20Sopenharmony_ci}; 3048c2ecf20Sopenharmony_ci 3058c2ecf20Sopenharmony_ci/* UFCD0/1/2/3/4 */ 3068c2ecf20Sopenharmony_cienum UFCD_BIT { 3078c2ecf20Sopenharmony_ci UFCD_DV0 = 0x0000003F, 3088c2ecf20Sopenharmony_ci UFCD_DV1 = 0x00003F00, 3098c2ecf20Sopenharmony_ci UFCD_DV2 = 0x003F0000, 3108c2ecf20Sopenharmony_ci UFCD_DV3 = 0x3F000000, 3118c2ecf20Sopenharmony_ci}; 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_ci/* SFO */ 3148c2ecf20Sopenharmony_cienum SFO_BIT { 3158c2ecf20Sopenharmony_ci SFO_FBP = 0x0000003F, 3168c2ecf20Sopenharmony_ci}; 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_ci/* RTC */ 3198c2ecf20Sopenharmony_cienum RTC_BIT { 3208c2ecf20Sopenharmony_ci RTC_MFL0 = 0x00000FFF, 3218c2ecf20Sopenharmony_ci RTC_MFL1 = 0x0FFF0000, 3228c2ecf20Sopenharmony_ci}; 3238c2ecf20Sopenharmony_ci 3248c2ecf20Sopenharmony_ci/* TGC */ 3258c2ecf20Sopenharmony_cienum TGC_BIT { 3268c2ecf20Sopenharmony_ci TGC_TSM0 = 0x00000001, 3278c2ecf20Sopenharmony_ci TGC_TSM1 = 0x00000002, 3288c2ecf20Sopenharmony_ci TGC_TSM2 = 0x00000004, 3298c2ecf20Sopenharmony_ci TGC_TSM3 = 0x00000008, 3308c2ecf20Sopenharmony_ci TGC_TQP = 0x00000030, 3318c2ecf20Sopenharmony_ci TGC_TQP_NONAVB = 0x00000000, 3328c2ecf20Sopenharmony_ci TGC_TQP_AVBMODE1 = 0x00000010, 3338c2ecf20Sopenharmony_ci TGC_TQP_AVBMODE2 = 0x00000030, 3348c2ecf20Sopenharmony_ci TGC_TBD0 = 0x00000300, 3358c2ecf20Sopenharmony_ci TGC_TBD1 = 0x00003000, 3368c2ecf20Sopenharmony_ci TGC_TBD2 = 0x00030000, 3378c2ecf20Sopenharmony_ci TGC_TBD3 = 0x00300000, 3388c2ecf20Sopenharmony_ci}; 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ci/* TCCR */ 3418c2ecf20Sopenharmony_cienum TCCR_BIT { 3428c2ecf20Sopenharmony_ci TCCR_TSRQ0 = 0x00000001, 3438c2ecf20Sopenharmony_ci TCCR_TSRQ1 = 0x00000002, 3448c2ecf20Sopenharmony_ci TCCR_TSRQ2 = 0x00000004, 3458c2ecf20Sopenharmony_ci TCCR_TSRQ3 = 0x00000008, 3468c2ecf20Sopenharmony_ci TCCR_TFEN = 0x00000100, 3478c2ecf20Sopenharmony_ci TCCR_TFR = 0x00000200, 3488c2ecf20Sopenharmony_ci}; 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ci/* TSR */ 3518c2ecf20Sopenharmony_cienum TSR_BIT { 3528c2ecf20Sopenharmony_ci TSR_CCS0 = 0x00000003, 3538c2ecf20Sopenharmony_ci TSR_CCS1 = 0x0000000C, 3548c2ecf20Sopenharmony_ci TSR_TFFL = 0x00000700, 3558c2ecf20Sopenharmony_ci}; 3568c2ecf20Sopenharmony_ci 3578c2ecf20Sopenharmony_ci/* TFA2 */ 3588c2ecf20Sopenharmony_cienum TFA2_BIT { 3598c2ecf20Sopenharmony_ci TFA2_TSV = 0x0000FFFF, 3608c2ecf20Sopenharmony_ci TFA2_TST = 0x03FF0000, 3618c2ecf20Sopenharmony_ci}; 3628c2ecf20Sopenharmony_ci 3638c2ecf20Sopenharmony_ci/* DIC */ 3648c2ecf20Sopenharmony_cienum DIC_BIT { 3658c2ecf20Sopenharmony_ci DIC_DPE1 = 0x00000002, 3668c2ecf20Sopenharmony_ci DIC_DPE2 = 0x00000004, 3678c2ecf20Sopenharmony_ci DIC_DPE3 = 0x00000008, 3688c2ecf20Sopenharmony_ci DIC_DPE4 = 0x00000010, 3698c2ecf20Sopenharmony_ci DIC_DPE5 = 0x00000020, 3708c2ecf20Sopenharmony_ci DIC_DPE6 = 0x00000040, 3718c2ecf20Sopenharmony_ci DIC_DPE7 = 0x00000080, 3728c2ecf20Sopenharmony_ci DIC_DPE8 = 0x00000100, 3738c2ecf20Sopenharmony_ci DIC_DPE9 = 0x00000200, 3748c2ecf20Sopenharmony_ci DIC_DPE10 = 0x00000400, 3758c2ecf20Sopenharmony_ci DIC_DPE11 = 0x00000800, 3768c2ecf20Sopenharmony_ci DIC_DPE12 = 0x00001000, 3778c2ecf20Sopenharmony_ci DIC_DPE13 = 0x00002000, 3788c2ecf20Sopenharmony_ci DIC_DPE14 = 0x00004000, 3798c2ecf20Sopenharmony_ci DIC_DPE15 = 0x00008000, 3808c2ecf20Sopenharmony_ci}; 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_ci/* DIS */ 3838c2ecf20Sopenharmony_cienum DIS_BIT { 3848c2ecf20Sopenharmony_ci DIS_DPF1 = 0x00000002, 3858c2ecf20Sopenharmony_ci DIS_DPF2 = 0x00000004, 3868c2ecf20Sopenharmony_ci DIS_DPF3 = 0x00000008, 3878c2ecf20Sopenharmony_ci DIS_DPF4 = 0x00000010, 3888c2ecf20Sopenharmony_ci DIS_DPF5 = 0x00000020, 3898c2ecf20Sopenharmony_ci DIS_DPF6 = 0x00000040, 3908c2ecf20Sopenharmony_ci DIS_DPF7 = 0x00000080, 3918c2ecf20Sopenharmony_ci DIS_DPF8 = 0x00000100, 3928c2ecf20Sopenharmony_ci DIS_DPF9 = 0x00000200, 3938c2ecf20Sopenharmony_ci DIS_DPF10 = 0x00000400, 3948c2ecf20Sopenharmony_ci DIS_DPF11 = 0x00000800, 3958c2ecf20Sopenharmony_ci DIS_DPF12 = 0x00001000, 3968c2ecf20Sopenharmony_ci DIS_DPF13 = 0x00002000, 3978c2ecf20Sopenharmony_ci DIS_DPF14 = 0x00004000, 3988c2ecf20Sopenharmony_ci DIS_DPF15 = 0x00008000, 3998c2ecf20Sopenharmony_ci}; 4008c2ecf20Sopenharmony_ci 4018c2ecf20Sopenharmony_ci/* EIC */ 4028c2ecf20Sopenharmony_cienum EIC_BIT { 4038c2ecf20Sopenharmony_ci EIC_MREE = 0x00000001, 4048c2ecf20Sopenharmony_ci EIC_MTEE = 0x00000002, 4058c2ecf20Sopenharmony_ci EIC_QEE = 0x00000004, 4068c2ecf20Sopenharmony_ci EIC_SEE = 0x00000008, 4078c2ecf20Sopenharmony_ci EIC_CLLE0 = 0x00000010, 4088c2ecf20Sopenharmony_ci EIC_CLLE1 = 0x00000020, 4098c2ecf20Sopenharmony_ci EIC_CULE0 = 0x00000040, 4108c2ecf20Sopenharmony_ci EIC_CULE1 = 0x00000080, 4118c2ecf20Sopenharmony_ci EIC_TFFE = 0x00000100, 4128c2ecf20Sopenharmony_ci}; 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_ci/* EIS */ 4158c2ecf20Sopenharmony_cienum EIS_BIT { 4168c2ecf20Sopenharmony_ci EIS_MREF = 0x00000001, 4178c2ecf20Sopenharmony_ci EIS_MTEF = 0x00000002, 4188c2ecf20Sopenharmony_ci EIS_QEF = 0x00000004, 4198c2ecf20Sopenharmony_ci EIS_SEF = 0x00000008, 4208c2ecf20Sopenharmony_ci EIS_CLLF0 = 0x00000010, 4218c2ecf20Sopenharmony_ci EIS_CLLF1 = 0x00000020, 4228c2ecf20Sopenharmony_ci EIS_CULF0 = 0x00000040, 4238c2ecf20Sopenharmony_ci EIS_CULF1 = 0x00000080, 4248c2ecf20Sopenharmony_ci EIS_TFFF = 0x00000100, 4258c2ecf20Sopenharmony_ci EIS_QFS = 0x00010000, 4268c2ecf20Sopenharmony_ci EIS_RESERVED = (GENMASK(31, 17) | GENMASK(15, 11)), 4278c2ecf20Sopenharmony_ci}; 4288c2ecf20Sopenharmony_ci 4298c2ecf20Sopenharmony_ci/* RIC0 */ 4308c2ecf20Sopenharmony_cienum RIC0_BIT { 4318c2ecf20Sopenharmony_ci RIC0_FRE0 = 0x00000001, 4328c2ecf20Sopenharmony_ci RIC0_FRE1 = 0x00000002, 4338c2ecf20Sopenharmony_ci RIC0_FRE2 = 0x00000004, 4348c2ecf20Sopenharmony_ci RIC0_FRE3 = 0x00000008, 4358c2ecf20Sopenharmony_ci RIC0_FRE4 = 0x00000010, 4368c2ecf20Sopenharmony_ci RIC0_FRE5 = 0x00000020, 4378c2ecf20Sopenharmony_ci RIC0_FRE6 = 0x00000040, 4388c2ecf20Sopenharmony_ci RIC0_FRE7 = 0x00000080, 4398c2ecf20Sopenharmony_ci RIC0_FRE8 = 0x00000100, 4408c2ecf20Sopenharmony_ci RIC0_FRE9 = 0x00000200, 4418c2ecf20Sopenharmony_ci RIC0_FRE10 = 0x00000400, 4428c2ecf20Sopenharmony_ci RIC0_FRE11 = 0x00000800, 4438c2ecf20Sopenharmony_ci RIC0_FRE12 = 0x00001000, 4448c2ecf20Sopenharmony_ci RIC0_FRE13 = 0x00002000, 4458c2ecf20Sopenharmony_ci RIC0_FRE14 = 0x00004000, 4468c2ecf20Sopenharmony_ci RIC0_FRE15 = 0x00008000, 4478c2ecf20Sopenharmony_ci RIC0_FRE16 = 0x00010000, 4488c2ecf20Sopenharmony_ci RIC0_FRE17 = 0x00020000, 4498c2ecf20Sopenharmony_ci}; 4508c2ecf20Sopenharmony_ci 4518c2ecf20Sopenharmony_ci/* RIC0 */ 4528c2ecf20Sopenharmony_cienum RIS0_BIT { 4538c2ecf20Sopenharmony_ci RIS0_FRF0 = 0x00000001, 4548c2ecf20Sopenharmony_ci RIS0_FRF1 = 0x00000002, 4558c2ecf20Sopenharmony_ci RIS0_FRF2 = 0x00000004, 4568c2ecf20Sopenharmony_ci RIS0_FRF3 = 0x00000008, 4578c2ecf20Sopenharmony_ci RIS0_FRF4 = 0x00000010, 4588c2ecf20Sopenharmony_ci RIS0_FRF5 = 0x00000020, 4598c2ecf20Sopenharmony_ci RIS0_FRF6 = 0x00000040, 4608c2ecf20Sopenharmony_ci RIS0_FRF7 = 0x00000080, 4618c2ecf20Sopenharmony_ci RIS0_FRF8 = 0x00000100, 4628c2ecf20Sopenharmony_ci RIS0_FRF9 = 0x00000200, 4638c2ecf20Sopenharmony_ci RIS0_FRF10 = 0x00000400, 4648c2ecf20Sopenharmony_ci RIS0_FRF11 = 0x00000800, 4658c2ecf20Sopenharmony_ci RIS0_FRF12 = 0x00001000, 4668c2ecf20Sopenharmony_ci RIS0_FRF13 = 0x00002000, 4678c2ecf20Sopenharmony_ci RIS0_FRF14 = 0x00004000, 4688c2ecf20Sopenharmony_ci RIS0_FRF15 = 0x00008000, 4698c2ecf20Sopenharmony_ci RIS0_FRF16 = 0x00010000, 4708c2ecf20Sopenharmony_ci RIS0_FRF17 = 0x00020000, 4718c2ecf20Sopenharmony_ci RIS0_RESERVED = GENMASK(31, 18), 4728c2ecf20Sopenharmony_ci}; 4738c2ecf20Sopenharmony_ci 4748c2ecf20Sopenharmony_ci/* RIC1 */ 4758c2ecf20Sopenharmony_cienum RIC1_BIT { 4768c2ecf20Sopenharmony_ci RIC1_RFWE = 0x80000000, 4778c2ecf20Sopenharmony_ci}; 4788c2ecf20Sopenharmony_ci 4798c2ecf20Sopenharmony_ci/* RIS1 */ 4808c2ecf20Sopenharmony_cienum RIS1_BIT { 4818c2ecf20Sopenharmony_ci RIS1_RFWF = 0x80000000, 4828c2ecf20Sopenharmony_ci}; 4838c2ecf20Sopenharmony_ci 4848c2ecf20Sopenharmony_ci/* RIC2 */ 4858c2ecf20Sopenharmony_cienum RIC2_BIT { 4868c2ecf20Sopenharmony_ci RIC2_QFE0 = 0x00000001, 4878c2ecf20Sopenharmony_ci RIC2_QFE1 = 0x00000002, 4888c2ecf20Sopenharmony_ci RIC2_QFE2 = 0x00000004, 4898c2ecf20Sopenharmony_ci RIC2_QFE3 = 0x00000008, 4908c2ecf20Sopenharmony_ci RIC2_QFE4 = 0x00000010, 4918c2ecf20Sopenharmony_ci RIC2_QFE5 = 0x00000020, 4928c2ecf20Sopenharmony_ci RIC2_QFE6 = 0x00000040, 4938c2ecf20Sopenharmony_ci RIC2_QFE7 = 0x00000080, 4948c2ecf20Sopenharmony_ci RIC2_QFE8 = 0x00000100, 4958c2ecf20Sopenharmony_ci RIC2_QFE9 = 0x00000200, 4968c2ecf20Sopenharmony_ci RIC2_QFE10 = 0x00000400, 4978c2ecf20Sopenharmony_ci RIC2_QFE11 = 0x00000800, 4988c2ecf20Sopenharmony_ci RIC2_QFE12 = 0x00001000, 4998c2ecf20Sopenharmony_ci RIC2_QFE13 = 0x00002000, 5008c2ecf20Sopenharmony_ci RIC2_QFE14 = 0x00004000, 5018c2ecf20Sopenharmony_ci RIC2_QFE15 = 0x00008000, 5028c2ecf20Sopenharmony_ci RIC2_QFE16 = 0x00010000, 5038c2ecf20Sopenharmony_ci RIC2_QFE17 = 0x00020000, 5048c2ecf20Sopenharmony_ci RIC2_RFFE = 0x80000000, 5058c2ecf20Sopenharmony_ci}; 5068c2ecf20Sopenharmony_ci 5078c2ecf20Sopenharmony_ci/* RIS2 */ 5088c2ecf20Sopenharmony_cienum RIS2_BIT { 5098c2ecf20Sopenharmony_ci RIS2_QFF0 = 0x00000001, 5108c2ecf20Sopenharmony_ci RIS2_QFF1 = 0x00000002, 5118c2ecf20Sopenharmony_ci RIS2_QFF2 = 0x00000004, 5128c2ecf20Sopenharmony_ci RIS2_QFF3 = 0x00000008, 5138c2ecf20Sopenharmony_ci RIS2_QFF4 = 0x00000010, 5148c2ecf20Sopenharmony_ci RIS2_QFF5 = 0x00000020, 5158c2ecf20Sopenharmony_ci RIS2_QFF6 = 0x00000040, 5168c2ecf20Sopenharmony_ci RIS2_QFF7 = 0x00000080, 5178c2ecf20Sopenharmony_ci RIS2_QFF8 = 0x00000100, 5188c2ecf20Sopenharmony_ci RIS2_QFF9 = 0x00000200, 5198c2ecf20Sopenharmony_ci RIS2_QFF10 = 0x00000400, 5208c2ecf20Sopenharmony_ci RIS2_QFF11 = 0x00000800, 5218c2ecf20Sopenharmony_ci RIS2_QFF12 = 0x00001000, 5228c2ecf20Sopenharmony_ci RIS2_QFF13 = 0x00002000, 5238c2ecf20Sopenharmony_ci RIS2_QFF14 = 0x00004000, 5248c2ecf20Sopenharmony_ci RIS2_QFF15 = 0x00008000, 5258c2ecf20Sopenharmony_ci RIS2_QFF16 = 0x00010000, 5268c2ecf20Sopenharmony_ci RIS2_QFF17 = 0x00020000, 5278c2ecf20Sopenharmony_ci RIS2_RFFF = 0x80000000, 5288c2ecf20Sopenharmony_ci RIS2_RESERVED = GENMASK(30, 18), 5298c2ecf20Sopenharmony_ci}; 5308c2ecf20Sopenharmony_ci 5318c2ecf20Sopenharmony_ci/* TIC */ 5328c2ecf20Sopenharmony_cienum TIC_BIT { 5338c2ecf20Sopenharmony_ci TIC_FTE0 = 0x00000001, /* Undocumented? */ 5348c2ecf20Sopenharmony_ci TIC_FTE1 = 0x00000002, /* Undocumented? */ 5358c2ecf20Sopenharmony_ci TIC_TFUE = 0x00000100, 5368c2ecf20Sopenharmony_ci TIC_TFWE = 0x00000200, 5378c2ecf20Sopenharmony_ci}; 5388c2ecf20Sopenharmony_ci 5398c2ecf20Sopenharmony_ci/* TIS */ 5408c2ecf20Sopenharmony_cienum TIS_BIT { 5418c2ecf20Sopenharmony_ci TIS_FTF0 = 0x00000001, /* Undocumented? */ 5428c2ecf20Sopenharmony_ci TIS_FTF1 = 0x00000002, /* Undocumented? */ 5438c2ecf20Sopenharmony_ci TIS_TFUF = 0x00000100, 5448c2ecf20Sopenharmony_ci TIS_TFWF = 0x00000200, 5458c2ecf20Sopenharmony_ci TIS_RESERVED = (GENMASK(31, 20) | GENMASK(15, 12) | GENMASK(7, 4)) 5468c2ecf20Sopenharmony_ci}; 5478c2ecf20Sopenharmony_ci 5488c2ecf20Sopenharmony_ci/* ISS */ 5498c2ecf20Sopenharmony_cienum ISS_BIT { 5508c2ecf20Sopenharmony_ci ISS_FRS = 0x00000001, /* Undocumented? */ 5518c2ecf20Sopenharmony_ci ISS_FTS = 0x00000004, /* Undocumented? */ 5528c2ecf20Sopenharmony_ci ISS_ES = 0x00000040, 5538c2ecf20Sopenharmony_ci ISS_MS = 0x00000080, 5548c2ecf20Sopenharmony_ci ISS_TFUS = 0x00000100, 5558c2ecf20Sopenharmony_ci ISS_TFWS = 0x00000200, 5568c2ecf20Sopenharmony_ci ISS_RFWS = 0x00001000, 5578c2ecf20Sopenharmony_ci ISS_CGIS = 0x00002000, 5588c2ecf20Sopenharmony_ci ISS_DPS1 = 0x00020000, 5598c2ecf20Sopenharmony_ci ISS_DPS2 = 0x00040000, 5608c2ecf20Sopenharmony_ci ISS_DPS3 = 0x00080000, 5618c2ecf20Sopenharmony_ci ISS_DPS4 = 0x00100000, 5628c2ecf20Sopenharmony_ci ISS_DPS5 = 0x00200000, 5638c2ecf20Sopenharmony_ci ISS_DPS6 = 0x00400000, 5648c2ecf20Sopenharmony_ci ISS_DPS7 = 0x00800000, 5658c2ecf20Sopenharmony_ci ISS_DPS8 = 0x01000000, 5668c2ecf20Sopenharmony_ci ISS_DPS9 = 0x02000000, 5678c2ecf20Sopenharmony_ci ISS_DPS10 = 0x04000000, 5688c2ecf20Sopenharmony_ci ISS_DPS11 = 0x08000000, 5698c2ecf20Sopenharmony_ci ISS_DPS12 = 0x10000000, 5708c2ecf20Sopenharmony_ci ISS_DPS13 = 0x20000000, 5718c2ecf20Sopenharmony_ci ISS_DPS14 = 0x40000000, 5728c2ecf20Sopenharmony_ci ISS_DPS15 = 0x80000000, 5738c2ecf20Sopenharmony_ci}; 5748c2ecf20Sopenharmony_ci 5758c2ecf20Sopenharmony_ci/* CIE (R-Car Gen3 only) */ 5768c2ecf20Sopenharmony_cienum CIE_BIT { 5778c2ecf20Sopenharmony_ci CIE_CRIE = 0x00000001, 5788c2ecf20Sopenharmony_ci CIE_CTIE = 0x00000100, 5798c2ecf20Sopenharmony_ci CIE_RQFM = 0x00010000, 5808c2ecf20Sopenharmony_ci CIE_CL0M = 0x00020000, 5818c2ecf20Sopenharmony_ci CIE_RFWL = 0x00040000, 5828c2ecf20Sopenharmony_ci CIE_RFFL = 0x00080000, 5838c2ecf20Sopenharmony_ci}; 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ci/* GCCR */ 5868c2ecf20Sopenharmony_cienum GCCR_BIT { 5878c2ecf20Sopenharmony_ci GCCR_TCR = 0x00000003, 5888c2ecf20Sopenharmony_ci GCCR_TCR_NOREQ = 0x00000000, /* No request */ 5898c2ecf20Sopenharmony_ci GCCR_TCR_RESET = 0x00000001, /* gPTP/AVTP presentation timer reset */ 5908c2ecf20Sopenharmony_ci GCCR_TCR_CAPTURE = 0x00000003, /* Capture value set in GCCR.TCSS */ 5918c2ecf20Sopenharmony_ci GCCR_LTO = 0x00000004, 5928c2ecf20Sopenharmony_ci GCCR_LTI = 0x00000008, 5938c2ecf20Sopenharmony_ci GCCR_LPTC = 0x00000010, 5948c2ecf20Sopenharmony_ci GCCR_LMTT = 0x00000020, 5958c2ecf20Sopenharmony_ci GCCR_TCSS = 0x00000300, 5968c2ecf20Sopenharmony_ci GCCR_TCSS_GPTP = 0x00000000, /* gPTP timer value */ 5978c2ecf20Sopenharmony_ci GCCR_TCSS_ADJGPTP = 0x00000100, /* Adjusted gPTP timer value */ 5988c2ecf20Sopenharmony_ci GCCR_TCSS_AVTP = 0x00000200, /* AVTP presentation time value */ 5998c2ecf20Sopenharmony_ci}; 6008c2ecf20Sopenharmony_ci 6018c2ecf20Sopenharmony_ci/* GTI */ 6028c2ecf20Sopenharmony_cienum GTI_BIT { 6038c2ecf20Sopenharmony_ci GTI_TIV = 0x0FFFFFFF, 6048c2ecf20Sopenharmony_ci}; 6058c2ecf20Sopenharmony_ci 6068c2ecf20Sopenharmony_ci#define GTI_TIV_MAX GTI_TIV 6078c2ecf20Sopenharmony_ci#define GTI_TIV_MIN 0x20 6088c2ecf20Sopenharmony_ci 6098c2ecf20Sopenharmony_ci/* GIC */ 6108c2ecf20Sopenharmony_cienum GIC_BIT { 6118c2ecf20Sopenharmony_ci GIC_PTCE = 0x00000001, /* Undocumented? */ 6128c2ecf20Sopenharmony_ci GIC_PTME = 0x00000004, 6138c2ecf20Sopenharmony_ci}; 6148c2ecf20Sopenharmony_ci 6158c2ecf20Sopenharmony_ci/* GIS */ 6168c2ecf20Sopenharmony_cienum GIS_BIT { 6178c2ecf20Sopenharmony_ci GIS_PTCF = 0x00000001, /* Undocumented? */ 6188c2ecf20Sopenharmony_ci GIS_PTMF = 0x00000004, 6198c2ecf20Sopenharmony_ci GIS_RESERVED = GENMASK(15, 10), 6208c2ecf20Sopenharmony_ci}; 6218c2ecf20Sopenharmony_ci 6228c2ecf20Sopenharmony_ci/* GIE (R-Car Gen3 only) */ 6238c2ecf20Sopenharmony_cienum GIE_BIT { 6248c2ecf20Sopenharmony_ci GIE_PTCS = 0x00000001, 6258c2ecf20Sopenharmony_ci GIE_PTOS = 0x00000002, 6268c2ecf20Sopenharmony_ci GIE_PTMS0 = 0x00000004, 6278c2ecf20Sopenharmony_ci GIE_PTMS1 = 0x00000008, 6288c2ecf20Sopenharmony_ci GIE_PTMS2 = 0x00000010, 6298c2ecf20Sopenharmony_ci GIE_PTMS3 = 0x00000020, 6308c2ecf20Sopenharmony_ci GIE_PTMS4 = 0x00000040, 6318c2ecf20Sopenharmony_ci GIE_PTMS5 = 0x00000080, 6328c2ecf20Sopenharmony_ci GIE_PTMS6 = 0x00000100, 6338c2ecf20Sopenharmony_ci GIE_PTMS7 = 0x00000200, 6348c2ecf20Sopenharmony_ci GIE_ATCS0 = 0x00010000, 6358c2ecf20Sopenharmony_ci GIE_ATCS1 = 0x00020000, 6368c2ecf20Sopenharmony_ci GIE_ATCS2 = 0x00040000, 6378c2ecf20Sopenharmony_ci GIE_ATCS3 = 0x00080000, 6388c2ecf20Sopenharmony_ci GIE_ATCS4 = 0x00100000, 6398c2ecf20Sopenharmony_ci GIE_ATCS5 = 0x00200000, 6408c2ecf20Sopenharmony_ci GIE_ATCS6 = 0x00400000, 6418c2ecf20Sopenharmony_ci GIE_ATCS7 = 0x00800000, 6428c2ecf20Sopenharmony_ci GIE_ATCS8 = 0x01000000, 6438c2ecf20Sopenharmony_ci GIE_ATCS9 = 0x02000000, 6448c2ecf20Sopenharmony_ci GIE_ATCS10 = 0x04000000, 6458c2ecf20Sopenharmony_ci GIE_ATCS11 = 0x08000000, 6468c2ecf20Sopenharmony_ci GIE_ATCS12 = 0x10000000, 6478c2ecf20Sopenharmony_ci GIE_ATCS13 = 0x20000000, 6488c2ecf20Sopenharmony_ci GIE_ATCS14 = 0x40000000, 6498c2ecf20Sopenharmony_ci GIE_ATCS15 = 0x80000000, 6508c2ecf20Sopenharmony_ci}; 6518c2ecf20Sopenharmony_ci 6528c2ecf20Sopenharmony_ci/* GID (R-Car Gen3 only) */ 6538c2ecf20Sopenharmony_cienum GID_BIT { 6548c2ecf20Sopenharmony_ci GID_PTCD = 0x00000001, 6558c2ecf20Sopenharmony_ci GID_PTOD = 0x00000002, 6568c2ecf20Sopenharmony_ci GID_PTMD0 = 0x00000004, 6578c2ecf20Sopenharmony_ci GID_PTMD1 = 0x00000008, 6588c2ecf20Sopenharmony_ci GID_PTMD2 = 0x00000010, 6598c2ecf20Sopenharmony_ci GID_PTMD3 = 0x00000020, 6608c2ecf20Sopenharmony_ci GID_PTMD4 = 0x00000040, 6618c2ecf20Sopenharmony_ci GID_PTMD5 = 0x00000080, 6628c2ecf20Sopenharmony_ci GID_PTMD6 = 0x00000100, 6638c2ecf20Sopenharmony_ci GID_PTMD7 = 0x00000200, 6648c2ecf20Sopenharmony_ci GID_ATCD0 = 0x00010000, 6658c2ecf20Sopenharmony_ci GID_ATCD1 = 0x00020000, 6668c2ecf20Sopenharmony_ci GID_ATCD2 = 0x00040000, 6678c2ecf20Sopenharmony_ci GID_ATCD3 = 0x00080000, 6688c2ecf20Sopenharmony_ci GID_ATCD4 = 0x00100000, 6698c2ecf20Sopenharmony_ci GID_ATCD5 = 0x00200000, 6708c2ecf20Sopenharmony_ci GID_ATCD6 = 0x00400000, 6718c2ecf20Sopenharmony_ci GID_ATCD7 = 0x00800000, 6728c2ecf20Sopenharmony_ci GID_ATCD8 = 0x01000000, 6738c2ecf20Sopenharmony_ci GID_ATCD9 = 0x02000000, 6748c2ecf20Sopenharmony_ci GID_ATCD10 = 0x04000000, 6758c2ecf20Sopenharmony_ci GID_ATCD11 = 0x08000000, 6768c2ecf20Sopenharmony_ci GID_ATCD12 = 0x10000000, 6778c2ecf20Sopenharmony_ci GID_ATCD13 = 0x20000000, 6788c2ecf20Sopenharmony_ci GID_ATCD14 = 0x40000000, 6798c2ecf20Sopenharmony_ci GID_ATCD15 = 0x80000000, 6808c2ecf20Sopenharmony_ci}; 6818c2ecf20Sopenharmony_ci 6828c2ecf20Sopenharmony_ci/* RIE0 (R-Car Gen3 only) */ 6838c2ecf20Sopenharmony_cienum RIE0_BIT { 6848c2ecf20Sopenharmony_ci RIE0_FRS0 = 0x00000001, 6858c2ecf20Sopenharmony_ci RIE0_FRS1 = 0x00000002, 6868c2ecf20Sopenharmony_ci RIE0_FRS2 = 0x00000004, 6878c2ecf20Sopenharmony_ci RIE0_FRS3 = 0x00000008, 6888c2ecf20Sopenharmony_ci RIE0_FRS4 = 0x00000010, 6898c2ecf20Sopenharmony_ci RIE0_FRS5 = 0x00000020, 6908c2ecf20Sopenharmony_ci RIE0_FRS6 = 0x00000040, 6918c2ecf20Sopenharmony_ci RIE0_FRS7 = 0x00000080, 6928c2ecf20Sopenharmony_ci RIE0_FRS8 = 0x00000100, 6938c2ecf20Sopenharmony_ci RIE0_FRS9 = 0x00000200, 6948c2ecf20Sopenharmony_ci RIE0_FRS10 = 0x00000400, 6958c2ecf20Sopenharmony_ci RIE0_FRS11 = 0x00000800, 6968c2ecf20Sopenharmony_ci RIE0_FRS12 = 0x00001000, 6978c2ecf20Sopenharmony_ci RIE0_FRS13 = 0x00002000, 6988c2ecf20Sopenharmony_ci RIE0_FRS14 = 0x00004000, 6998c2ecf20Sopenharmony_ci RIE0_FRS15 = 0x00008000, 7008c2ecf20Sopenharmony_ci RIE0_FRS16 = 0x00010000, 7018c2ecf20Sopenharmony_ci RIE0_FRS17 = 0x00020000, 7028c2ecf20Sopenharmony_ci}; 7038c2ecf20Sopenharmony_ci 7048c2ecf20Sopenharmony_ci/* RID0 (R-Car Gen3 only) */ 7058c2ecf20Sopenharmony_cienum RID0_BIT { 7068c2ecf20Sopenharmony_ci RID0_FRD0 = 0x00000001, 7078c2ecf20Sopenharmony_ci RID0_FRD1 = 0x00000002, 7088c2ecf20Sopenharmony_ci RID0_FRD2 = 0x00000004, 7098c2ecf20Sopenharmony_ci RID0_FRD3 = 0x00000008, 7108c2ecf20Sopenharmony_ci RID0_FRD4 = 0x00000010, 7118c2ecf20Sopenharmony_ci RID0_FRD5 = 0x00000020, 7128c2ecf20Sopenharmony_ci RID0_FRD6 = 0x00000040, 7138c2ecf20Sopenharmony_ci RID0_FRD7 = 0x00000080, 7148c2ecf20Sopenharmony_ci RID0_FRD8 = 0x00000100, 7158c2ecf20Sopenharmony_ci RID0_FRD9 = 0x00000200, 7168c2ecf20Sopenharmony_ci RID0_FRD10 = 0x00000400, 7178c2ecf20Sopenharmony_ci RID0_FRD11 = 0x00000800, 7188c2ecf20Sopenharmony_ci RID0_FRD12 = 0x00001000, 7198c2ecf20Sopenharmony_ci RID0_FRD13 = 0x00002000, 7208c2ecf20Sopenharmony_ci RID0_FRD14 = 0x00004000, 7218c2ecf20Sopenharmony_ci RID0_FRD15 = 0x00008000, 7228c2ecf20Sopenharmony_ci RID0_FRD16 = 0x00010000, 7238c2ecf20Sopenharmony_ci RID0_FRD17 = 0x00020000, 7248c2ecf20Sopenharmony_ci}; 7258c2ecf20Sopenharmony_ci 7268c2ecf20Sopenharmony_ci/* RIE2 (R-Car Gen3 only) */ 7278c2ecf20Sopenharmony_cienum RIE2_BIT { 7288c2ecf20Sopenharmony_ci RIE2_QFS0 = 0x00000001, 7298c2ecf20Sopenharmony_ci RIE2_QFS1 = 0x00000002, 7308c2ecf20Sopenharmony_ci RIE2_QFS2 = 0x00000004, 7318c2ecf20Sopenharmony_ci RIE2_QFS3 = 0x00000008, 7328c2ecf20Sopenharmony_ci RIE2_QFS4 = 0x00000010, 7338c2ecf20Sopenharmony_ci RIE2_QFS5 = 0x00000020, 7348c2ecf20Sopenharmony_ci RIE2_QFS6 = 0x00000040, 7358c2ecf20Sopenharmony_ci RIE2_QFS7 = 0x00000080, 7368c2ecf20Sopenharmony_ci RIE2_QFS8 = 0x00000100, 7378c2ecf20Sopenharmony_ci RIE2_QFS9 = 0x00000200, 7388c2ecf20Sopenharmony_ci RIE2_QFS10 = 0x00000400, 7398c2ecf20Sopenharmony_ci RIE2_QFS11 = 0x00000800, 7408c2ecf20Sopenharmony_ci RIE2_QFS12 = 0x00001000, 7418c2ecf20Sopenharmony_ci RIE2_QFS13 = 0x00002000, 7428c2ecf20Sopenharmony_ci RIE2_QFS14 = 0x00004000, 7438c2ecf20Sopenharmony_ci RIE2_QFS15 = 0x00008000, 7448c2ecf20Sopenharmony_ci RIE2_QFS16 = 0x00010000, 7458c2ecf20Sopenharmony_ci RIE2_QFS17 = 0x00020000, 7468c2ecf20Sopenharmony_ci RIE2_RFFS = 0x80000000, 7478c2ecf20Sopenharmony_ci}; 7488c2ecf20Sopenharmony_ci 7498c2ecf20Sopenharmony_ci/* RID2 (R-Car Gen3 only) */ 7508c2ecf20Sopenharmony_cienum RID2_BIT { 7518c2ecf20Sopenharmony_ci RID2_QFD0 = 0x00000001, 7528c2ecf20Sopenharmony_ci RID2_QFD1 = 0x00000002, 7538c2ecf20Sopenharmony_ci RID2_QFD2 = 0x00000004, 7548c2ecf20Sopenharmony_ci RID2_QFD3 = 0x00000008, 7558c2ecf20Sopenharmony_ci RID2_QFD4 = 0x00000010, 7568c2ecf20Sopenharmony_ci RID2_QFD5 = 0x00000020, 7578c2ecf20Sopenharmony_ci RID2_QFD6 = 0x00000040, 7588c2ecf20Sopenharmony_ci RID2_QFD7 = 0x00000080, 7598c2ecf20Sopenharmony_ci RID2_QFD8 = 0x00000100, 7608c2ecf20Sopenharmony_ci RID2_QFD9 = 0x00000200, 7618c2ecf20Sopenharmony_ci RID2_QFD10 = 0x00000400, 7628c2ecf20Sopenharmony_ci RID2_QFD11 = 0x00000800, 7638c2ecf20Sopenharmony_ci RID2_QFD12 = 0x00001000, 7648c2ecf20Sopenharmony_ci RID2_QFD13 = 0x00002000, 7658c2ecf20Sopenharmony_ci RID2_QFD14 = 0x00004000, 7668c2ecf20Sopenharmony_ci RID2_QFD15 = 0x00008000, 7678c2ecf20Sopenharmony_ci RID2_QFD16 = 0x00010000, 7688c2ecf20Sopenharmony_ci RID2_QFD17 = 0x00020000, 7698c2ecf20Sopenharmony_ci RID2_RFFD = 0x80000000, 7708c2ecf20Sopenharmony_ci}; 7718c2ecf20Sopenharmony_ci 7728c2ecf20Sopenharmony_ci/* TIE (R-Car Gen3 only) */ 7738c2ecf20Sopenharmony_cienum TIE_BIT { 7748c2ecf20Sopenharmony_ci TIE_FTS0 = 0x00000001, 7758c2ecf20Sopenharmony_ci TIE_FTS1 = 0x00000002, 7768c2ecf20Sopenharmony_ci TIE_FTS2 = 0x00000004, 7778c2ecf20Sopenharmony_ci TIE_FTS3 = 0x00000008, 7788c2ecf20Sopenharmony_ci TIE_TFUS = 0x00000100, 7798c2ecf20Sopenharmony_ci TIE_TFWS = 0x00000200, 7808c2ecf20Sopenharmony_ci TIE_MFUS = 0x00000400, 7818c2ecf20Sopenharmony_ci TIE_MFWS = 0x00000800, 7828c2ecf20Sopenharmony_ci TIE_TDPS0 = 0x00010000, 7838c2ecf20Sopenharmony_ci TIE_TDPS1 = 0x00020000, 7848c2ecf20Sopenharmony_ci TIE_TDPS2 = 0x00040000, 7858c2ecf20Sopenharmony_ci TIE_TDPS3 = 0x00080000, 7868c2ecf20Sopenharmony_ci}; 7878c2ecf20Sopenharmony_ci 7888c2ecf20Sopenharmony_ci/* TID (R-Car Gen3 only) */ 7898c2ecf20Sopenharmony_cienum TID_BIT { 7908c2ecf20Sopenharmony_ci TID_FTD0 = 0x00000001, 7918c2ecf20Sopenharmony_ci TID_FTD1 = 0x00000002, 7928c2ecf20Sopenharmony_ci TID_FTD2 = 0x00000004, 7938c2ecf20Sopenharmony_ci TID_FTD3 = 0x00000008, 7948c2ecf20Sopenharmony_ci TID_TFUD = 0x00000100, 7958c2ecf20Sopenharmony_ci TID_TFWD = 0x00000200, 7968c2ecf20Sopenharmony_ci TID_MFUD = 0x00000400, 7978c2ecf20Sopenharmony_ci TID_MFWD = 0x00000800, 7988c2ecf20Sopenharmony_ci TID_TDPD0 = 0x00010000, 7998c2ecf20Sopenharmony_ci TID_TDPD1 = 0x00020000, 8008c2ecf20Sopenharmony_ci TID_TDPD2 = 0x00040000, 8018c2ecf20Sopenharmony_ci TID_TDPD3 = 0x00080000, 8028c2ecf20Sopenharmony_ci}; 8038c2ecf20Sopenharmony_ci 8048c2ecf20Sopenharmony_ci/* ECMR */ 8058c2ecf20Sopenharmony_cienum ECMR_BIT { 8068c2ecf20Sopenharmony_ci ECMR_PRM = 0x00000001, 8078c2ecf20Sopenharmony_ci ECMR_DM = 0x00000002, 8088c2ecf20Sopenharmony_ci ECMR_TE = 0x00000020, 8098c2ecf20Sopenharmony_ci ECMR_RE = 0x00000040, 8108c2ecf20Sopenharmony_ci ECMR_MPDE = 0x00000200, 8118c2ecf20Sopenharmony_ci ECMR_TXF = 0x00010000, /* Undocumented? */ 8128c2ecf20Sopenharmony_ci ECMR_RXF = 0x00020000, 8138c2ecf20Sopenharmony_ci ECMR_PFR = 0x00040000, 8148c2ecf20Sopenharmony_ci ECMR_ZPF = 0x00080000, /* Undocumented? */ 8158c2ecf20Sopenharmony_ci ECMR_RZPF = 0x00100000, 8168c2ecf20Sopenharmony_ci ECMR_DPAD = 0x00200000, 8178c2ecf20Sopenharmony_ci ECMR_RCSC = 0x00800000, 8188c2ecf20Sopenharmony_ci ECMR_TRCCM = 0x04000000, 8198c2ecf20Sopenharmony_ci}; 8208c2ecf20Sopenharmony_ci 8218c2ecf20Sopenharmony_ci/* ECSR */ 8228c2ecf20Sopenharmony_cienum ECSR_BIT { 8238c2ecf20Sopenharmony_ci ECSR_ICD = 0x00000001, 8248c2ecf20Sopenharmony_ci ECSR_MPD = 0x00000002, 8258c2ecf20Sopenharmony_ci ECSR_LCHNG = 0x00000004, 8268c2ecf20Sopenharmony_ci ECSR_PHYI = 0x00000008, 8278c2ecf20Sopenharmony_ci}; 8288c2ecf20Sopenharmony_ci 8298c2ecf20Sopenharmony_ci/* ECSIPR */ 8308c2ecf20Sopenharmony_cienum ECSIPR_BIT { 8318c2ecf20Sopenharmony_ci ECSIPR_ICDIP = 0x00000001, 8328c2ecf20Sopenharmony_ci ECSIPR_MPDIP = 0x00000002, 8338c2ecf20Sopenharmony_ci ECSIPR_LCHNGIP = 0x00000004, /* Undocumented? */ 8348c2ecf20Sopenharmony_ci}; 8358c2ecf20Sopenharmony_ci 8368c2ecf20Sopenharmony_ci/* PIR */ 8378c2ecf20Sopenharmony_cienum PIR_BIT { 8388c2ecf20Sopenharmony_ci PIR_MDC = 0x00000001, 8398c2ecf20Sopenharmony_ci PIR_MMD = 0x00000002, 8408c2ecf20Sopenharmony_ci PIR_MDO = 0x00000004, 8418c2ecf20Sopenharmony_ci PIR_MDI = 0x00000008, 8428c2ecf20Sopenharmony_ci}; 8438c2ecf20Sopenharmony_ci 8448c2ecf20Sopenharmony_ci/* PSR */ 8458c2ecf20Sopenharmony_cienum PSR_BIT { 8468c2ecf20Sopenharmony_ci PSR_LMON = 0x00000001, 8478c2ecf20Sopenharmony_ci}; 8488c2ecf20Sopenharmony_ci 8498c2ecf20Sopenharmony_ci/* PIPR */ 8508c2ecf20Sopenharmony_cienum PIPR_BIT { 8518c2ecf20Sopenharmony_ci PIPR_PHYIP = 0x00000001, 8528c2ecf20Sopenharmony_ci}; 8538c2ecf20Sopenharmony_ci 8548c2ecf20Sopenharmony_ci/* MPR */ 8558c2ecf20Sopenharmony_cienum MPR_BIT { 8568c2ecf20Sopenharmony_ci MPR_MP = 0x0000ffff, 8578c2ecf20Sopenharmony_ci}; 8588c2ecf20Sopenharmony_ci 8598c2ecf20Sopenharmony_ci/* GECMR */ 8608c2ecf20Sopenharmony_cienum GECMR_BIT { 8618c2ecf20Sopenharmony_ci GECMR_SPEED = 0x00000001, 8628c2ecf20Sopenharmony_ci GECMR_SPEED_100 = 0x00000000, 8638c2ecf20Sopenharmony_ci GECMR_SPEED_1000 = 0x00000001, 8648c2ecf20Sopenharmony_ci}; 8658c2ecf20Sopenharmony_ci 8668c2ecf20Sopenharmony_ci/* The Ethernet AVB descriptor definitions. */ 8678c2ecf20Sopenharmony_cistruct ravb_desc { 8688c2ecf20Sopenharmony_ci __le16 ds; /* Descriptor size */ 8698c2ecf20Sopenharmony_ci u8 cc; /* Content control MSBs (reserved) */ 8708c2ecf20Sopenharmony_ci u8 die_dt; /* Descriptor interrupt enable and type */ 8718c2ecf20Sopenharmony_ci __le32 dptr; /* Descriptor pointer */ 8728c2ecf20Sopenharmony_ci}; 8738c2ecf20Sopenharmony_ci 8748c2ecf20Sopenharmony_ci#define DPTR_ALIGN 4 /* Required descriptor pointer alignment */ 8758c2ecf20Sopenharmony_ci 8768c2ecf20Sopenharmony_cienum DIE_DT { 8778c2ecf20Sopenharmony_ci /* Frame data */ 8788c2ecf20Sopenharmony_ci DT_FMID = 0x40, 8798c2ecf20Sopenharmony_ci DT_FSTART = 0x50, 8808c2ecf20Sopenharmony_ci DT_FEND = 0x60, 8818c2ecf20Sopenharmony_ci DT_FSINGLE = 0x70, 8828c2ecf20Sopenharmony_ci /* Chain control */ 8838c2ecf20Sopenharmony_ci DT_LINK = 0x80, 8848c2ecf20Sopenharmony_ci DT_LINKFIX = 0x90, 8858c2ecf20Sopenharmony_ci DT_EOS = 0xa0, 8868c2ecf20Sopenharmony_ci /* HW/SW arbitration */ 8878c2ecf20Sopenharmony_ci DT_FEMPTY = 0xc0, 8888c2ecf20Sopenharmony_ci DT_FEMPTY_IS = 0xd0, 8898c2ecf20Sopenharmony_ci DT_FEMPTY_IC = 0xe0, 8908c2ecf20Sopenharmony_ci DT_FEMPTY_ND = 0xf0, 8918c2ecf20Sopenharmony_ci DT_LEMPTY = 0x20, 8928c2ecf20Sopenharmony_ci DT_EEMPTY = 0x30, 8938c2ecf20Sopenharmony_ci}; 8948c2ecf20Sopenharmony_ci 8958c2ecf20Sopenharmony_cistruct ravb_rx_desc { 8968c2ecf20Sopenharmony_ci __le16 ds_cc; /* Descriptor size and content control LSBs */ 8978c2ecf20Sopenharmony_ci u8 msc; /* MAC status code */ 8988c2ecf20Sopenharmony_ci u8 die_dt; /* Descriptor interrupt enable and type */ 8998c2ecf20Sopenharmony_ci __le32 dptr; /* Descpriptor pointer */ 9008c2ecf20Sopenharmony_ci}; 9018c2ecf20Sopenharmony_ci 9028c2ecf20Sopenharmony_cistruct ravb_ex_rx_desc { 9038c2ecf20Sopenharmony_ci __le16 ds_cc; /* Descriptor size and content control lower bits */ 9048c2ecf20Sopenharmony_ci u8 msc; /* MAC status code */ 9058c2ecf20Sopenharmony_ci u8 die_dt; /* Descriptor interrupt enable and type */ 9068c2ecf20Sopenharmony_ci __le32 dptr; /* Descpriptor pointer */ 9078c2ecf20Sopenharmony_ci __le32 ts_n; /* Timestampe nsec */ 9088c2ecf20Sopenharmony_ci __le32 ts_sl; /* Timestamp low */ 9098c2ecf20Sopenharmony_ci __le16 ts_sh; /* Timestamp high */ 9108c2ecf20Sopenharmony_ci __le16 res; /* Reserved bits */ 9118c2ecf20Sopenharmony_ci}; 9128c2ecf20Sopenharmony_ci 9138c2ecf20Sopenharmony_cienum RX_DS_CC_BIT { 9148c2ecf20Sopenharmony_ci RX_DS = 0x0fff, /* Data size */ 9158c2ecf20Sopenharmony_ci RX_TR = 0x1000, /* Truncation indication */ 9168c2ecf20Sopenharmony_ci RX_EI = 0x2000, /* Error indication */ 9178c2ecf20Sopenharmony_ci RX_PS = 0xc000, /* Padding selection */ 9188c2ecf20Sopenharmony_ci}; 9198c2ecf20Sopenharmony_ci 9208c2ecf20Sopenharmony_ci/* E-MAC status code */ 9218c2ecf20Sopenharmony_cienum MSC_BIT { 9228c2ecf20Sopenharmony_ci MSC_CRC = 0x01, /* Frame CRC error */ 9238c2ecf20Sopenharmony_ci MSC_RFE = 0x02, /* Frame reception error (flagged by PHY) */ 9248c2ecf20Sopenharmony_ci MSC_RTSF = 0x04, /* Frame length error (frame too short) */ 9258c2ecf20Sopenharmony_ci MSC_RTLF = 0x08, /* Frame length error (frame too long) */ 9268c2ecf20Sopenharmony_ci MSC_FRE = 0x10, /* Fraction error (not a multiple of 8 bits) */ 9278c2ecf20Sopenharmony_ci MSC_CRL = 0x20, /* Carrier lost */ 9288c2ecf20Sopenharmony_ci MSC_CEEF = 0x40, /* Carrier extension error */ 9298c2ecf20Sopenharmony_ci MSC_MC = 0x80, /* Multicast frame reception */ 9308c2ecf20Sopenharmony_ci}; 9318c2ecf20Sopenharmony_ci 9328c2ecf20Sopenharmony_cistruct ravb_tx_desc { 9338c2ecf20Sopenharmony_ci __le16 ds_tagl; /* Descriptor size and frame tag LSBs */ 9348c2ecf20Sopenharmony_ci u8 tagh_tsr; /* Frame tag MSBs and timestamp storage request bit */ 9358c2ecf20Sopenharmony_ci u8 die_dt; /* Descriptor interrupt enable and type */ 9368c2ecf20Sopenharmony_ci __le32 dptr; /* Descpriptor pointer */ 9378c2ecf20Sopenharmony_ci}; 9388c2ecf20Sopenharmony_ci 9398c2ecf20Sopenharmony_cienum TX_DS_TAGL_BIT { 9408c2ecf20Sopenharmony_ci TX_DS = 0x0fff, /* Data size */ 9418c2ecf20Sopenharmony_ci TX_TAGL = 0xf000, /* Frame tag LSBs */ 9428c2ecf20Sopenharmony_ci}; 9438c2ecf20Sopenharmony_ci 9448c2ecf20Sopenharmony_cienum TX_TAGH_TSR_BIT { 9458c2ecf20Sopenharmony_ci TX_TAGH = 0x3f, /* Frame tag MSBs */ 9468c2ecf20Sopenharmony_ci TX_TSR = 0x40, /* Timestamp storage request */ 9478c2ecf20Sopenharmony_ci}; 9488c2ecf20Sopenharmony_cienum RAVB_QUEUE { 9498c2ecf20Sopenharmony_ci RAVB_BE = 0, /* Best Effort Queue */ 9508c2ecf20Sopenharmony_ci RAVB_NC, /* Network Control Queue */ 9518c2ecf20Sopenharmony_ci}; 9528c2ecf20Sopenharmony_ci 9538c2ecf20Sopenharmony_ci#define DBAT_ENTRY_NUM 22 9548c2ecf20Sopenharmony_ci#define RX_QUEUE_OFFSET 4 9558c2ecf20Sopenharmony_ci#define NUM_RX_QUEUE 2 9568c2ecf20Sopenharmony_ci#define NUM_TX_QUEUE 2 9578c2ecf20Sopenharmony_ci 9588c2ecf20Sopenharmony_ci#define RX_BUF_SZ (2048 - ETH_FCS_LEN + sizeof(__sum16)) 9598c2ecf20Sopenharmony_ci 9608c2ecf20Sopenharmony_ci/* TX descriptors per packet */ 9618c2ecf20Sopenharmony_ci#define NUM_TX_DESC_GEN2 2 9628c2ecf20Sopenharmony_ci#define NUM_TX_DESC_GEN3 1 9638c2ecf20Sopenharmony_ci 9648c2ecf20Sopenharmony_cistruct ravb_tstamp_skb { 9658c2ecf20Sopenharmony_ci struct list_head list; 9668c2ecf20Sopenharmony_ci struct sk_buff *skb; 9678c2ecf20Sopenharmony_ci u16 tag; 9688c2ecf20Sopenharmony_ci}; 9698c2ecf20Sopenharmony_ci 9708c2ecf20Sopenharmony_cistruct ravb_ptp_perout { 9718c2ecf20Sopenharmony_ci u32 target; 9728c2ecf20Sopenharmony_ci u32 period; 9738c2ecf20Sopenharmony_ci}; 9748c2ecf20Sopenharmony_ci 9758c2ecf20Sopenharmony_ci#define N_EXT_TS 1 9768c2ecf20Sopenharmony_ci#define N_PER_OUT 1 9778c2ecf20Sopenharmony_ci 9788c2ecf20Sopenharmony_cistruct ravb_ptp { 9798c2ecf20Sopenharmony_ci struct ptp_clock *clock; 9808c2ecf20Sopenharmony_ci struct ptp_clock_info info; 9818c2ecf20Sopenharmony_ci u32 default_addend; 9828c2ecf20Sopenharmony_ci u32 current_addend; 9838c2ecf20Sopenharmony_ci int extts[N_EXT_TS]; 9848c2ecf20Sopenharmony_ci struct ravb_ptp_perout perout[N_PER_OUT]; 9858c2ecf20Sopenharmony_ci}; 9868c2ecf20Sopenharmony_ci 9878c2ecf20Sopenharmony_cienum ravb_chip_id { 9888c2ecf20Sopenharmony_ci RCAR_GEN2, 9898c2ecf20Sopenharmony_ci RCAR_GEN3, 9908c2ecf20Sopenharmony_ci}; 9918c2ecf20Sopenharmony_ci 9928c2ecf20Sopenharmony_cistruct ravb_private { 9938c2ecf20Sopenharmony_ci struct net_device *ndev; 9948c2ecf20Sopenharmony_ci struct platform_device *pdev; 9958c2ecf20Sopenharmony_ci void __iomem *addr; 9968c2ecf20Sopenharmony_ci struct clk *clk; 9978c2ecf20Sopenharmony_ci struct mdiobb_ctrl mdiobb; 9988c2ecf20Sopenharmony_ci u32 num_rx_ring[NUM_RX_QUEUE]; 9998c2ecf20Sopenharmony_ci u32 num_tx_ring[NUM_TX_QUEUE]; 10008c2ecf20Sopenharmony_ci u32 desc_bat_size; 10018c2ecf20Sopenharmony_ci dma_addr_t desc_bat_dma; 10028c2ecf20Sopenharmony_ci struct ravb_desc *desc_bat; 10038c2ecf20Sopenharmony_ci dma_addr_t rx_desc_dma[NUM_RX_QUEUE]; 10048c2ecf20Sopenharmony_ci dma_addr_t tx_desc_dma[NUM_TX_QUEUE]; 10058c2ecf20Sopenharmony_ci struct ravb_ex_rx_desc *rx_ring[NUM_RX_QUEUE]; 10068c2ecf20Sopenharmony_ci struct ravb_tx_desc *tx_ring[NUM_TX_QUEUE]; 10078c2ecf20Sopenharmony_ci void *tx_align[NUM_TX_QUEUE]; 10088c2ecf20Sopenharmony_ci struct sk_buff **rx_skb[NUM_RX_QUEUE]; 10098c2ecf20Sopenharmony_ci struct sk_buff **tx_skb[NUM_TX_QUEUE]; 10108c2ecf20Sopenharmony_ci u32 rx_over_errors; 10118c2ecf20Sopenharmony_ci u32 rx_fifo_errors; 10128c2ecf20Sopenharmony_ci struct net_device_stats stats[NUM_RX_QUEUE]; 10138c2ecf20Sopenharmony_ci u32 tstamp_tx_ctrl; 10148c2ecf20Sopenharmony_ci u32 tstamp_rx_ctrl; 10158c2ecf20Sopenharmony_ci struct list_head ts_skb_list; 10168c2ecf20Sopenharmony_ci u32 ts_skb_tag; 10178c2ecf20Sopenharmony_ci struct ravb_ptp ptp; 10188c2ecf20Sopenharmony_ci spinlock_t lock; /* Register access lock */ 10198c2ecf20Sopenharmony_ci u32 cur_rx[NUM_RX_QUEUE]; /* Consumer ring indices */ 10208c2ecf20Sopenharmony_ci u32 dirty_rx[NUM_RX_QUEUE]; /* Producer ring indices */ 10218c2ecf20Sopenharmony_ci u32 cur_tx[NUM_TX_QUEUE]; 10228c2ecf20Sopenharmony_ci u32 dirty_tx[NUM_TX_QUEUE]; 10238c2ecf20Sopenharmony_ci struct napi_struct napi[NUM_RX_QUEUE]; 10248c2ecf20Sopenharmony_ci struct work_struct work; 10258c2ecf20Sopenharmony_ci /* MII transceiver section. */ 10268c2ecf20Sopenharmony_ci struct mii_bus *mii_bus; /* MDIO bus control */ 10278c2ecf20Sopenharmony_ci int link; 10288c2ecf20Sopenharmony_ci phy_interface_t phy_interface; 10298c2ecf20Sopenharmony_ci int msg_enable; 10308c2ecf20Sopenharmony_ci int speed; 10318c2ecf20Sopenharmony_ci int emac_irq; 10328c2ecf20Sopenharmony_ci enum ravb_chip_id chip_id; 10338c2ecf20Sopenharmony_ci int rx_irqs[NUM_RX_QUEUE]; 10348c2ecf20Sopenharmony_ci int tx_irqs[NUM_TX_QUEUE]; 10358c2ecf20Sopenharmony_ci 10368c2ecf20Sopenharmony_ci unsigned no_avb_link:1; 10378c2ecf20Sopenharmony_ci unsigned avb_link_active_low:1; 10388c2ecf20Sopenharmony_ci unsigned wol_enabled:1; 10398c2ecf20Sopenharmony_ci unsigned rxcidm:1; /* RX Clock Internal Delay Mode */ 10408c2ecf20Sopenharmony_ci unsigned txcidm:1; /* TX Clock Internal Delay Mode */ 10418c2ecf20Sopenharmony_ci unsigned rgmii_override:1; /* Deprecated rgmii-*id behavior */ 10428c2ecf20Sopenharmony_ci int num_tx_desc; /* TX descriptors per packet */ 10438c2ecf20Sopenharmony_ci}; 10448c2ecf20Sopenharmony_ci 10458c2ecf20Sopenharmony_cistatic inline u32 ravb_read(struct net_device *ndev, enum ravb_reg reg) 10468c2ecf20Sopenharmony_ci{ 10478c2ecf20Sopenharmony_ci struct ravb_private *priv = netdev_priv(ndev); 10488c2ecf20Sopenharmony_ci 10498c2ecf20Sopenharmony_ci return ioread32(priv->addr + reg); 10508c2ecf20Sopenharmony_ci} 10518c2ecf20Sopenharmony_ci 10528c2ecf20Sopenharmony_cistatic inline void ravb_write(struct net_device *ndev, u32 data, 10538c2ecf20Sopenharmony_ci enum ravb_reg reg) 10548c2ecf20Sopenharmony_ci{ 10558c2ecf20Sopenharmony_ci struct ravb_private *priv = netdev_priv(ndev); 10568c2ecf20Sopenharmony_ci 10578c2ecf20Sopenharmony_ci iowrite32(data, priv->addr + reg); 10588c2ecf20Sopenharmony_ci} 10598c2ecf20Sopenharmony_ci 10608c2ecf20Sopenharmony_civoid ravb_modify(struct net_device *ndev, enum ravb_reg reg, u32 clear, 10618c2ecf20Sopenharmony_ci u32 set); 10628c2ecf20Sopenharmony_ciint ravb_wait(struct net_device *ndev, enum ravb_reg reg, u32 mask, u32 value); 10638c2ecf20Sopenharmony_ci 10648c2ecf20Sopenharmony_civoid ravb_ptp_interrupt(struct net_device *ndev); 10658c2ecf20Sopenharmony_civoid ravb_ptp_init(struct net_device *ndev, struct platform_device *pdev); 10668c2ecf20Sopenharmony_civoid ravb_ptp_stop(struct net_device *ndev); 10678c2ecf20Sopenharmony_ci 10688c2ecf20Sopenharmony_ci#endif /* #ifndef __RAVB_H__ */ 1069