Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/ethernet/renesas/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 10 kB image not shown  

Quelle  rtsn.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */

/* Renesas Ethernet-TSN device driver
 *
 * Copyright (C) 2022 Renesas Electronics Corporation
 * Copyright (C) 2023 Niklas Söderlund <niklas.soderlund@ragnatech.se>
 */


#ifndef __RTSN_H__
#define __RTSN_H__

#include <linux/types.h>

#define AXIBMI 0x0000
#define TSNMHD 0x1000
#define RMSO 0x2000
#define RMRO 0x3800

enum rtsn_reg {
 AXIWC  = AXIBMI + 0x0000,
 AXIRC  = AXIBMI + 0x0004,
 TDPC0  = AXIBMI + 0x0010,
 TFT  = AXIBMI + 0x0090,
 TATLS0  = AXIBMI + 0x00a0,
 TATLS1  = AXIBMI + 0x00a4,
 TATLR  = AXIBMI + 0x00a8,
 RATLS0  = AXIBMI + 0x00b0,
 RATLS1  = AXIBMI + 0x00b4,
 RATLR  = AXIBMI + 0x00b8,
 TSA0  = AXIBMI + 0x00c0,
 TSS0  = AXIBMI + 0x00c4,
 TRCR0  = AXIBMI + 0x0140,
 RIDAUAS0 = AXIBMI + 0x0180,
 RR  = AXIBMI + 0x0200,
 TATS  = AXIBMI + 0x0210,
 TATSR0  = AXIBMI + 0x0214,
 TATSR1  = AXIBMI + 0x0218,
 TATSR2  = AXIBMI + 0x021c,
 RATS  = AXIBMI + 0x0220,
 RATSR0  = AXIBMI + 0x0224,
 RATSR1  = AXIBMI + 0x0228,
 RATSR2  = AXIBMI + 0x022c,
 RIDASM0  = AXIBMI + 0x0240,
 RIDASAM0 = AXIBMI + 0x0244,
 RIDACAM0 = AXIBMI + 0x0248,
 EIS0  = AXIBMI + 0x0300,
 EIE0  = AXIBMI + 0x0304,
 EID0  = AXIBMI + 0x0308,
 EIS1  = AXIBMI + 0x0310,
 EIE1  = AXIBMI + 0x0314,
 EID1  = AXIBMI + 0x0318,
 TCEIS0  = AXIBMI + 0x0340,
 TCEIE0  = AXIBMI + 0x0344,
 TCEID0  = AXIBMI + 0x0348,
 RFSEIS0  = AXIBMI + 0x04c0,
 RFSEIE0  = AXIBMI + 0x04c4,
 RFSEID0  = AXIBMI + 0x04c8,
 RFEIS0  = AXIBMI + 0x0540,
 RFEIE0  = AXIBMI + 0x0544,
 RFEID0  = AXIBMI + 0x0548,
 RCEIS0  = AXIBMI + 0x05c0,
 RCEIE0  = AXIBMI + 0x05c4,
 RCEID0  = AXIBMI + 0x05c8,
 RIDAOIS  = AXIBMI + 0x0640,
 RIDAOIE  = AXIBMI + 0x0644,
 RIDAOID  = AXIBMI + 0x0648,
 TSFEIS  = AXIBMI + 0x06c0,
 TSFEIE  = AXIBMI + 0x06c4,
 TSFEID  = AXIBMI + 0x06c8,
 TSCEIS  = AXIBMI + 0x06d0,
 TSCEIE  = AXIBMI + 0x06d4,
 TSCEID  = AXIBMI + 0x06d8,
 DIS  = AXIBMI + 0x0b00,
 DIE  = AXIBMI + 0x0b04,
 DID  = AXIBMI + 0x0b08,
 TDIS0  = AXIBMI + 0x0b10,
 TDIE0  = AXIBMI + 0x0b14,
 TDID0  = AXIBMI + 0x0b18,
 RDIS0  = AXIBMI + 0x0b90,
 RDIE0  = AXIBMI + 0x0b94,
 RDID0  = AXIBMI + 0x0b98,
 TSDIS  = AXIBMI + 0x0c10,
 TSDIE  = AXIBMI + 0x0c14,
 TSDID  = AXIBMI + 0x0c18,
 GPOUT  = AXIBMI + 0x6000,

