linux/include/linux/pcs/pcs-xpcs.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Copyright (c) 2020 Synopsys, Inc. and/or its affiliates.
   4 * Synopsys DesignWare XPCS helpers
   5 */
   6
   7#ifndef __LINUX_PCS_XPCS_H
   8#define __LINUX_PCS_XPCS_H
   9
  10#include <linux/phy.h>
  11#include <linux/phylink.h>
  12
  13#define NXP_SJA1105_XPCS_ID             0x00000010
  14#define NXP_SJA1110_XPCS_ID             0x00000020
  15
  16/* AN mode */
  17#define DW_AN_C73                       1
  18#define DW_AN_C37_SGMII                 2
  19#define DW_2500BASEX                    3
  20
  21struct xpcs_id;
  22
  23struct dw_xpcs {
  24        struct mdio_device *mdiodev;
  25        const struct xpcs_id *id;
  26        struct phylink_pcs pcs;
  27};
  28
  29int xpcs_get_an_mode(struct dw_xpcs *xpcs, phy_interface_t interface);
  30void xpcs_link_up(struct phylink_pcs *pcs, unsigned int mode,
  31                  phy_interface_t interface, int speed, int duplex);
  32int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface,
  33                   unsigned int mode);
  34void xpcs_validate(struct dw_xpcs *xpcs, unsigned long *supported,
  35                   struct phylink_link_state *state);
  36int xpcs_config_eee(struct dw_xpcs *xpcs, int mult_fact_100ns,
  37                    int enable);
  38struct dw_xpcs *xpcs_create(struct mdio_device *mdiodev,
  39                            phy_interface_t interface);
  40void xpcs_destroy(struct dw_xpcs *xpcs);
  41
  42#endif /* __LINUX_PCS_XPCS_H */
  43