[lantiq]
[openwrt/svn-archive/archive.git] / target / linux / lantiq / patches / 104-board_xway.patch
index 1aaeab63e1f732e3eba28772b5813d55f5372720..e70ff8007401ab0387ffb57e376e71f76a304ee1 100644 (file)
@@ -23,7 +23,7 @@
 +endif
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/gpio_ebu.c
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,116 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +}
 +
 +static void
-+lq_ebu_set(struct gpio_chip *chip, unsigned offset, int value)
++lq_ebu_apply(void)
 +{
 +      unsigned long flags;
-+      if(value)
-+              shadow |= (1 << offset);
-+      else
-+              shadow &= ~(1 << offset);
 +      spin_lock_irqsave(&ebu_lock, flags);
 +      lq_w32(LQ_EBU_BUSCON, LQ_EBU_BUSCON1);
 +      *((__u16*)virt) = shadow;
 +      spin_unlock_irqrestore(&ebu_lock, flags);
 +}
 +
++static void
++lq_ebu_set(struct gpio_chip *chip, unsigned offset, int value)
++{
++      if(value)
++              shadow |= (1 << offset);
++      else
++              shadow &= ~(1 << offset);
++      lq_ebu_apply();
++}
++
 +static struct gpio_chip
 +lq_ebu_chip =
 +{
 +
 +      ret = gpiochip_add(&lq_ebu_chip);
 +      if (!ret)
++      {
++              lq_ebu_apply();
 +              return 0;
++      }
 +
 +err_release_mem_region:
 +      release_mem_region(res->start, resource_size(res));
 +      return platform_driver_register(&lq_ebu_driver);
 +}
 +
-+arch_initcall(init_lq_ebu);
++postcore_initcall(init_lq_ebu);
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/gpio_leds.c
 @@ -0,0 +1,161 @@
 +      return ret;
 +}
 +
-+arch_initcall(init_lq_stp);
++postcore_initcall(init_lq_stp);
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/mach-easy4010.c
-@@ -0,0 +1,79 @@
+@@ -0,0 +1,82 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +
 +static struct lq_pci_data lq_pci_data = {
 +      .clock      = PCI_CLOCK_INT,
-+      .req_mask   = 0xf,
++      .gpio   = PCI_GNT1 | PCI_REQ1,
++      .irq    = {
++              [14] = INT_NUM_IM0_IRL0 + 22,
++      },
 +};
 +
 +static struct lq_eth_data lq_eth_data = {
 +                      easy4010_init);
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/mach-easy50712.c
-@@ -0,0 +1,79 @@
+@@ -0,0 +1,82 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +
 +static struct lq_pci_data lq_pci_data = {
 +      .clock      = PCI_CLOCK_INT,
-+      .req_mask   = 0xf,
++      .gpio   = PCI_GNT1 | PCI_REQ1,
++      .irq    = {
++              [14] = INT_NUM_IM0_IRL0 + 22,
++      },
 +};
 +
 +static struct lq_eth_data lq_eth_data = {
 +                      easy50712_init);
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/mach-easy50812.c
-@@ -0,0 +1,78 @@
+@@ -0,0 +1,81 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +
 +static struct lq_pci_data lq_pci_data = {
 +      .clock      = PCI_CLOCK_INT,
-+      .req_mask   = 0xf,
++      .gpio   = PCI_GNT1 | PCI_REQ1,
++      .irq    = {
++              [14] = INT_NUM_IM0_IRL0 + 22,
++      },
 +};
 +
 +static struct lq_eth_data lq_eth_data = {
 +}
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/devices.h
-@@ -0,0 +1,24 @@
+@@ -0,0 +1,25 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +#define _LQ_DEVICES_H__
 +
 +#include <lantiq_platform.h>
++#include <xway_irq.h>
 +
 +extern void __init lq_register_gpio(void);
 +extern void __init lq_register_gpio_stp(void);
 +
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/gpio.c
-@@ -0,0 +1,203 @@
+@@ -0,0 +1,206 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +              printk("failed to register %s gpio\n", name);
 +              return -EBUSY;
 +      }
-+      gpio_direction_output(pin, dir);
++      if(dir)
++              gpio_direction_output(pin, 1);
++      else
++              gpio_direction_input(pin);
 +      if(pin >= PINS_PER_PORT)
 +      {
 +              pin -= PINS_PER_PORT;
 +      return ret;
 +}
 +
-+arch_initcall(lq_gpio_init);
++postcore_initcall(lq_gpio_init);
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/reset.c
 @@ -0,0 +1,53 @@