add generic GPIO to MIPS boards, use it for au1000 and for the MTX-1 led driver as well
SVN-Revision: 7334
This commit is contained in:
parent
46f7d89f9c
commit
3368856944
4 changed files with 366 additions and 63 deletions
|
@ -2,10 +2,13 @@ CONFIG_32BIT=y
|
|||
# CONFIG_64BIT is not set
|
||||
CONFIG_64BIT_PHYS_ADDR=y
|
||||
# CONFIG_8139TOO is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_B44 is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
CONFIG_CHR_DEV_SG=m
|
||||
CONFIG_CMDLINE="root=/dev/mtdblock0 rootfstype=jffs2 init=/etc/preinit"
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
|
@ -45,12 +48,15 @@ CONFIG_DMA_NONCOHERENT=y
|
|||
CONFIG_DUMMY=m
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HW_HAS_PCI=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HZ=250
|
||||
|
@ -64,44 +70,17 @@ CONFIG_I2C=m
|
|||
CONFIG_I2C_ALGOBIT=m
|
||||
CONFIG_I2C_ALGOPCA=m
|
||||
CONFIG_I2C_ALGOPCF=m
|
||||
# CONFIG_I2C_ALI1535 is not set
|
||||
# CONFIG_I2C_ALI1563 is not set
|
||||
# CONFIG_I2C_ALI15X3 is not set
|
||||
# CONFIG_I2C_AMD756 is not set
|
||||
# CONFIG_I2C_AMD8111 is not set
|
||||
CONFIG_I2C_AU1X00GPIO=m
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_OCORES is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
# CONFIG_I2C_SAVAGE4 is not set
|
||||
# CONFIG_I2C_SIS5595 is not set
|
||||
# CONFIG_I2C_SIS630 is not set
|
||||
# CONFIG_I2C_SIS96X is not set
|
||||
# CONFIG_I2C_STUB is not set
|
||||
# CONFIG_I2C_VIA is not set
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_IDE is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_LAN_SAA9730 is not set
|
||||
CONFIG_LEDS_MTX1=y
|
||||
# CONFIG_LEDS_TRIGGERS is not set
|
||||
# CONFIG_MACH_DECSTATION is not set
|
||||
# CONFIG_MACH_JAZZ is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MINI_FO=y
|
||||
CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_ATLAS is not set
|
||||
CONFIG_MIPS_AU1X00_ENET=y
|
||||
|
@ -138,6 +117,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
|
|||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
# CONFIG_MTD_ALCHEMY is not set
|
||||
CONFIG_MTD_BLKDEVS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
CONFIG_MTD_CFI=y
|
||||
|
@ -182,33 +162,38 @@ CONFIG_MTD_PARTITIONS=y
|
|||
CONFIG_MTX1_WATCHDOG=y
|
||||
# CONFIG_NATSEMI is not set
|
||||
# CONFIG_NE2K_PCI is not set
|
||||
CONFIG_NET_SCH_FIFO=y
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_MARK=y
|
||||
CONFIG_NF_CT_ACCT=y
|
||||
# CONFIG_NF_NAT_AMANDA is not set
|
||||
CONFIG_NF_NAT_FTP=m
|
||||
CONFIG_NF_NAT_H323=m
|
||||
CONFIG_NF_NAT_IRC=m
|
||||
CONFIG_NF_NAT_NEEDED=y
|
||||
# CONFIG_NF_NAT_PPTP is not set
|
||||
CONFIG_NF_NAT_SIP=m
|
||||
# CONFIG_NF_NAT_TFTP is not set
|
||||
# CONFIG_PAGE_SIZE_16KB is not set
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
# CONFIG_PCIPCWATCHDOG is not set
|
||||
CONFIG_PHYLIB=y
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
# CONFIG_PNPACPI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_STB810 is not set
|
||||
# CONFIG_PPP_MPPE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
CONFIG_RESOURCES_64BIT=y
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
CONFIG_SERIAL_8250_AU1X00=y
|
||||
# CONFIG_SERIAL_8250_EXTENDED is not set
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
|
@ -235,10 +220,12 @@ CONFIG_SOFT_WATCHDOG=m
|
|||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_STANDALONE is not set
|
||||
CONFIG_STRIP=m
|
||||
CONFIG_SYN_COOKIES=y
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
|
||||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_SYS_SUPPORTS_KGDB=y
|
||||
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
||||
# CONFIG_TMD_HERMES is not set
|
||||
# CONFIG_TOSHIBA_JMR3927 is not set
|
||||
|
@ -247,10 +234,15 @@ CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
|||
CONFIG_TRAD_SIGNALS=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_USBPCWATCHDOG is not set
|
||||
# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
||||
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
CONFIG_USB_UHCI_HCD=m
|
||||
# CONFIG_VIA_RHINE is not set
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
|
|
|
@ -14,41 +14,26 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/err.h>
|
||||
#include <asm/mach-au1x00/au1000.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
static struct platform_device *pdev;
|
||||
|
||||
static void mtx1_green_led_set(struct led_classdev *led_cdev, enum led_brightness brightness)
|
||||
static void mtx1_led_set(struct led_classdev *led_cdev, enum led_brightness brightness)
|
||||
{
|
||||
/* The power LED cannot be controlled the same way as for the Status LED */
|
||||
if (brightness) {
|
||||
au_writel( 0x18000800, GPIO2_OUTPUT );
|
||||
} else {
|
||||
au_writel( 0x18000000, GPIO2_OUTPUT);
|
||||
}
|
||||
}
|
||||
|
||||
static void mtx1_red_led_set(struct led_classdev *led_cdev, enum led_brightness brightness)
|
||||
{
|
||||
/* We store GPIO address (originally address - 200) in the "flags" field*/
|
||||
unsigned long pinmask = 1 << led_cdev->flags;
|
||||
if (brightness) {
|
||||
au_writel((pinmask << 16) | pinmask, GPIO2_OUTPUT);
|
||||
} else {
|
||||
au_writel((pinmask << 16) | 0, GPIO2_OUTPUT);
|
||||
}
|
||||
if (!strcmp("mtx1:green", led_cdev->name))
|
||||
gpio_set_value(211, brightness ? 1 : 0);
|
||||
else
|
||||
gpio_set_value(212, brightness ? 1 : 0);
|
||||
}
|
||||
|
||||
static struct led_classdev mtx1_green_led = {
|
||||
.name = "mtx1:green",
|
||||
.brightness_set = mtx1_green_led_set,
|
||||
.brightness_set = mtx1_led_set,
|
||||
};
|
||||
|
||||
static struct led_classdev mtx1_red_led = {
|
||||
.name = "mtx1:red",
|
||||
.flags = 12,
|
||||
.brightness_set = mtx1_red_led_set,
|
||||
.default_trigger = "ide-disk",
|
||||
.brightness_set = mtx1_led_set,
|
||||
};
|
||||
|
||||
static int mtx1_leds_probe(struct platform_device *pdev)
|
||||
|
|
294
target/linux/au1000-2.6/patches/001-au1x00_gpio.patch
Normal file
294
target/linux/au1000-2.6/patches/001-au1x00_gpio.patch
Normal file
|
@ -0,0 +1,294 @@
|
|||
diff -urN linux-2.6.21.1/arch/mips/au1000/common/gpio.c linux-2.6.21.1.new/arch/mips/au1000/common/gpio.c
|
||||
--- linux-2.6.21.1/arch/mips/au1000/common/gpio.c 2007-04-27 23:49:26.000000000 +0200
|
||||
+++ linux-2.6.21.1.new/arch/mips/au1000/common/gpio.c 2007-05-22 21:41:55.000000000 +0200
|
||||
@@ -1,4 +1,7 @@
|
||||
/*
|
||||
+ * Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
|
||||
+ * Architecture specific GPIO support
|
||||
+ *
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
@@ -18,101 +21,133 @@
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ *
|
||||
+ * Notes :
|
||||
+ * au1000 SoC have only one GPIO line : GPIO1
|
||||
+ * others have a second one : GPIO2
|
||||
*/
|
||||
+
|
||||
+#include <linux/autoconf.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
-#include <au1000.h>
|
||||
-#include <au1xxx_gpio.h>
|
||||
+
|
||||
+#include <asm/addrspace.h>
|
||||
+#include <asm/io.h>
|
||||
+
|
||||
+#include <asm/mach-au1x00/au1000.h>
|
||||
+#include <asm/gpio.h>
|
||||
|
||||
#define gpio1 sys
|
||||
#if !defined(CONFIG_SOC_AU1000)
|
||||
static AU1X00_GPIO2 * const gpio2 = (AU1X00_GPIO2 *)GPIO2_BASE;
|
||||
+#define GPIO2_OUTPUT_ENABLE_MASK 0x00010000
|
||||
|
||||
-#define GPIO2_OUTPUT_ENABLE_MASK 0x00010000
|
||||
-
|
||||
-int au1xxx_gpio2_read(int signal)
|
||||
+static int au1xxx_gpio2_read(unsigned gpio)
|
||||
{
|
||||
- signal -= 200;
|
||||
-/* gpio2->dir &= ~(0x01 << signal); //Set GPIO to input */
|
||||
- return ((gpio2->pinstate >> signal) & 0x01);
|
||||
+ gpio -= AU1XXX_GPIO_BASE;
|
||||
+ return ((gpio2->pinstate >> gpio) & 0x01);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio2_write(int signal, int value)
|
||||
+static void au1xxx_gpio2_write(unsigned gpio, int value)
|
||||
{
|
||||
- signal -= 200;
|
||||
+ gpio -= AU1XXX_GPIO_BASE;
|
||||
|
||||
- gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << signal) |
|
||||
- (value << signal);
|
||||
+ gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << gpio) |
|
||||
+ (value << gpio);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio2_tristate(int signal)
|
||||
+static int au1xxx_gpio2_direction_input(unsigned gpio)
|
||||
{
|
||||
- signal -= 200;
|
||||
- gpio2->dir &= ~(0x01 << signal); /* Set GPIO to input */
|
||||
+ gpio -= AU1XXX_GPIO_BASE;
|
||||
+ gpio2->dir &= ~(0x01 << gpio);
|
||||
+ return 0;
|
||||
}
|
||||
-#endif
|
||||
|
||||
-int au1xxx_gpio1_read(int signal)
|
||||
+static int au1xxx_gpio2_direction_output(unsigned gpio, int value)
|
||||
+{
|
||||
+ gpio -= AU1XXX_GPIO_BASE;
|
||||
+ gpio2->dir = (0x01 << gpio) | (value << gpio);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#endif /* !defined(CONFIG_SOC_AU1000) */
|
||||
+
|
||||
+static int au1xxx_gpio1_read(unsigned gpio)
|
||||
{
|
||||
-/* gpio1->trioutclr |= (0x01 << signal); */
|
||||
- return ((gpio1->pinstaterd >> signal) & 0x01);
|
||||
+ return ((gpio1->pinstaterd >> gpio) & 0x01);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio1_write(int signal, int value)
|
||||
+static void au1xxx_gpio1_write(unsigned gpio, int value)
|
||||
{
|
||||
if(value)
|
||||
- gpio1->outputset = (0x01 << signal);
|
||||
+ gpio1->outputset = (0x01 << gpio);
|
||||
else
|
||||
- gpio1->outputclr = (0x01 << signal); /* Output a Zero */
|
||||
+ /* Output a zero */
|
||||
+ gpio1->outputclr = (0x01 << gpio);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio1_tristate(int signal)
|
||||
+static int au1xxx_gpio1_direction_input(unsigned gpio)
|
||||
{
|
||||
- gpio1->trioutclr = (0x01 << signal); /* Tristate signal */
|
||||
+ gpio1->pininputen = (0x01 << gpio);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
+static int au1xxx_gpio1_direction_output(unsigned gpio, int value)
|
||||
+{
|
||||
+ gpio1->trioutclr = (0x01 & gpio);
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
-int au1xxx_gpio_read(int signal)
|
||||
+int au1xxx_gpio_get_value(unsigned gpio)
|
||||
{
|
||||
- if(signal >= 200)
|
||||
+ if(gpio >= AU1XXX_GPIO_BASE)
|
||||
#if defined(CONFIG_SOC_AU1000)
|
||||
return 0;
|
||||
#else
|
||||
- return au1xxx_gpio2_read(signal);
|
||||
+ return au1xxx_gpio2_read(gpio);
|
||||
#endif
|
||||
else
|
||||
- return au1xxx_gpio1_read(signal);
|
||||
+ return au1xxx_gpio1_read(gpio);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio_write(int signal, int value)
|
||||
+void au1xxx_gpio_set_value(unsigned gpio, int value)
|
||||
{
|
||||
- if(signal >= 200)
|
||||
+ if(gpio >= AU1XXX_GPIO_BASE)
|
||||
#if defined(CONFIG_SOC_AU1000)
|
||||
;
|
||||
#else
|
||||
- au1xxx_gpio2_write(signal, value);
|
||||
+ au1xxx_gpio2_write(gpio, value);
|
||||
#endif
|
||||
else
|
||||
- au1xxx_gpio1_write(signal, value);
|
||||
+ au1xxx_gpio1_write(gpio, value);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio_tristate(int signal)
|
||||
+int au1xxx_gpio_direction_input(unsigned gpio)
|
||||
{
|
||||
- if(signal >= 200)
|
||||
+ if (gpio >= AU1XXX_GPIO_BASE)
|
||||
#if defined(CONFIG_SOC_AU1000)
|
||||
;
|
||||
#else
|
||||
- au1xxx_gpio2_tristate(signal);
|
||||
+ return au1xxx_gpio2_direction_input(gpio);
|
||||
#endif
|
||||
else
|
||||
- au1xxx_gpio1_tristate(signal);
|
||||
+ return au1xxx_gpio1_direction_input(gpio);
|
||||
}
|
||||
|
||||
-void au1xxx_gpio1_set_inputs(void)
|
||||
+int au1xxx_gpio_direction_output(unsigned gpio, int value)
|
||||
{
|
||||
- gpio1->pininputen = 0;
|
||||
+ if (gpio >= AU1XXX_GPIO_BASE)
|
||||
+#if defined(CONFIG_SOC_AU1000)
|
||||
+ ;
|
||||
+#else
|
||||
+ return au1xxx_gpio2_direction_output(gpio, value);
|
||||
+#endif
|
||||
+ else
|
||||
+ return au1xxx_gpio1_direction_output(gpio, value);
|
||||
}
|
||||
|
||||
-EXPORT_SYMBOL(au1xxx_gpio1_set_inputs);
|
||||
-EXPORT_SYMBOL(au1xxx_gpio_tristate);
|
||||
-EXPORT_SYMBOL(au1xxx_gpio_write);
|
||||
-EXPORT_SYMBOL(au1xxx_gpio_read);
|
||||
+EXPORT_SYMBOL(au1xxx_gpio_direction_output);
|
||||
+EXPORT_SYMBOL(au1xxx_gpio_direction_input);
|
||||
+EXPORT_SYMBOL(au1xxx_gpio_get_value);
|
||||
+EXPORT_SYMBOL(au1xxx_gpio_set_value);
|
||||
--- linux-2.6.21.1/arch/mips/Kconfig 2007-04-27 23:49:26.000000000 +0200
|
||||
+++ linux-2.6.21.1.new/arch/mips/Kconfig 2007-05-21 08:04:42.000000000 +0200
|
||||
@@ -1044,6 +1044,7 @@
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_APM_EMULATION
|
||||
select SYS_SUPPORTS_KGDB
|
||||
+ select GENERIC_GPIO
|
||||
|
||||
config PNX8550
|
||||
bool
|
||||
diff -urN linux-2.6.21.1/include/asm-mips/mach-au1x00/au1xxx_gpio.h linux-2.6.21.1.new/include/asm-mips/mach-au1x00/au1xxx_gpio.h
|
||||
--- linux-2.6.21.1/include/asm-mips/mach-au1x00/au1xxx_gpio.h 2007-04-27 23:49:26.000000000 +0200
|
||||
+++ linux-2.6.21.1.new/include/asm-mips/mach-au1x00/au1xxx_gpio.h 1970-01-01 01:00:00.000000000 +0100
|
||||
@@ -1,20 +0,0 @@
|
||||
-#ifndef __AU1XXX_GPIO_H
|
||||
-#define __AU1XXX_GPIO_H
|
||||
-
|
||||
-void au1xxx_gpio1_set_inputs(void);
|
||||
-void au1xxx_gpio_tristate(int signal);
|
||||
-void au1xxx_gpio_write(int signal, int value);
|
||||
-int au1xxx_gpio_read(int signal);
|
||||
-
|
||||
-typedef volatile struct
|
||||
-{
|
||||
- u32 dir;
|
||||
- u32 reserved;
|
||||
- u32 output;
|
||||
- u32 pinstate;
|
||||
- u32 inten;
|
||||
- u32 enable;
|
||||
-
|
||||
-} AU1X00_GPIO2;
|
||||
-
|
||||
-#endif //__AU1XXX_GPIO_H
|
||||
diff -urN linux-2.6.21.1/include/asm-mips/mach-au1x00/gpio.h linux-2.6.21.1.new/include/asm-mips/mach-au1x00/gpio.h
|
||||
--- linux-2.6.21.1/include/asm-mips/mach-au1x00/gpio.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-2.6.21.1.new/include/asm-mips/mach-au1x00/gpio.h 2007-05-21 01:10:22.000000000 +0200
|
||||
@@ -0,0 +1,69 @@
|
||||
+#ifndef _AU1XXX_GPIO_H_
|
||||
+#define _AU1XXX_GPIO_H_
|
||||
+
|
||||
+#define AU1XXX_GPIO_BASE 200
|
||||
+
|
||||
+typedef volatile struct
|
||||
+{
|
||||
+ u32 dir;
|
||||
+ u32 reserved;
|
||||
+ u32 output;
|
||||
+ u32 pinstate;
|
||||
+ u32 inten;
|
||||
+ u32 enable;
|
||||
+
|
||||
+} AU1X00_GPIO2;
|
||||
+
|
||||
+extern int au1xxx_gpio_get_value(unsigned gpio);
|
||||
+extern void au1xxx_gpio_set_value(unsigned gpio, int value);
|
||||
+extern int au1xxx_gpio_direction_input(unsigned gpio);
|
||||
+extern int au1xxx_gpio_direction_output(unsigned gpio, int value);
|
||||
+
|
||||
+
|
||||
+/* Wrappers for the arch-neutral GPIO API */
|
||||
+
|
||||
+static inline int gpio_request(unsigned gpio, const char *label)
|
||||
+{
|
||||
+ /* Not yet implemented */
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static inline void gpio_free(unsigned gpio)
|
||||
+{
|
||||
+ /* Not yet implemented */
|
||||
+}
|
||||
+
|
||||
+static inline int gpio_direction_input(unsigned gpio)
|
||||
+{
|
||||
+ return au1xxx_gpio_direction_input(gpio);
|
||||
+}
|
||||
+
|
||||
+static inline int gpio_direction_output(unsigned gpio, int value)
|
||||
+{
|
||||
+ return au1xxx_gpio_direction_output(gpio, value);
|
||||
+}
|
||||
+
|
||||
+static inline int gpio_get_value(unsigned gpio)
|
||||
+{
|
||||
+ return au1xxx_gpio_get_value(gpio);
|
||||
+}
|
||||
+
|
||||
+static inline void gpio_set_value(unsigned gpio, int value)
|
||||
+{
|
||||
+ au1xxx_gpio_set_value(gpio, value);
|
||||
+}
|
||||
+
|
||||
+static inline int gpio_to_irq(unsigned gpio)
|
||||
+{
|
||||
+ return gpio;
|
||||
+}
|
||||
+
|
||||
+static inline int irq_to_gpio(unsigned irq)
|
||||
+{
|
||||
+ return irq;
|
||||
+}
|
||||
+
|
||||
+/* For cansleep */
|
||||
+#include <asm-generic/gpio.h>
|
||||
+
|
||||
+#endif /* _AU1XXX_GPIO_H_ */
|
|
@ -0,0 +1,32 @@
|
|||
--- linux-2.6.21.1/arch/mips/Kconfig 2007-04-27 23:49:26.000000000 +0200
|
||||
+++ linux-2.6.21.1-owrt/arch/mips/Kconfig 2007-05-24 13:51:13.000000000 +0200
|
||||
@@ -869,6 +869,10 @@
|
||||
bool
|
||||
default y
|
||||
|
||||
+config GENERIC_GPIO
|
||||
+ bool
|
||||
+ default n
|
||||
+
|
||||
config SCHED_NO_NO_OMIT_FRAME_POINTER
|
||||
bool
|
||||
default y
|
||||
--- linux-2.6.21.1/include/asm-mips/gpio.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-2.6.21.1-owrt/include/asm-mips/gpio.h 2007-05-24 13:51:13.000000000 +0200
|
||||
@@ -0,0 +1,6 @@
|
||||
+#ifndef _ASM_MIPS_GPIO_H
|
||||
+#define _ASM_MIPS_GPIO_H
|
||||
+
|
||||
+#include <gpio.h>
|
||||
+
|
||||
+#endif /* _ASM_MIPS_GPIO_H */
|
||||
--- linux-2.6.21.1/arch/mips/defconfig 2007-04-27 23:49:26.000000000 +0200
|
||||
+++ linux-2.6.21.1-owrt/arch/mips/defconfig 2007-05-24 14:37:52.000000000 +0200
|
||||
@@ -71,6 +71,7 @@
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
+CONFIG_GENERIC_GPIO=n
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
|
||||
CONFIG_ARC=y
|
Loading…
Reference in a new issue