* [PATCH 1/2] bcma: add gpio_to_irq again
@ 2012-12-12 1:17 Hauke Mehrtens
2012-12-12 1:17 ` [PATCH 2/2] ssb: " Hauke Mehrtens
0 siblings, 1 reply; 3+ messages in thread
From: Hauke Mehrtens @ 2012-12-12 1:17 UTC (permalink / raw)
To: john, ralf; +Cc: linux-mips, linux-wireless, Hauke Mehrtens
The old code had support for gpio_to_irq, but the new code did not
provide this function, but returned -ENXIO all the time. This patch
adds the missing function.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
drivers/bcma/driver_gpio.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/bcma/driver_gpio.c b/drivers/bcma/driver_gpio.c
index 9a6f585..212fda6 100644
--- a/drivers/bcma/driver_gpio.c
+++ b/drivers/bcma/driver_gpio.c
@@ -73,6 +73,16 @@ static void bcma_gpio_free(struct gpio_chip *chip, unsigned gpio)
bcma_chipco_gpio_pullup(cc, 1 << gpio, 0);
}
+static int bcma_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
+{
+ struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip);
+
+ if (cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC)
+ return bcma_core_mips_irq(cc->core) + 2;
+ else
+ return -EINVAL;
+}
+
int bcma_gpio_init(struct bcma_drv_cc *cc)
{
struct gpio_chip *chip = &cc->gpio;
@@ -85,6 +95,7 @@ int bcma_gpio_init(struct bcma_drv_cc *cc)
chip->set = bcma_gpio_set_value;
chip->direction_input = bcma_gpio_direction_input;
chip->direction_output = bcma_gpio_direction_output;
+ chip->to_irq = bcma_gpio_to_irq;
chip->ngpio = 16;
/* There is just one SoC in one device and its GPIO addresses should be
* deterministic to address them more easily. The other buses could get
--
1.7.10.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] ssb: add gpio_to_irq again
2012-12-12 1:17 [PATCH 1/2] bcma: add gpio_to_irq again Hauke Mehrtens
@ 2012-12-12 1:17 ` Hauke Mehrtens
2013-02-15 20:20 ` Hauke Mehrtens
0 siblings, 1 reply; 3+ messages in thread
From: Hauke Mehrtens @ 2012-12-12 1:17 UTC (permalink / raw)
To: john, ralf; +Cc: linux-mips, linux-wireless, Hauke Mehrtens
The old code had support for gpio_to_irq, but the new code did not
provide this function, but returned -ENXIO all the time. This patch
adds the missing function.
arch/mips/bcm47xx/wgt634u.c calls gpio_to_irq() and got the correct irq
number with the old gpio handling code. With this patch the code in
wgt634u.c should work again. I do not have a wgt634u to test this.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
drivers/ssb/driver_gpio.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/drivers/ssb/driver_gpio.c b/drivers/ssb/driver_gpio.c
index 97ac0a3..accabe3 100644
--- a/drivers/ssb/driver_gpio.c
+++ b/drivers/ssb/driver_gpio.c
@@ -74,6 +74,16 @@ static void ssb_gpio_chipco_free(struct gpio_chip *chip, unsigned gpio)
ssb_chipco_gpio_pullup(&bus->chipco, 1 << gpio, 0);
}
+static int ssb_gpio_chipco_to_irq(struct gpio_chip *chip, unsigned gpio)
+{
+ struct ssb_bus *bus = ssb_gpio_get_bus(chip);
+
+ if (bus->bustype == SSB_BUSTYPE_SSB)
+ return ssb_mips_irq(bus->chipco.dev) + 2;
+ else
+ return -EINVAL;
+}
+
static int ssb_gpio_chipco_init(struct ssb_bus *bus)
{
struct gpio_chip *chip = &bus->gpio;
@@ -86,6 +96,7 @@ static int ssb_gpio_chipco_init(struct ssb_bus *bus)
chip->set = ssb_gpio_chipco_set_value;
chip->direction_input = ssb_gpio_chipco_direction_input;
chip->direction_output = ssb_gpio_chipco_direction_output;
+ chip->to_irq = ssb_gpio_chipco_to_irq;
chip->ngpio = 16;
/* There is just one SoC in one device and its GPIO addresses should be
* deterministic to address them more easily. The other buses could get
@@ -134,6 +145,16 @@ static int ssb_gpio_extif_direction_output(struct gpio_chip *chip,
return 0;
}
+static int ssb_gpio_extif_to_irq(struct gpio_chip *chip, unsigned gpio)
+{
+ struct ssb_bus *bus = ssb_gpio_get_bus(chip);
+
+ if (bus->bustype == SSB_BUSTYPE_SSB)
+ return ssb_mips_irq(bus->extif.dev) + 2;
+ else
+ return -EINVAL;
+}
+
static int ssb_gpio_extif_init(struct ssb_bus *bus)
{
struct gpio_chip *chip = &bus->gpio;
@@ -144,6 +165,7 @@ static int ssb_gpio_extif_init(struct ssb_bus *bus)
chip->set = ssb_gpio_extif_set_value;
chip->direction_input = ssb_gpio_extif_direction_input;
chip->direction_output = ssb_gpio_extif_direction_output;
+ chip->to_irq = ssb_gpio_extif_to_irq;
chip->ngpio = 5;
/* There is just one SoC in one device and its GPIO addresses should be
* deterministic to address them more easily. The other buses could get
--
1.7.10.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 2/2] ssb: add gpio_to_irq again
2012-12-12 1:17 ` [PATCH 2/2] ssb: " Hauke Mehrtens
@ 2013-02-15 20:20 ` Hauke Mehrtens
0 siblings, 0 replies; 3+ messages in thread
From: Hauke Mehrtens @ 2013-02-15 20:20 UTC (permalink / raw)
To: Hauke Mehrtens; +Cc: john, ralf, linux-mips, linux-wireless
On 12/12/2012 02:17 AM, Hauke Mehrtens wrote:
> The old code had support for gpio_to_irq, but the new code did not
> provide this function, but returned -ENXIO all the time. This patch
> adds the missing function.
>
> arch/mips/bcm47xx/wgt634u.c calls gpio_to_irq() and got the correct irq
> number with the old gpio handling code. With this patch the code in
> wgt634u.c should work again. I do not have a wgt634u to test this.
>
> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Please drop these two patches
They will cause merge problems. After I talked to blogic and after that
I send these patches to John Linville for inclusion into the wireless tree.
Hauke
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-02-15 20:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-12-12 1:17 [PATCH 1/2] bcma: add gpio_to_irq again Hauke Mehrtens
2012-12-12 1:17 ` [PATCH 2/2] ssb: " Hauke Mehrtens
2013-02-15 20:20 ` Hauke Mehrtens
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.