Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e89e59c0 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'net-sfp-small-improvements'



Antoine Tenart says:

====================
net: sfp: small improvements

A small series of patches improving the SFP support by adding a warning
when no Tx disable pin is available, and making the i2c-bus property
mandatory.

Thanks!
Antoine

Since v1:
  - Removed the patch fixing the sfp driver when no i2c bus was described.
  - Made two new patches to make the i2c-bus property mandatory for sfp modules.

Since the phylink series:
  - s/-EOPNOTSUPP/-ENODEV/ in patch 1/2.
  - I added the acked-by tag in patch 2/2.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 47de868b 3e484393
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -7,11 +7,11 @@ Required properties:
  "sff,sfp" for SFP modules
  "sff,sff" for soldered down SFF modules

Optional Properties:

- i2c-bus : phandle of an I2C bus controller for the SFP two wire serial
  interface

Optional Properties:

- mod-def0-gpios : GPIO phandle and a specifier of the MOD-DEF0 (AKA Mod_ABS)
  module presence input gpio signal, active (module absent) high. Must
  not be present for SFF modules
+24 −13
Original line number Diff line number Diff line
@@ -976,6 +976,7 @@ static int sfp_probe(struct platform_device *pdev)
	if (pdev->dev.of_node) {
		struct device_node *node = pdev->dev.of_node;
		const struct of_device_id *id;
		struct i2c_adapter *i2c;
		struct device_node *np;

		id = of_match_node(sfp_of_match, node);
@@ -985,8 +986,10 @@ static int sfp_probe(struct platform_device *pdev)
		sff = sfp->type = id->data;

		np = of_parse_phandle(node, "i2c-bus", 0);
		if (np) {
			struct i2c_adapter *i2c;
		if (!np) {
			dev_err(sfp->dev, "missing 'i2c-bus' property\n");
			return -ENODEV;
		}

		i2c = of_find_i2c_adapter_by_node(np);
		of_node_put(np);
@@ -999,7 +1002,6 @@ static int sfp_probe(struct platform_device *pdev)
			return err;
		}
	}
	}

	for (i = 0; i < GPIO_MAX; i++)
		if (sff->gpios & BIT(i)) {
@@ -1065,6 +1067,15 @@ static int sfp_probe(struct platform_device *pdev)
	if (poll)
		mod_delayed_work(system_wq, &sfp->poll, poll_jiffies);

	/* We could have an issue in cases no Tx disable pin is available or
	 * wired as modules using a laser as their light source will continue to
	 * be active when the fiber is removed. This could be a safety issue and
	 * we should at least warn the user about that.
	 */
	if (!sfp->gpio[GPIO_TX_DISABLE])
		dev_warn(sfp->dev,
			 "No tx_disable pin: SFP modules will always be emitting.\n");

	return 0;
}