cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dm9051.h (4074B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (c) 2022 Davicom Semiconductor,Inc.
      4 * Davicom DM9051 SPI Fast Ethernet Linux driver
      5 */
      6
      7#ifndef _DM9051_H_
      8#define _DM9051_H_
      9
     10#include <linux/bits.h>
     11#include <linux/netdevice.h>
     12#include <linux/types.h>
     13
     14#define DM9051_ID		0x9051
     15
     16#define DM9051_NCR		0x00
     17#define DM9051_NSR		0x01
     18#define DM9051_TCR		0x02
     19#define DM9051_RCR		0x05
     20#define DM9051_BPTR		0x08
     21#define DM9051_FCR		0x0A
     22#define DM9051_EPCR		0x0B
     23#define DM9051_EPAR		0x0C
     24#define DM9051_EPDRL		0x0D
     25#define DM9051_EPDRH		0x0E
     26#define DM9051_PAR		0x10
     27#define DM9051_MAR		0x16
     28#define DM9051_GPCR		0x1E
     29#define DM9051_GPR		0x1F
     30
     31#define DM9051_VIDL		0x28
     32#define DM9051_VIDH		0x29
     33#define DM9051_PIDL		0x2A
     34#define DM9051_PIDH		0x2B
     35#define DM9051_SMCR		0x2F
     36#define	DM9051_ATCR		0x30
     37#define	DM9051_SPIBCR		0x38
     38#define DM9051_INTCR		0x39
     39#define DM9051_PPCR		0x3D
     40
     41#define DM9051_MPCR		0x55
     42#define DM9051_LMCR		0x57
     43#define DM9051_MBNDRY		0x5E
     44
     45#define DM9051_MRRL		0x74
     46#define DM9051_MRRH		0x75
     47#define DM9051_MWRL		0x7A
     48#define DM9051_MWRH		0x7B
     49#define DM9051_TXPLL		0x7C
     50#define DM9051_TXPLH		0x7D
     51#define DM9051_ISR		0x7E
     52#define DM9051_IMR		0x7F
     53
     54#define DM_SPI_MRCMDX		0x70
     55#define DM_SPI_MRCMD		0x72
     56#define DM_SPI_MWCMD		0x78
     57
     58#define DM_SPI_WR		0x80
     59
     60/* dm9051 Ethernet controller registers bits
     61 */
     62/* 0x00 */
     63#define NCR_WAKEEN		BIT(6)
     64#define NCR_FDX			BIT(3)
     65#define NCR_RST			BIT(0)
     66/* 0x01 */
     67#define NSR_SPEED		BIT(7)
     68#define NSR_LINKST		BIT(6)
     69#define NSR_WAKEST		BIT(5)
     70#define NSR_TX2END		BIT(3)
     71#define NSR_TX1END		BIT(2)
     72/* 0x02 */
     73#define TCR_DIS_JABBER_TIMER	BIT(6) /* for Jabber Packet support */
     74#define TCR_TXREQ		BIT(0)
     75/* 0x05 */
     76#define RCR_DIS_WATCHDOG_TIMER	BIT(6)  /* for Jabber Packet support */
     77#define RCR_DIS_LONG		BIT(5)
     78#define RCR_DIS_CRC		BIT(4)
     79#define RCR_ALL			BIT(3)
     80#define RCR_PRMSC		BIT(1)
     81#define RCR_RXEN		BIT(0)
     82#define RCR_RX_DISABLE		(RCR_DIS_LONG | RCR_DIS_CRC)
     83/* 0x06 */
     84#define RSR_RF			BIT(7)
     85#define RSR_MF			BIT(6)
     86#define RSR_LCS			BIT(5)
     87#define RSR_RWTO		BIT(4)
     88#define RSR_PLE			BIT(3)
     89#define RSR_AE			BIT(2)
     90#define RSR_CE			BIT(1)
     91#define RSR_FOE			BIT(0)
     92#define	RSR_ERR_BITS		(RSR_RF | RSR_LCS | RSR_RWTO | RSR_PLE | \
     93				 RSR_AE | RSR_CE | RSR_FOE)
     94/* 0x0A */
     95#define FCR_TXPEN		BIT(5)
     96#define FCR_BKPM		BIT(3)
     97#define FCR_FLCE		BIT(0)
     98#define FCR_RXTX_BITS		(FCR_TXPEN | FCR_BKPM | FCR_FLCE)
     99/* 0x0B */
    100#define EPCR_WEP		BIT(4)
    101#define EPCR_EPOS		BIT(3)
    102#define EPCR_ERPRR		BIT(2)
    103#define EPCR_ERPRW		BIT(1)
    104#define EPCR_ERRE		BIT(0)
    105/* 0x1E */
    106#define GPCR_GEP_CNTL		BIT(0)
    107/* 0x1F */
    108#define GPR_PHY_OFF		BIT(0)
    109/* 0x30 */
    110#define	ATCR_AUTO_TX		BIT(7)
    111/* 0x39 */
    112#define INTCR_POL_LOW		(1 << 0)
    113#define INTCR_POL_HIGH		(0 << 0)
    114/* 0x3D */
    115/* Pause Packet Control Register - default = 1 */
    116#define PPCR_PAUSE_COUNT	0x08
    117/* 0x55 */
    118#define MPCR_RSTTX		BIT(1)
    119#define MPCR_RSTRX		BIT(0)
    120/* 0x57 */
    121/* LEDMode Control Register - LEDMode1 */
    122/* Value 0x81 : bit[7] = 1, bit[2] = 0, bit[1:0] = 01b */
    123#define LMCR_NEWMOD		BIT(7)
    124#define LMCR_TYPED1		BIT(1)
    125#define LMCR_TYPED0		BIT(0)
    126#define LMCR_MODE1		(LMCR_NEWMOD | LMCR_TYPED0)
    127/* 0x5E */
    128#define MBNDRY_BYTE		BIT(7)
    129/* 0xFE */
    130#define ISR_MBS			BIT(7)
    131#define ISR_LNKCHG		BIT(5)
    132#define ISR_ROOS		BIT(3)
    133#define ISR_ROS			BIT(2)
    134#define ISR_PTS			BIT(1)
    135#define ISR_PRS			BIT(0)
    136#define ISR_CLR_INT		(ISR_LNKCHG | ISR_ROOS | ISR_ROS | \
    137				 ISR_PTS | ISR_PRS)
    138#define ISR_STOP_MRCMD		(ISR_MBS)
    139/* 0xFF */
    140#define IMR_PAR			BIT(7)
    141#define IMR_LNKCHGI		BIT(5)
    142#define IMR_PTM			BIT(1)
    143#define IMR_PRM			BIT(0)
    144
    145/* Const
    146 */
    147#define DM9051_PHY_ADDR			1	/* PHY id */
    148#define DM9051_PHY			0x40	/* PHY address 0x01 */
    149#define DM9051_PKT_RDY			0x01	/* Packet ready to receive */
    150#define DM9051_PKT_MAX			1536	/* Received packet max size */
    151#define DM9051_TX_QUE_HI_WATER		50
    152#define DM9051_TX_QUE_LO_WATER		25
    153#define DM_EEPROM_MAGIC			0x9051
    154
    155#define	DM_RXHDR_SIZE			sizeof(struct dm9051_rxhdr)
    156
    157static inline struct board_info *to_dm9051_board(struct net_device *ndev)
    158{
    159	return netdev_priv(ndev);
    160}
    161
    162#endif /* _DM9051_H_ */