 OCR  = TSNMHD + 0x0000,
 OSR  = TSNMHD + 0x0004,
 SWR  = TSNMHD + 0x0008,
 SIS  = TSNMHD + 0x000c,
 GIS  = TSNMHD + 0x0010,
 GIE  = TSNMHD + 0x0014,
 GID  = TSNMHD + 0x0018,
 TIS1  = TSNMHD + 0x0020,
 TIE1  = TSNMHD + 0x0024,
 TID1  = TSNMHD + 0x0028,
 TIS2  = TSNMHD + 0x0030,
 TIE2  = TSNMHD + 0x0034,
 TID2  = TSNMHD + 0x0038,
 RIS  = TSNMHD + 0x0040,
 RIE  = TSNMHD + 0x0044,
 RID  = TSNMHD + 0x0048,
 TGC1  = TSNMHD + 0x0050,
 TGC2  = TSNMHD + 0x0054,
 TFS0  = TSNMHD + 0x0060,
 TCF0  = TSNMHD + 0x0070,
 TCR1  = TSNMHD + 0x0080,
 TCR2  = TSNMHD + 0x0084,
 TCR3  = TSNMHD + 0x0088,
 TCR4  = TSNMHD + 0x008c,
 TMS0  = TSNMHD + 0x0090,
 TSR1  = TSNMHD + 0x00b0,
 TSR2  = TSNMHD + 0x00b4,
 TSR3  = TSNMHD + 0x00b8,
 TSR4  = TSNMHD + 0x00bc,
 TSR5  = TSNMHD + 0x00c0,
 RGC  = TSNMHD + 0x00d0,
 RDFCR  = TSNMHD + 0x00d4,
 RCFCR  = TSNMHD + 0x00d8,
 REFCNCR  = TSNMHD + 0x00dc,
 RSR1  = TSNMHD + 0x00e0,
 RSR2  = TSNMHD + 0x00e4,
 RSR3  = TSNMHD + 0x00e8,
 TCIS  = TSNMHD + 0x01e0,
 TCIE  = TSNMHD + 0x01e4,
 TCID  = TSNMHD + 0x01e8,
 TPTPC  = TSNMHD + 0x01f0,
 TTML  = TSNMHD + 0x01f4,
 TTJ  = TSNMHD + 0x01f8,
 TCC  = TSNMHD + 0x0200,
 TCS  = TSNMHD + 0x0204,
 TGS  = TSNMHD + 0x020c,
 TACST0  = TSNMHD + 0x0210,
 TACST1  = TSNMHD + 0x0214,
 TACST2  = TSNMHD + 0x0218,
 TALIT0  = TSNMHD + 0x0220,
 TALIT1  = TSNMHD + 0x0224,
 TALIT2  = TSNMHD + 0x0228,
 TAEN0  = TSNMHD + 0x0230,
 TAEN1  = TSNMHD + 0x0234,
 TASFE  = TSNMHD + 0x0240,
 TACLL0  = TSNMHD + 0x0250,
 TACLL1  = TSNMHD + 0x0254,
 TACLL2  = TSNMHD + 0x0258,
 CACC  = TSNMHD + 0x0260,
 CCS  = TSNMHD + 0x0264,
 CAIV0  = TSNMHD + 0x0270,
 CAUL0  = TSNMHD + 0x0290,
 TOCST0  = TSNMHD + 0x0300,
 TOCST1  = TSNMHD + 0x0304,
 TOCST2  = TSNMHD + 0x0308,
 TOLIT0  = TSNMHD + 0x0310,
 TOLIT1  = TSNMHD + 0x0314,
 TOLIT2  = TSNMHD + 0x0318,
 TOEN0  = TSNMHD + 0x0320,
 TOEN1  = TSNMHD + 0x0324,
 TOSFE  = TSNMHD + 0x0330,
 TCLR0  = TSNMHD + 0x0340,
 TCLR1  = TSNMHD + 0x0344,
 TCLR2  = TSNMHD + 0x0348,
 TSMS  = TSNMHD + 0x0350,
 COCC  = TSNMHD + 0x0360,
 COIV0  = TSNMHD + 0x03b0,
 COUL0  = TSNMHD + 0x03d0,
 QSTMACU0 = TSNMHD + 0x0400,
 QSTMACD0 = TSNMHD + 0x0404,
 QSTMAMU0 = TSNMHD + 0x0408,
 QSTMAMD0 = TSNMHD + 0x040c,
 QSFTVL0  = TSNMHD + 0x0410,
 QSFTVLM0 = TSNMHD + 0x0414,
 QSFTMSD0 = TSNMHD + 0x0418,
 QSFTGMI0 = TSNMHD + 0x041c,
 QSFTLS  = TSNMHD + 0x0600,
 QSFTLIS  = TSNMHD + 0x0604,
 QSFTLIE  = TSNMHD + 0x0608,
 QSFTLID  = TSNMHD + 0x060c,
 QSMSMC  = TSNMHD + 0x0610,
 QSGTMC  = TSNMHD + 0x0614,
 QSEIS  = TSNMHD + 0x0618,
 QSEIE  = TSNMHD + 0x061c,
 QSEID  = TSNMHD + 0x0620,
 QGACST0  = TSNMHD + 0x0630,
 QGACST1  = TSNMHD + 0x0634,
 QGACST2  = TSNMHD + 0x0638,
 QGALIT1  = TSNMHD + 0x0640,
 QGALIT2  = TSNMHD + 0x0644,
 QGAEN0  = TSNMHD + 0x0648,
 QGAEN1  = TSNMHD + 0x074c,
 QGIGS  = TSNMHD + 0x0650,
 QGGC  = TSNMHD + 0x0654,
 QGATL0  = TSNMHD + 0x0664,
 QGATL1  = TSNMHD + 0x0668,
 QGATL2  = TSNMHD + 0x066c,
 QGOCST0  = TSNMHD + 0x0670,
 QGOCST1  = TSNMHD + 0x0674,
 QGOCST2  = TSNMHD + 0x0678,
 QGOLIT0  = TSNMHD + 0x067c,
 QGOLIT1  = TSNMHD + 0x0680,
 QGOLIT2  = TSNMHD + 0x0684,
 QGOEN0  = TSNMHD + 0x0688,
 QGOEN1  = TSNMHD + 0x068c,
 QGTRO  = TSNMHD + 0x0690,
 QGTR1  = TSNMHD + 0x0694,
 QGTR2  = TSNMHD + 0x0698,
 QGFSMS  = TSNMHD + 0x069c,
 QTMIS  = TSNMHD + 0x06e0,
 QTMIE  = TSNMHD + 0x06e4,
 QTMID  = TSNMHD + 0x06e8,
 QMEC  = TSNMHD + 0x0700,
 QMMC  = TSNMHD + 0x0704,
 QRFDC  = TSNMHD + 0x0708,
 QYFDC  = TSNMHD + 0x070c,
 QVTCMC0  = TSNMHD + 0x0710,
 QMCBSC0  = TSNMHD + 0x0750,
 QMCIRC0  = TSNMHD + 0x0790,
 QMEBSC0  = TSNMHD + 0x07d0,
 QMEIRC0  = TSNMHD + 0x0710,
 QMCFC  = TSNMHD + 0x0850,
 QMEIS  = TSNMHD + 0x0860,
 QMEIE  = TSNMHD + 0x0864,
 QMEID  = TSNMHD + 0x086c,
 QSMFC0  = TSNMHD + 0x0870,
 QMSPPC0  = TSNMHD + 0x08b0,
 QMSRPC0  = TSNMHD + 0x08f0,
 QGPPC0  = TSNMHD + 0x0930,
 QGRPC0  = TSNMHD + 0x0950,
 QMDPC0  = TSNMHD + 0x0970,
 QMGPC0  = TSNMHD + 0x09b0,
 QMYPC0  = TSNMHD + 0x09f0,
 QMRPC0  = TSNMHD + 0x0a30,
 MQSTMACU = TSNMHD + 0x0a70,
 MQSTMACD = TSNMHD + 0x0a74,
 MQSTMAMU = TSNMHD + 0x0a78,
 MQSTMAMD = TSNMHD + 0x0a7c,
 MQSFTVL  = TSNMHD + 0x0a80,
 MQSFTVLM = TSNMHD + 0x0a84,
 MQSFTMSD = TSNMHD + 0x0a88,
 MQSFTGMI = TSNMHD + 0x0a8c,

