66 lines
1.5 KiB
C
66 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0
|
|
* Marvell OcteonTx2 CGX driver
|
|
*
|
|
* Copyright (C) 2018 Marvell International Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef CGX_H
|
|
#define CGX_H
|
|
|
|
#include "cgx_fw_if.h"
|
|
|
|
/* PCI device IDs */
|
|
#define PCI_DEVID_OCTEONTX2_CGX 0xA059
|
|
|
|
/* PCI BAR nos */
|
|
#define PCI_CFG_REG_BAR_NUM 0
|
|
|
|
#define MAX_CGX 3
|
|
#define MAX_LMAC_PER_CGX 4
|
|
#define CGX_OFFSET(x) ((x) * MAX_LMAC_PER_CGX)
|
|
|
|
/* Registers */
|
|
#define CGXX_CMRX_INT 0x040
|
|
#define FW_CGX_INT BIT_ULL(1)
|
|
#define CGXX_CMRX_INT_ENA_W1S 0x058
|
|
#define CGXX_CMRX_RX_ID_MAP 0x060
|
|
#define CGXX_CMRX_RX_LMACS 0x128
|
|
#define CGXX_SCRATCH0_REG 0x1050
|
|
#define CGXX_SCRATCH1_REG 0x1058
|
|
#define CGX_CONST 0x2000
|
|
|
|
#define CGX_COMMAND_REG CGXX_SCRATCH1_REG
|
|
#define CGX_EVENT_REG CGXX_SCRATCH0_REG
|
|
#define CGX_CMD_TIMEOUT 2200 /* msecs */
|
|
|
|
#define CGX_NVEC 37
|
|
#define CGX_LMAC_FWI 0
|
|
|
|
struct cgx_link_event {
|
|
struct cgx_lnk_sts lstat;
|
|
u8 cgx_id;
|
|
u8 lmac_id;
|
|
};
|
|
|
|
/**
|
|
* struct cgx_event_cb
|
|
* @notify_link_chg: callback for link change notification
|
|
* @data: data passed to callback function
|
|
*/
|
|
struct cgx_event_cb {
|
|
int (*notify_link_chg)(struct cgx_link_event *event, void *data);
|
|
void *data;
|
|
};
|
|
|
|
extern struct pci_driver cgx_driver;
|
|
|
|
int cgx_get_cgx_cnt(void);
|
|
int cgx_get_lmac_cnt(void *cgxd);
|
|
void *cgx_get_pdata(int cgx_id);
|
|
int cgx_lmac_evh_register(struct cgx_event_cb *cb, void *cgxd, int lmac_id);
|
|
#endif /* CGX_H */
|