1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#ifndef __IBM_NEWEMAC_RGMII_H
27#define __IBM_NEWEMAC_RGMII_H
28
29
30#define RGMII_STANDARD 0
31#define RGMII_AXON 1
32
33
34struct rgmii_regs {
35 u32 fer;
36 u32 ssr;
37};
38
39
40struct rgmii_instance {
41 struct rgmii_regs __iomem *base;
42
43
44 int flags;
45#define EMAC_RGMII_FLAG_HAS_MDIO 0x00000001
46
47
48 struct mutex lock;
49
50
51 int users;
52
53
54 struct platform_device *ofdev;
55};
56
57#ifdef CONFIG_IBM_EMAC_RGMII
58
59int rgmii_init(void);
60void rgmii_exit(void);
61int rgmii_attach(struct platform_device *ofdev, int input, int mode);
62void rgmii_detach(struct platform_device *ofdev, int input);
63void rgmii_get_mdio(struct platform_device *ofdev, int input);
64void rgmii_put_mdio(struct platform_device *ofdev, int input);
65void rgmii_set_speed(struct platform_device *ofdev, int input, int speed);
66int rgmii_get_regs_len(struct platform_device *ofdev);
67void *rgmii_dump_regs(struct platform_device *ofdev, void *buf);
68
69#else
70
71# define rgmii_init() 0
72# define rgmii_exit() do { } while(0)
73# define rgmii_attach(x,y,z) (-ENXIO)
74# define rgmii_detach(x,y) do { } while(0)
75# define rgmii_get_mdio(o,i) do { } while (0)
76# define rgmii_put_mdio(o,i) do { } while (0)
77# define rgmii_set_speed(x,y,z) do { } while(0)
78# define rgmii_get_regs_len(x) 0
79# define rgmii_dump_regs(x,buf) (buf)
80#endif
81
82#endif
83