linux/drivers/net/ethernet/qualcomm/emac/emac-sgmii.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
   3 */
   4
   5#ifndef _EMAC_SGMII_H_
   6#define _EMAC_SGMII_H_
   7
   8struct emac_adapter;
   9struct platform_device;
  10
  11/** emac_sgmii - internal emac phy
  12 * @init initialization function
  13 * @open called when the driver is opened
  14 * @close called when the driver is closed
  15 * @link_change called when the link state changes
  16 */
  17struct sgmii_ops {
  18        int (*init)(struct emac_adapter *adpt);
  19        int (*open)(struct emac_adapter *adpt);
  20        void (*close)(struct emac_adapter *adpt);
  21        int (*link_change)(struct emac_adapter *adpt, bool link_state);
  22        void (*reset)(struct emac_adapter *adpt);
  23};
  24
  25/** emac_sgmii - internal emac phy
  26 * @base base address
  27 * @digital per-lane digital block
  28 * @irq the interrupt number
  29 * @decode_error_count reference count of consecutive decode errors
  30 * @sgmii_ops sgmii ops
  31 */
  32struct emac_sgmii {
  33        void __iomem            *base;
  34        void __iomem            *digital;
  35        unsigned int            irq;
  36        atomic_t                decode_error_count;
  37        struct  sgmii_ops       *sgmii_ops;
  38};
  39
  40int emac_sgmii_config(struct platform_device *pdev, struct emac_adapter *adpt);
  41
  42int emac_sgmii_init_fsm9900(struct emac_adapter *adpt);
  43int emac_sgmii_init_qdf2432(struct emac_adapter *adpt);
  44int emac_sgmii_init_qdf2400(struct emac_adapter *adpt);
  45
  46int emac_sgmii_init(struct emac_adapter *adpt);
  47int emac_sgmii_open(struct emac_adapter *adpt);
  48void emac_sgmii_close(struct emac_adapter *adpt);
  49int emac_sgmii_link_change(struct emac_adapter *adpt, bool link_state);
  50void emac_sgmii_reset(struct emac_adapter *adpt);
  51#endif
  52