 CFCR0  = RMSO + 0x0800,
 FMSCR  = RMSO + 0x0c10,

 MMC  = RMRO + 0x0000,
 MPSM  = RMRO + 0x0010,
 MPIC  = RMRO + 0x0014,
 MTFFC  = RMRO + 0x0020,
 MTPFC  = RMRO + 0x0024,
 MTATC0  = RMRO + 0x0040,
 MRGC  = RMRO + 0x0080,
 MRMAC0  = RMRO + 0x0084,
 MRMAC1  = RMRO + 0x0088,
 MRAFC  = RMRO + 0x008c,
 MRSCE  = RMRO + 0x0090,
 MRSCP  = RMRO + 0x0094,
 MRSCC  = RMRO + 0x0098,
 MRFSCE  = RMRO + 0x009c,
 MRFSCP  = RMRO + 0x00a0,
 MTRC  = RMRO + 0x00a4,
 MPFC  = RMRO + 0x0100,
 MLVC  = RMRO + 0x0340,
 MEEEC  = RMRO + 0x0350,
 MLBC  = RMRO + 0x0360,
 MGMR  = RMRO + 0x0400,
 MMPFTCT  = RMRO + 0x0410,
 MAPFTCT  = RMRO + 0x0414,
 MPFRCT  = RMRO + 0x0418,
 MFCICT  = RMRO + 0x041c,
 MEEECT  = RMRO + 0x0420,
 MEIS  = RMRO + 0x0500,
 MEIE  = RMRO + 0x0504,
 MEID  = RMRO + 0x0508,
 MMIS0  = RMRO + 0x0510,
 MMIE0  = RMRO + 0x0514,
 MMID0  = RMRO + 0x0518,
 MMIS1  = RMRO + 0x0520,
 MMIE1  = RMRO + 0x0524,
 MMID1  = RMRO + 0x0528,
 MMIS2  = RMRO + 0x0530,
 MMIE2  = RMRO + 0x0534,
 MMID2  = RMRO + 0x0538,
 MXMS  = RMRO + 0x0600,

};

