Merge tag 'drm-fixes-2024-06-22' of https://gitlab.freedesktop.org/drm/kernel
[linux-2.6-block.git] / include / linux / phylib_stubs.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Stubs for the Network PHY library
4  */
5
6 #include <linux/rtnetlink.h>
7
8 struct kernel_hwtstamp_config;
9 struct netlink_ext_ack;
10 struct phy_device;
11
12 #if IS_ENABLED(CONFIG_PHYLIB)
13
14 extern const struct phylib_stubs *phylib_stubs;
15
16 struct phylib_stubs {
17         int (*hwtstamp_get)(struct phy_device *phydev,
18                             struct kernel_hwtstamp_config *config);
19         int (*hwtstamp_set)(struct phy_device *phydev,
20                             struct kernel_hwtstamp_config *config,
21                             struct netlink_ext_ack *extack);
22 };
23
24 static inline int phy_hwtstamp_get(struct phy_device *phydev,
25                                    struct kernel_hwtstamp_config *config)
26 {
27         /* phylib_register_stubs() and phylib_unregister_stubs()
28          * also run under rtnl_lock().
29          */
30         ASSERT_RTNL();
31
32         if (!phylib_stubs)
33                 return -EOPNOTSUPP;
34
35         return phylib_stubs->hwtstamp_get(phydev, config);
36 }
37
38 static inline int phy_hwtstamp_set(struct phy_device *phydev,
39                                    struct kernel_hwtstamp_config *config,
40                                    struct netlink_ext_ack *extack)
41 {
42         /* phylib_register_stubs() and phylib_unregister_stubs()
43          * also run under rtnl_lock().
44          */
45         ASSERT_RTNL();
46
47         if (!phylib_stubs)
48                 return -EOPNOTSUPP;
49
50         return phylib_stubs->hwtstamp_set(phydev, config, extack);
51 }
52
53 #else
54
55 static inline int phy_hwtstamp_get(struct phy_device *phydev,
56                                    struct kernel_hwtstamp_config *config)
57 {
58         return -EOPNOTSUPP;
59 }
60
61 static inline int phy_hwtstamp_set(struct phy_device *phydev,
62                                    struct kernel_hwtstamp_config *config,
63                                    struct netlink_ext_ack *extack)
64 {
65         return -EOPNOTSUPP;
66 }
67
68 #endif