18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* drivers/atm/uPD98402.h - NEC uPD98402 (PHY) declarations */ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci/* Written 1995 by Werner Almesberger, EPFL LRC */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef DRIVERS_ATM_uPD98402_H 88c2ecf20Sopenharmony_ci#define DRIVERS_ATM_uPD98402_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci/* 118c2ecf20Sopenharmony_ci * Registers 128c2ecf20Sopenharmony_ci */ 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define uPD98402_CMR 0x00 /* Command Register */ 158c2ecf20Sopenharmony_ci#define uPD98402_MDR 0x01 /* Mode Register */ 168c2ecf20Sopenharmony_ci#define uPD98402_PICR 0x02 /* PHY Interrupt Cause Register */ 178c2ecf20Sopenharmony_ci#define uPD98402_PIMR 0x03 /* PHY Interrupt Mask Register */ 188c2ecf20Sopenharmony_ci#define uPD98402_ACR 0x04 /* Alarm Cause Register */ 198c2ecf20Sopenharmony_ci#define uPD98402_ACMR 0x05 /* Alarm Cause Mask Register */ 208c2ecf20Sopenharmony_ci#define uPD98402_PCR 0x06 /* Performance Cause Register */ 218c2ecf20Sopenharmony_ci#define uPD98402_PCMR 0x07 /* Performance Cause Mask Register */ 228c2ecf20Sopenharmony_ci#define uPD98402_IACM 0x08 /* Internal Alarm Cause Mask Register */ 238c2ecf20Sopenharmony_ci#define uPD98402_B1ECT 0x09 /* B1 Error Count Register */ 248c2ecf20Sopenharmony_ci#define uPD98402_B2ECT 0x0a /* B2 Error Count Register */ 258c2ecf20Sopenharmony_ci#define uPD98402_B3ECT 0x0b /* B3 Error Count Regster */ 268c2ecf20Sopenharmony_ci#define uPD98402_PFECB 0x0c /* Path FEBE Count Register */ 278c2ecf20Sopenharmony_ci#define uPD98402_LECCT 0x0d /* Line FEBE Count Register */ 288c2ecf20Sopenharmony_ci#define uPD98402_HECCT 0x0e /* HEC Error Count Register */ 298c2ecf20Sopenharmony_ci#define uPD98402_FJCT 0x0f /* Frequence Justification Count Reg */ 308c2ecf20Sopenharmony_ci#define uPD98402_PCOCR 0x10 /* Perf. Counter Overflow Cause Reg */ 318c2ecf20Sopenharmony_ci#define uPD98402_PCOMR 0x11 /* Perf. Counter Overflow Mask Reg */ 328c2ecf20Sopenharmony_ci#define uPD98402_C11T 0x20 /* C11T Data Register */ 338c2ecf20Sopenharmony_ci#define uPD98402_C12T 0x21 /* C12T Data Register */ 348c2ecf20Sopenharmony_ci#define uPD98402_C13T 0x22 /* C13T Data Register */ 358c2ecf20Sopenharmony_ci#define uPD98402_F1T 0x23 /* F1T Data Register */ 368c2ecf20Sopenharmony_ci#define uPD98402_K2T 0x25 /* K2T Data Register */ 378c2ecf20Sopenharmony_ci#define uPD98402_C2T 0x26 /* C2T Data Register */ 388c2ecf20Sopenharmony_ci#define uPD98402_F2T 0x27 /* F2T Data Register */ 398c2ecf20Sopenharmony_ci#define uPD98402_C11R 0x30 /* C11T Data Register */ 408c2ecf20Sopenharmony_ci#define uPD98402_C12R 0x31 /* C12T Data Register */ 418c2ecf20Sopenharmony_ci#define uPD98402_C13R 0x32 /* C13T Data Register */ 428c2ecf20Sopenharmony_ci#define uPD98402_F1R 0x33 /* F1T Data Register */ 438c2ecf20Sopenharmony_ci#define uPD98402_K2R 0x35 /* K2T Data Register */ 448c2ecf20Sopenharmony_ci#define uPD98402_C2R 0x36 /* C2T Data Register */ 458c2ecf20Sopenharmony_ci#define uPD98402_F2R 0x37 /* F2T Data Register */ 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci/* CMR is at 0x00 */ 488c2ecf20Sopenharmony_ci#define uPD98402_CMR_PFRF 0x01 /* Send path FERF */ 498c2ecf20Sopenharmony_ci#define uPD98402_CMR_LFRF 0x02 /* Send line FERF */ 508c2ecf20Sopenharmony_ci#define uPD98402_CMR_PAIS 0x04 /* Send path AIS */ 518c2ecf20Sopenharmony_ci#define uPD98402_CMR_LAIS 0x08 /* Send line AIS */ 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci/* MDR is at 0x01 */ 548c2ecf20Sopenharmony_ci#define uPD98402_MDR_ALP 0x01 /* ATM layer loopback */ 558c2ecf20Sopenharmony_ci#define uPD98402_MDR_TPLP 0x02 /* PMD loopback, to host */ 568c2ecf20Sopenharmony_ci#define uPD98402_MDR_RPLP 0x04 /* PMD loopback, to network */ 578c2ecf20Sopenharmony_ci#define uPD98402_MDR_SS0 0x08 /* SS0 */ 588c2ecf20Sopenharmony_ci#define uPD98402_MDR_SS1 0x10 /* SS1 */ 598c2ecf20Sopenharmony_ci#define uPD98402_MDR_SS_MASK 0x18 /* mask */ 608c2ecf20Sopenharmony_ci#define uPD98402_MDR_SS_SHIFT 3 /* shift */ 618c2ecf20Sopenharmony_ci#define uPD98402_MDR_HEC 0x20 /* disable HEC inbound processing */ 628c2ecf20Sopenharmony_ci#define uPD98402_MDR_FSR 0x40 /* disable frame scrambler */ 638c2ecf20Sopenharmony_ci#define uPD98402_MDR_CSR 0x80 /* disable cell scrambler */ 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci/* PICR is at 0x02, PIMR is at 0x03 */ 668c2ecf20Sopenharmony_ci#define uPD98402_INT_PFM 0x01 /* performance counter has changed */ 678c2ecf20Sopenharmony_ci#define uPD98402_INT_ALM 0x02 /* line fault */ 688c2ecf20Sopenharmony_ci#define uPD98402_INT_RFO 0x04 /* receive FIFO overflow */ 698c2ecf20Sopenharmony_ci#define uPD98402_INT_PCO 0x08 /* performance counter overflow */ 708c2ecf20Sopenharmony_ci#define uPD98402_INT_OTD 0x20 /* OTD has occurred */ 718c2ecf20Sopenharmony_ci#define uPD98402_INT_LOS 0x40 /* Loss Of Signal */ 728c2ecf20Sopenharmony_ci#define uPD98402_INT_LOF 0x80 /* Loss Of Frame */ 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci/* ACR is as 0x04, ACMR is at 0x05 */ 758c2ecf20Sopenharmony_ci#define uPD98402_ALM_PFRF 0x01 /* path FERF */ 768c2ecf20Sopenharmony_ci#define uPD98402_ALM_LFRF 0x02 /* line FERF */ 778c2ecf20Sopenharmony_ci#define uPD98402_ALM_PAIS 0x04 /* path AIS */ 788c2ecf20Sopenharmony_ci#define uPD98402_ALM_LAIS 0x08 /* line AIS */ 798c2ecf20Sopenharmony_ci#define uPD98402_ALM_LOD 0x10 /* loss of delineation */ 808c2ecf20Sopenharmony_ci#define uPD98402_ALM_LOP 0x20 /* loss of pointer */ 818c2ecf20Sopenharmony_ci#define uPD98402_ALM_OOF 0x40 /* out of frame */ 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci/* PCR is at 0x06, PCMR is at 0x07 */ 848c2ecf20Sopenharmony_ci#define uPD98402_PFM_PFEB 0x01 /* path FEBE */ 858c2ecf20Sopenharmony_ci#define uPD98402_PFM_LFEB 0x02 /* line FEBE */ 868c2ecf20Sopenharmony_ci#define uPD98402_PFM_B3E 0x04 /* B3 error */ 878c2ecf20Sopenharmony_ci#define uPD98402_PFM_B2E 0x08 /* B2 error */ 888c2ecf20Sopenharmony_ci#define uPD98402_PFM_B1E 0x10 /* B1 error */ 898c2ecf20Sopenharmony_ci#define uPD98402_PFM_FJ 0x20 /* frequency justification */ 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci/* IACM is at 0x08 */ 928c2ecf20Sopenharmony_ci#define uPD98402_IACM_PFRF 0x01 /* don't generate path FERF */ 938c2ecf20Sopenharmony_ci#define uPD98402_IACM_LFRF 0x02 /* don't generate line FERF */ 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci/* PCOCR is at 0x010, PCOMR is at 0x11 */ 968c2ecf20Sopenharmony_ci#define uPD98402_PCO_B1EC 0x01 /* B1ECT overflow */ 978c2ecf20Sopenharmony_ci#define uPD98402_PCO_B2EC 0x02 /* B2ECT overflow */ 988c2ecf20Sopenharmony_ci#define uPD98402_PCO_B3EC 0x04 /* B3ECT overflow */ 998c2ecf20Sopenharmony_ci#define uPD98402_PCO_PFBC 0x08 /* PFEBC overflow */ 1008c2ecf20Sopenharmony_ci#define uPD98402_PCO_LFBC 0x10 /* LFEVC overflow */ 1018c2ecf20Sopenharmony_ci#define uPD98402_PCO_HECC 0x20 /* HECCT overflow */ 1028c2ecf20Sopenharmony_ci#define uPD98402_PCO_FJC 0x40 /* FJCT overflow */ 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ciint uPD98402_init(struct atm_dev *dev); 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci#endif 108