1*5d884fc0SJustin Hibbits /* 2*5d884fc0SJustin Hibbits * Copyright (c) 2026 Justin Hibbits 3*5d884fc0SJustin Hibbits * 4*5d884fc0SJustin Hibbits * SPDX-License-Identifier: BSD-2-Clause 5*5d884fc0SJustin Hibbits */ 6*5d884fc0SJustin Hibbits 7*5d884fc0SJustin Hibbits #ifndef DPAA_FMAN_PORT_VAR_H 8*5d884fc0SJustin Hibbits #define DPAA_FMAN_PORT_VAR_H 9*5d884fc0SJustin Hibbits 10*5d884fc0SJustin Hibbits #include "fman_port.h" 11*5d884fc0SJustin Hibbits 12*5d884fc0SJustin Hibbits struct fman_port_rsrc { 13*5d884fc0SJustin Hibbits uint32_t num; 14*5d884fc0SJustin Hibbits uint32_t extra; 15*5d884fc0SJustin Hibbits }; 16*5d884fc0SJustin Hibbits 17*5d884fc0SJustin Hibbits /* Base softc. Shared by all FMan port drivers. */ 18*5d884fc0SJustin Hibbits #define MAX_BM_POOLS 64 19*5d884fc0SJustin Hibbits struct fman_port_softc { 20*5d884fc0SJustin Hibbits device_t sc_dev; 21*5d884fc0SJustin Hibbits struct resource *sc_mem; 22*5d884fc0SJustin Hibbits int sc_port_id; 23*5d884fc0SJustin Hibbits int sc_port_type; 24*5d884fc0SJustin Hibbits int sc_port_speed; 25*5d884fc0SJustin Hibbits 26*5d884fc0SJustin Hibbits int sc_revision_major; 27*5d884fc0SJustin Hibbits int sc_revision_minor; 28*5d884fc0SJustin Hibbits 29*5d884fc0SJustin Hibbits int sc_max_frame_length; 30*5d884fc0SJustin Hibbits int sc_bm_max_pools; 31*5d884fc0SJustin Hibbits int sc_max_port_fifo_size; 32*5d884fc0SJustin Hibbits 33*5d884fc0SJustin Hibbits int sc_default_fqid; 34*5d884fc0SJustin Hibbits int sc_err_fqid; 35*5d884fc0SJustin Hibbits 36*5d884fc0SJustin Hibbits int sc_max_ext_portals; 37*5d884fc0SJustin Hibbits int sc_max_sub_portals; 38*5d884fc0SJustin Hibbits 39*5d884fc0SJustin Hibbits struct fman_port_rsrc sc_open_dmas; 40*5d884fc0SJustin Hibbits struct fman_port_rsrc sc_tasks; 41*5d884fc0SJustin Hibbits struct fman_port_rsrc sc_fifo_bufs; 42*5d884fc0SJustin Hibbits }; 43*5d884fc0SJustin Hibbits 44*5d884fc0SJustin Hibbits #define PORT_V3 0x01 45*5d884fc0SJustin Hibbits 46*5d884fc0SJustin Hibbits /* QMI per-port registers. */ 47*5d884fc0SJustin Hibbits #define FMQM_PNC 0x400 48*5d884fc0SJustin Hibbits #define PNC_EN 0x80000000 49*5d884fc0SJustin Hibbits #define PNC_STEN 0x80000000 50*5d884fc0SJustin Hibbits #define FMQM_PNS 0x404 51*5d884fc0SJustin Hibbits #define PNS_DEQ_FD_BSY 0x20000000 52*5d884fc0SJustin Hibbits #define FMQM_PNEN 0x41c 53*5d884fc0SJustin Hibbits #define FMQM_PNDN 0x42c 54*5d884fc0SJustin Hibbits #define FMQM_PNDC 0x430 55*5d884fc0SJustin Hibbits 56*5d884fc0SJustin Hibbits #define FMBM_CFG 0x000 57*5d884fc0SJustin Hibbits #define BMI_PORT_CFG_EN 0x80000000 58*5d884fc0SJustin Hibbits 59*5d884fc0SJustin Hibbits /* 60*5d884fc0SJustin Hibbits * Next Invoked Action (NIA) engine + action codes. Written into the 61*5d884fc0SJustin Hibbits * per-engine "next" registers to chain BMI -> Parser -> KeyGen -> 62*5d884fc0SJustin Hibbits * BMI-enqueue -> QMI-enqueue. 63*5d884fc0SJustin Hibbits */ 64*5d884fc0SJustin Hibbits #define NIA_ORDER_RESTORE 0x00800000 65*5d884fc0SJustin Hibbits #define NIA_ENG_BMI 0x00500000 66*5d884fc0SJustin Hibbits #define NIA_ENG_QMI_DEQ 0x00580000 67*5d884fc0SJustin Hibbits #define NIA_ENG_QMI_ENQ 0x00540000 68*5d884fc0SJustin Hibbits #define NIA_ENG_HWP 0x00440000 69*5d884fc0SJustin Hibbits #define NIA_ENG_HWK 0x00480000 70*5d884fc0SJustin Hibbits #define NIA_BMI_AC_TX_RELEASE 0x000002c0 71*5d884fc0SJustin Hibbits #define NIA_BMI_AC_TX 0x00000274 72*5d884fc0SJustin Hibbits #define NIA_BMI_AC_RELEASE 0x000000c0 73*5d884fc0SJustin Hibbits #define NIA_BMI_AC_ENQ_FRAME 0x00000002 74*5d884fc0SJustin Hibbits #define NIA_BMI_AC_FETCH_ALLFRAME 0x0000020c 75*5d884fc0SJustin Hibbits 76*5d884fc0SJustin Hibbits #define PORT_MAX_FRAME_LENGTH 9600 77*5d884fc0SJustin Hibbits 78*5d884fc0SJustin Hibbits int fman_port_attach_common(device_t dev, struct fman_port_softc *sc, 79*5d884fc0SJustin Hibbits int port_speed); 80*5d884fc0SJustin Hibbits int fman_port_detach_common(device_t dev, struct fman_port_softc *sc); 81*5d884fc0SJustin Hibbits 82*5d884fc0SJustin Hibbits void fman_port_config_common(struct fman_port_softc *sc, 83*5d884fc0SJustin Hibbits struct fman_port_params *params); 84*5d884fc0SJustin Hibbits 85*5d884fc0SJustin Hibbits #endif /* DPAA_FMAN_PORT_VAR_H */ 86