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

Commit a2116993 authored by Christian Lamparter's avatar Christian Lamparter Committed by John W. Linville
Browse files

p54spi: remove arch specific dependencies

On Friday 16 January 2009 20:33:43 Kalle Valo wrote:
> N800 and N810 support is not on mainline yet, for stlc45xx I decided
> to add module parameters for the gpio numbers. Here's the commit from
> stlc45xx repo:
>
> http://gitorious.org/projects/stlc45xx/repos/mainline/commits/35afc5df0027d02d49e6f5bf986dcc4deb4ee6cf



This is the same patch for p54spi.
It removes all N800/N810 specific code from p54spi, so the driver can be used on
other architectures, or configurations as well.

Signed-off-by: default avatarChristian Lamparter <chunkeey@web.de>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent c88a768d
Loading
Loading
Loading
Loading
+28 −17
Original line number Diff line number Diff line
@@ -39,6 +39,20 @@
MODULE_FIRMWARE("3826.arm");
MODULE_ALIAS("stlc45xx");

/*
 * gpios should be handled in board files and provided via platform data,
 * but because it's currently impossible for p54spi to have a header file
 * in include/linux, let's use module paramaters for now
 */

static int p54spi_gpio_power = 97;
module_param(p54spi_gpio_power, int, 0444);
MODULE_PARM_DESC(p54spi_gpio_power, "gpio number for power line");

static int p54spi_gpio_irq = 87;
module_param(p54spi_gpio_irq, int, 0444);
MODULE_PARM_DESC(p54spi_gpio_irq, "gpio number for irq line");

static void p54spi_spi_read(struct p54s_priv *priv, u8 address,
			      void *buf, size_t len)
{
@@ -283,14 +297,14 @@ static int p54spi_upload_firmware(struct ieee80211_hw *dev)

static void p54spi_power_off(struct p54s_priv *priv)
{
	disable_irq(gpio_to_irq(priv->config->irq_gpio));
	gpio_set_value(priv->config->power_gpio, 0);
	disable_irq(gpio_to_irq(p54spi_gpio_irq));
	gpio_set_value(p54spi_gpio_power, 0);
}

static void p54spi_power_on(struct p54s_priv *priv)
{
	gpio_set_value(priv->config->power_gpio, 1);
	enable_irq(gpio_to_irq(priv->config->irq_gpio));
	gpio_set_value(p54spi_gpio_power, 1);
	enable_irq(gpio_to_irq(p54spi_gpio_irq));

	/*
	 * need to wait a while before device can be accessed, the lenght
@@ -626,9 +640,6 @@ static int __devinit p54spi_probe(struct spi_device *spi)
	dev_set_drvdata(&spi->dev, priv);
	priv->spi = spi;

	priv->config = omap_get_config(OMAP_TAG_WLAN_CX3110X,
				       struct omap_wlan_cx3110x_config);

	spi->bits_per_word = 16;
	spi->max_speed_hz = 24000000;

@@ -638,22 +649,22 @@ static int __devinit p54spi_probe(struct spi_device *spi)
		goto err_free_common;
	}

	ret = gpio_request(priv->config->power_gpio, "p54spi power");
	ret = gpio_request(p54spi_gpio_power, "p54spi power");
	if (ret < 0) {
		dev_err(&priv->spi->dev, "power GPIO request failed: %d", ret);
		goto err_free_common;
	}

	ret = gpio_request(priv->config->irq_gpio, "p54spi irq");
	ret = gpio_request(p54spi_gpio_irq, "p54spi irq");
	if (ret < 0) {
		dev_err(&priv->spi->dev, "irq GPIO request failed: %d", ret);
		goto err_free_common;
	}

	gpio_direction_output(priv->config->power_gpio, 0);
	gpio_direction_input(priv->config->irq_gpio);
	gpio_direction_output(p54spi_gpio_power, 0);
	gpio_direction_input(p54spi_gpio_irq);

	ret = request_irq(OMAP_GPIO_IRQ(priv->config->irq_gpio),
	ret = request_irq(gpio_to_irq(p54spi_gpio_irq),
			  p54spi_interrupt, IRQF_DISABLED, "p54spi",
			  priv->spi);
	if (ret < 0) {
@@ -661,10 +672,10 @@ static int __devinit p54spi_probe(struct spi_device *spi)
		goto err_free_common;
	}

	set_irq_type(gpio_to_irq(priv->config->irq_gpio),
	set_irq_type(gpio_to_irq(p54spi_gpio_irq),
		     IRQ_TYPE_EDGE_RISING);

	disable_irq(gpio_to_irq(priv->config->irq_gpio));
	disable_irq(gpio_to_irq(p54spi_gpio_irq));

	INIT_WORK(&priv->work, p54spi_work);
	init_completion(&priv->fw_comp);
@@ -705,10 +716,10 @@ static int __devexit p54spi_remove(struct spi_device *spi)

	ieee80211_unregister_hw(priv->hw);

	free_irq(gpio_to_irq(priv->config->irq_gpio), spi);
	free_irq(gpio_to_irq(p54spi_gpio_irq), spi);

	gpio_free(priv->config->power_gpio);
	gpio_free(priv->config->irq_gpio);
	gpio_free(p54spi_gpio_power);
	gpio_free(p54spi_gpio_irq);
	release_firmware(priv->firmware);

	mutex_destroy(&priv->mutex);
+0 −2
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@
#include <linux/mutex.h>
#include <linux/list.h>
#include <net/mac80211.h>
#include <mach/board.h>

#include "p54.h"

@@ -108,7 +107,6 @@ struct p54s_priv {
	struct p54_common common;
	struct ieee80211_hw *hw;
	struct spi_device *spi;
	const struct omap_wlan_cx3110x_config *config;

	struct work_struct work;