/* AXIBMI */
#define RR_RATRR  BIT(0)
#define RR_TATRR  BIT(1)
#define RR_RST   (RR_RATRR | RR_TATRR)
#define RR_RST_COMPLETE  0x03

#define AXIWC_DEFAULT  0xffff
#define AXIRC_DEFAULT  0xffff

#define TATLS0_TEDE  BIT(1)
#define TATLS0_TATEN_SHIFT 24
#define TATLS0_TATEN(n)  ((n) << TATLS0_TATEN_SHIFT)
#define TATLR_TATL  BIT(31)

#define RATLS0_RETS  BIT(2)
#define RATLS0_REDE  BIT(3)
#define RATLS0_RATEN_SHIFT 24
#define RATLS0_RATEN(n)  ((n) << RATLS0_RATEN_SHIFT)
#define RATLR_RATL  BIT(31)

#define DIE_DID_TDICX(n) BIT((n))
#define DIE_DID_RDICX(n) BIT((n) + 8)
#define TDIE_TDID_TDX(n) BIT(n)
#define RDIE_RDID_RDX(n) BIT(n)
#define TDIS_TDS(n)  BIT(n)
#define RDIS_RDS(n)  BIT(n)

/* MHD */
#define OSR_OPS   0x07
#define SWR_SWR   BIT(0)

#define TGC1_TQTM_SFM  0xff00
#define TGC1_STTV_DEFAULT 0x03

#define TMS_MFS_MAX  0x2800

/* RMAC System */
#define CFCR_SDID(n)  ((n) << 16)
#define FMSCR_FMSIE(n)  ((n) << 0)

/* RMAC */
#define MPIC_PIS_MASK  GENMASK(1, 0)
#define MPIC_PIS_MII  0
#define MPIC_PIS_RMII  0x01
#define MPIC_PIS_GMII  0x02
#define MPIC_PIS_RGMII  0x03
#define MPIC_LSC_SHIFT  2
#define MPIC_LSC_MASK  GENMASK(3, MPIC_LSC_SHIFT)
#define MPIC_LSC_10M  (0 << MPIC_LSC_SHIFT)
#define MPIC_LSC_100M  (0x01 << MPIC_LSC_SHIFT)
#define MPIC_LSC_1G  (0x02 << MPIC_LSC_SHIFT)
#define MPIC_PSMCS_SHIFT 16
#define MPIC_PSMCS_MASK  GENMASK(21, MPIC_PSMCS_SHIFT)
#define MPIC_PSMCS_DEFAULT (0x0a << MPIC_PSMCS_SHIFT)
#define MPIC_PSMHT_SHIFT 24
#define MPIC_PSMHT_MASK  GENMASK(26, MPIC_PSMHT_SHIFT)
#define MPIC_PSMHT_DEFAULT (0x07 << MPIC_PSMHT_SHIFT)

