Commit 482acbd6 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'net-sfp-cleanup-i2c-dt-acpi-fwnode-includes'

Russell King says:

====================
net: sfp: cleanup i2c / dt / acpi / fwnode / includes

This series cleans up the DT/fwnode/ACPI code in the SFP cage driver:

1. Use the newly introduced i2c_get_adapter_by_fwnode(), which removes
the need to know about ACPI handles to find the I2C device.

2. Use device_get_match_data() to get the match data, rather than
having to look up the matching DT device_id to get at the data.

3. Rename gpio_of_names, as this is not DT specific.

4. Remove acpi.h include which is no longer necessary.

5. Remove ctype.h include which, as far as I can tell, was never
necessary.
====================

Link: https://lore.kernel.org/r/Y8fH+Vqx6huYQFDU@shell.armlinux.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 3ef4a8c8 f8f24a52
Loading
Loading
Loading
Loading
+9 −30
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
#include <linux/acpi.h>
#include <linux/ctype.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
@@ -144,7 +142,7 @@ static const char *sm_state_to_str(unsigned short sm_state)
	return sm_state_strings[sm_state];
}

static const char *gpio_of_names[] = {
static const char *gpio_names[] = {
	"mod-def0",
	"los",
	"tx-fault",
@@ -2563,7 +2561,7 @@ static void sfp_check_state(struct sfp *sfp)

	for (i = 0; i < GPIO_MAX; i++)
		if (changed & BIT(i))
			dev_dbg(sfp->dev, "%s %u -> %u\n", gpio_of_names[i],
			dev_dbg(sfp->dev, "%s %u -> %u\n", gpio_names[i],
				!!(sfp->state & BIT(i)), !!(state & BIT(i)));

	state |= sfp->state & (SFP_F_TX_DISABLE | SFP_F_RATE_SELECT);
@@ -2644,10 +2642,8 @@ static void sfp_cleanup(void *data)

static int sfp_i2c_get(struct sfp *sfp)
{
	struct acpi_handle *acpi_handle;
	struct fwnode_handle *h;
	struct i2c_adapter *i2c;
	struct device_node *np;
	int err;

	h = fwnode_find_reference(dev_fwnode(sfp->dev), "i2c-bus", 0);
@@ -2656,16 +2652,7 @@ static int sfp_i2c_get(struct sfp *sfp)
		return -ENODEV;
	}

	if (is_acpi_device_node(h)) {
		acpi_handle = ACPI_HANDLE_FWNODE(h);
		i2c = i2c_acpi_find_adapter_by_handle(acpi_handle);
	} else if ((np = to_of_node(h)) != NULL) {
		i2c = of_find_i2c_adapter_by_node(np);
	} else {
		err = -EINVAL;
		goto put;
	}

	i2c = i2c_get_adapter_by_fwnode(h);
	if (!i2c) {
		err = -EPROBE_DEFER;
		goto put;
@@ -2696,19 +2683,11 @@ static int sfp_probe(struct platform_device *pdev)
	if (err < 0)
		return err;

	sff = sfp->type = &sfp_data;

	if (pdev->dev.of_node) {
		const struct of_device_id *id;
	sff = device_get_match_data(sfp->dev);
	if (!sff)
		sff = &sfp_data;

		id = of_match_node(sfp_of_match, pdev->dev.of_node);
		if (WARN_ON(!id))
			return -EINVAL;

		sff = sfp->type = id->data;
	} else if (!has_acpi_companion(&pdev->dev)) {
		return -EINVAL;
	}
	sfp->type = sff;

	err = sfp_i2c_get(sfp);
	if (err)
@@ -2717,7 +2696,7 @@ static int sfp_probe(struct platform_device *pdev)
	for (i = 0; i < GPIO_MAX; i++)
		if (sff->gpios & BIT(i)) {
			sfp->gpio[i] = devm_gpiod_get_optional(sfp->dev,
					   gpio_of_names[i], gpio_flags[i]);
					   gpio_names[i], gpio_flags[i]);
			if (IS_ERR(sfp->gpio[i]))
				return PTR_ERR(sfp->gpio[i]);
		}
@@ -2772,7 +2751,7 @@ static int sfp_probe(struct platform_device *pdev)

		sfp_irq_name = devm_kasprintf(sfp->dev, GFP_KERNEL,
					      "%s-%s", dev_name(sfp->dev),
					      gpio_of_names[i]);
					      gpio_names[i]);

		if (!sfp_irq_name)
			return -ENOMEM;