OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [net/] [ucc_geth_mii.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * drivers/net/ucc_geth_mii.h
3
 *
4
 * QE UCC Gigabit Ethernet Driver -- MII Management Bus Implementation
5
 * Provides Bus interface for MII Management regs in the UCC register space
6
 *
7
 * Copyright (C) 2007 Freescale Semiconductor, Inc.
8
 *
9
 * Authors: Li Yang <leoli@freescale.com>
10
 *          Kim Phillips <kim.phillips@freescale.com>
11
 *
12
 * This program is free software; you can redistribute  it and/or modify it
13
 * under  the terms of  the GNU General  Public License as published by the
14
 * Free Software Foundation;  either version 2 of the  License, or (at your
15
 * option) any later version.
16
 *
17
 */
18
#ifndef __UEC_MII_H
19
#define __UEC_MII_H
20
 
21
/* UCC GETH MIIMCFG (MII Management Configuration Register) */
22
#define MIIMCFG_RESET_MANAGEMENT                0x80000000      /* Reset
23
                                                                   management */
24
#define MIIMCFG_NO_PREAMBLE                     0x00000010      /* Preamble
25
                                                                   suppress */
26
#define MIIMCFG_CLOCK_DIVIDE_SHIFT              (31 - 31)       /* clock divide
27
                                                                   << shift */
28
#define MIIMCFG_CLOCK_DIVIDE_MAX                0xf     /* max clock divide */
29
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_2    0x00000000
30
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_4    0x00000001
31
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_6    0x00000002
32
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_8    0x00000003
33
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_10   0x00000004
34
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_14   0x00000005
35
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_16   0x00000008
36
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_20   0x00000006
37
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_28   0x00000007
38
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_32   0x00000009
39
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_48   0x0000000a
40
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_64   0x0000000b
41
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_80   0x0000000c
42
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_112  0x0000000d
43
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_160  0x0000000e
44
#define MIIMCFG_MANAGEMENT_CLOCK_DIVIDE_BY_224  0x0000000f
45
 
46
/* UCC GETH MIIMCOM (MII Management Command Register) */
47
#define MIIMCOM_SCAN_CYCLE                      0x00000002      /* Scan cycle */
48
#define MIIMCOM_READ_CYCLE                      0x00000001      /* Read cycle */
49
 
50
/* UCC GETH MIIMADD (MII Management Address Register) */
51
#define MIIMADD_PHY_ADDRESS_SHIFT               (31 - 23)       /* PHY Address
52
                                                                   << shift */
53
#define MIIMADD_PHY_REGISTER_SHIFT              (31 - 31)       /* PHY Register
54
                                                                   << shift */
55
 
56
/* UCC GETH MIIMCON (MII Management Control Register) */
57
#define MIIMCON_PHY_CONTROL_SHIFT               (31 - 31)       /* PHY Control
58
                                                                   << shift */
59
#define MIIMCON_PHY_STATUS_SHIFT                (31 - 31)       /* PHY Status
60
                                                                   << shift */
61
 
62
/* UCC GETH MIIMIND (MII Management Indicator Register) */
63
#define MIIMIND_NOT_VALID                       0x00000004      /* Not valid */
64
#define MIIMIND_SCAN                            0x00000002      /* Scan in
65
                                                                   progress */
66
#define MIIMIND_BUSY                            0x00000001
67
 
68
/* Initial TBI Physical Address */
69
#define UTBIPAR_INIT_TBIPA                      0x1f
70
 
71
struct ucc_mii_mng {
72
        u32 miimcfg;            /* MII management configuration reg */
73
        u32 miimcom;            /* MII management command reg */
74
        u32 miimadd;            /* MII management address reg */
75
        u32 miimcon;            /* MII management control reg */
76
        u32 miimstat;           /* MII management status reg */
77
        u32 miimind;            /* MII management indication reg */
78
        u8 notcare[28];         /* Space holder */
79
        u32 utbipar;            /* TBI phy address reg */
80
} __attribute__ ((packed));
81
 
82
/* TBI / MII Set Register */
83
enum enet_tbi_mii_reg {
84
        ENET_TBI_MII_CR = 0x00, /* Control */
85
        ENET_TBI_MII_SR = 0x01, /* Status */
86
        ENET_TBI_MII_ANA = 0x04,        /* AN advertisement */
87
        ENET_TBI_MII_ANLPBPA = 0x05,    /* AN link partner base page ability */
88
        ENET_TBI_MII_ANEX = 0x06,       /* AN expansion */
89
        ENET_TBI_MII_ANNPT = 0x07,      /* AN next page transmit */
90
        ENET_TBI_MII_ANLPANP = 0x08,    /* AN link partner ability next page */
91
        ENET_TBI_MII_EXST = 0x0F,       /* Extended status */
92
        ENET_TBI_MII_JD = 0x10, /* Jitter diagnostics */
93
        ENET_TBI_MII_TBICON = 0x11      /* TBI control */
94
};
95
 
96
int uec_mdio_read(struct mii_bus *bus, int mii_id, int regnum);
97
int uec_mdio_write(struct mii_bus *bus, int mii_id, int regnum, u16 value);
98
int __init uec_mdio_init(void);
99
void uec_mdio_exit(void);
100
#endif                          /* __UEC_MII_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.