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

Commit 3fa27571 authored by Alexander Aring's avatar Alexander Aring Committed by David S. Miller
Browse files

at86rf230: make reset pin optionally



This patch make the reset pin optionally. Some devices like the atben
from qi-hardware don't have a reset pin externally. The usually way is
to turn power off/on for the atben device to initiate a device reset.

Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 56f023fb
Loading
Loading
Loading
Loading
+21 −13
Original line number Diff line number Diff line
@@ -1059,9 +1059,11 @@ static int at86rf230_probe(struct spi_device *spi)
		return -EINVAL;
	}

	if (gpio_is_valid(pdata->rstn)) {
		rc = gpio_request(pdata->rstn, "rstn");
		if (rc)
			return rc;
	}

	if (gpio_is_valid(pdata->slp_tr)) {
		rc = gpio_request(pdata->slp_tr, "slp_tr");
@@ -1069,9 +1071,11 @@ static int at86rf230_probe(struct spi_device *spi)
			goto err_slp_tr;
	}

	if (gpio_is_valid(pdata->rstn)) {
		rc = gpio_direction_output(pdata->rstn, 1);
		if (rc)
			goto err_gpio_dir;
	}

	if (gpio_is_valid(pdata->slp_tr)) {
		rc = gpio_direction_output(pdata->slp_tr, 0);
@@ -1080,11 +1084,13 @@ static int at86rf230_probe(struct spi_device *spi)
	}

	/* Reset */
	if (gpio_is_valid(pdata->rstn)) {
		udelay(1);
		gpio_set_value(pdata->rstn, 0);
		udelay(1);
		gpio_set_value(pdata->rstn, 1);
		usleep_range(120, 240);
	}

	rc = __at86rf230_detect_device(spi, &man_id, &part, &version);
	if (rc < 0)
@@ -1198,6 +1204,7 @@ static int at86rf230_probe(struct spi_device *spi)
	if (gpio_is_valid(pdata->slp_tr))
		gpio_free(pdata->slp_tr);
err_slp_tr:
	if (gpio_is_valid(pdata->rstn))
		gpio_free(pdata->rstn);
	return rc;
}
@@ -1214,6 +1221,7 @@ static int at86rf230_remove(struct spi_device *spi)

	if (gpio_is_valid(pdata->slp_tr))
		gpio_free(pdata->slp_tr);
	if (gpio_is_valid(pdata->rstn))
		gpio_free(pdata->rstn);

	mutex_destroy(&lp->bmux);