#define MLVC_PASE  BIT(8)
#define MLVC_PSE  BIT(16)
#define MLVC_PLV  BIT(17)

#define MPSM_PSME  BIT(0)
#define MPSM_PSMAD  BIT(1)
#define MPSM_PDA_SHIFT  3
#define MPSM_PDA_MASK  GENMASK(7, 3)
#define MPSM_PDA(n)  (((n) << MPSM_PDA_SHIFT) & MPSM_PDA_MASK)
#define MPSM_PRA_SHIFT  8
#define MPSM_PRA_MASK  GENMASK(12, 8)
#define MPSM_PRA(n)  (((n) << MPSM_PRA_SHIFT) & MPSM_PRA_MASK)
#define MPSM_PRD_SHIFT  16
#define MPSM_PRD_SET(n)  ((n) << MPSM_PRD_SHIFT)
#define MPSM_PRD_GET(n)  ((n) >> MPSM_PRD_SHIFT)

#define GPOUT_RDM  BIT(13)
#define GPOUT_TDM  BIT(14)

/* RTSN */
#define RTSN_INTERVAL_US 1000
#define RTSN_TIMEOUT_US  1000000

#define TX_NUM_CHAINS  1
#define RX_NUM_CHAINS  1

#define TX_CHAIN_SIZE  1024
#define RX_CHAIN_SIZE  1024

#define TX_CHAIN_IDX  0
#define RX_CHAIN_IDX  0

#define TX_CHAIN_ADDR_OFFSET (sizeof(struct rtsn_desc) * TX_CHAIN_IDX)
#define RX_CHAIN_ADDR_OFFSET (sizeof(struct rtsn_desc) * RX_CHAIN_IDX)

#define PKT_BUF_SZ  1584
#define RTSN_ALIGN  128

enum rtsn_mode {
 OCR_OPC_DISABLE,
 OCR_OPC_CONFIG,
 OCR_OPC_OPERATION,
};

/* Descriptors */
enum RX_DS_CC_BIT {
 RX_DS = 0x0fff, /* Data size */
 RX_TR = 0x1000, /* Truncation indication */
 RX_EI = 0x2000, /* Error indication */
 RX_PS = 0xc000, /* Padding selection */
};

enum TX_FS_TAGL_BIT {
 TX_DS = 0x0fff, /* Data size */
 TX_TAGL = 0xf000, /* Frame tag LSBs */
};

enum DIE_DT {
 /* HW/SW arbitration */
 DT_FEMPTY_IS = 0x10,
 DT_FEMPTY_IC = 0x20,
 DT_FEMPTY_ND = 0x30,
 DT_FEMPTY = 0x40,
 DT_FEMPTY_START = 0x50,
 DT_FEMPTY_MID = 0x60,
 DT_FEMPTY_END = 0x70,

 /* Frame data */
 DT_FSINGLE = 0x80,
 DT_FSTART = 0x90,
 DT_FMID  = 0xa0,
 DT_FEND  = 0xb0,

 /* Chain control */
 DT_LEMPTY = 0xc0,
 DT_EEMPTY = 0xd0,
 DT_LINK  = 0xe0,
 DT_EOS  = 0xf0,

 DT_MASK  = 0xf0,
 D_DIE  = 0x08,
};

struct rtsn_desc {
 __le16 info_ds;
 __u8 info;
 u8 die_dt;
 __le32 dptr;
} __packed;

struct rtsn_ts_desc {
 __le16 info_ds;
 __u8 info;
 u8 die_dt;
 __le32 dptr;
 __le32 ts_nsec;
 __le32 ts_sec;
} __packed;

struct rtsn_ext_desc {
 __le16 info_ds;
 __u8 info;
 u8 die_dt;
 __le32 dptr;
 __le64 info1;
} __packed;

struct rtsn_ext_ts_desc {
 __le16 info_ds;
 __u8 info;
 u8 die_dt;
 __le32 dptr;
 __le64 info1;
 __le32 ts_nsec;
 __le32 ts_sec;
} __packed;

enum EXT_INFO_DS_BIT {
 TXC = 0x4000,
};

#endif

Messung V0.5
C=99 H=99 G=98

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.