Some pragmatic shortcuts are being taken by PHY consumer driver authors,
which put a burden on the framework. A lot of these can be caught during
review.

Make sure the linux-phy list is copied on as many keywords that regexes
can reasonably catch.

Some considerations that led to this solution and not a simpler one:
- Consumers may be located anywhere, and their file naming provides no
  indication whatsoever that they are PHY API consumers.
- The network PHY API has similarly sounding API: phy_start(),
  phy_connect(), etc. Similarly, matching on "phy" would hit
  phys_addr_t, "cryptography", etc.
- The header files themselves need attention to avoid matching on
  include/linux/phy.h (network PHY), include/linux/usb/phy.h,
  drivers/net/vendor/device/phy.h, etc.
- At least for a transitional period, I suppose developers will still
  try to add PHY providers outside the subsystem (which is discouraged).

So I used \b to try to match on actual word boundaries and I went for
listing all markers of PHY API use as they may appear in patch contexts.

Bit rot is a valid concern. I will add a test to the build automation
that newly introduced struct and function names in include/linux/phy.h,
include/linux/phy-props.h and drivers/phy/phy-provider.h are matched by
the MAINTAINERS entry K: patterns.

The keyword patterns were written with great help from Joe Perches
<[email protected]>.

Signed-off-by: Vladimir Oltean <[email protected]>
---
Cc: Joe Perches <[email protected]>

v3->v4: none
v2->v3:
- escape forward slash in linux/phy/phy.h in regex pattern:
  
https://lore.kernel.org/linux-phy/[email protected]/
v1->v2:
- split into multiple regex patterns
- use matching-only (insted of capturing) regex patterns
- adjust commit message to reflect the Q&A from v1
---
 MAINTAINERS | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 55af015174a5..cd920f14abde 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10713,6 +10713,17 @@ F:     Documentation/devicetree/bindings/phy/
 F:     drivers/phy/
 F:     include/dt-bindings/phy/
 F:     include/linux/phy/
+K:     (?:linux\/phy\/phy\.h|phy-props\.h|phy-provider\.h)
+K:     
\b(?:__)?(?:devm_)?(?:of_)?phy_(?:create|destroy|provider_(?:un)?register)\b
+K:     \bphy_(?:create|remove)_lookup\b
+K:     \bphy_(?:get|set)_drvdata\b
+K:     \b(?:devm_)?(?:of_)?phy_(?:optional_)?(?:get|put)(?:_by_index)?\b
+K:     \bphy_pm_runtime_(?:get|put)(?:_sync)?\b
+K:     \bphy_(?:init|exit|power_(?:on|off))\b
+K:     
\bphy_(?:get|set)_(?:mode(?:_ext)?|media|speed|bus_width|max_link_rate)\b
+K:     \bphy_(?:reset|configure|validate|calibrate)\b
+K:     \bphy_notify_(?:connect|disconnect|state)\b
+K:     \bstruct\s+phy(?:_ops|_attrs|_lookup|_provider)?\b
 
 GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER
 M:     Wolfram Sang <[email protected]>
-- 
2.43.0

Reply via email to