some fixes to the etrax build
SVN-Revision: 8211
This commit is contained in:
parent
0d70676b9a
commit
5ed12e1ebb
3 changed files with 221 additions and 197 deletions
|
@ -2,6 +2,8 @@ CONFIG_BASE_SMALL=0
|
|||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CRIS=y
|
||||
CONFIG_CRYPTO_ARC4=y
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
# CONFIG_ETRAX100LX is not set
|
||||
CONFIG_ETRAX100LX_V2=y
|
||||
# CONFIG_ETRAXFS is not set
|
||||
|
@ -135,12 +137,34 @@ CONFIG_ETRAX_USB_HOST=y
|
|||
CONFIG_ETRAX_USB_HOST_PORT1=y
|
||||
CONFIG_ETRAX_USB_HOST_PORT2=y
|
||||
# CONFIG_ETRAX_WATCHDOG is not set
|
||||
CONFIG_FAT_FS=y
|
||||
# CONFIG_FOX_MMC is not set
|
||||
# CONFIG_FOX_NOK6610 is not set
|
||||
# CONFIG_FOX_NOKIA is not set
|
||||
# CONFIG_FOX_QUANTUM is not set
|
||||
# CONFIG_FOX_RALINK is not set
|
||||
CONFIG_FOX_RALINK_2=y
|
||||
# CONFIG_FOX_RALINK_DBG is not set
|
||||
# CONFIG_FOX_RC5 is not set
|
||||
# CONFIG_FOX_ROTARY is not set
|
||||
# CONFIG_FOX_VHDL is not set
|
||||
# CONFIG_FOX_VS1011B is not set
|
||||
# CONFIG_FOX_ZD1211 is not set
|
||||
# CONFIG_FOX_ZD1211_B is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_IOMAP=y
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_HOSTAP is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_IDE is not set
|
||||
CONFIG_IEEE80211=y
|
||||
# CONFIG_IEEE80211_CRYPT_CCMP is not set
|
||||
# CONFIG_IEEE80211_CRYPT_TKIP is not set
|
||||
CONFIG_IEEE80211_CRYPT_WEP=y
|
||||
CONFIG_IEEE80211_DEBUG=y
|
||||
CONFIG_IEEE80211_SOFTMAC=y
|
||||
CONFIG_IEEE80211_SOFTMAC_DEBUG=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_IRQ_PER_CPU=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
|
@ -194,6 +218,8 @@ CONFIG_MTD_PARTITIONS=y
|
|||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_NET_WIRELESS_RTNETLINK is not set
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
# CONFIG_OOM_REBOOT is not set
|
||||
|
@ -217,5 +243,7 @@ CONFIG_USB=y
|
|||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB_SERIAL_IR is not set
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_ZD1201=y
|
||||
CONFIG_VFAT_FS=y
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_ZD1211RW is not set
|
||||
|
|
|
@ -0,0 +1,191 @@
|
|||
#include <linux/autoconf.h>
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <linux/gpio_syscalls.h>
|
||||
|
||||
#include <asm/etraxgpio.h>
|
||||
#include <asm/arch/svinto.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/arch/io_interface_mux.h>
|
||||
|
||||
#include <asm/unistd.h>
|
||||
|
||||
|
||||
extern int errno;
|
||||
|
||||
|
||||
asmlinkage void sys_gpiosetbits(unsigned char port, unsigned int bits){
|
||||
switch(port){
|
||||
case 'G':
|
||||
case 'g':
|
||||
*R_PORT_G_DATA = port_g_data_shadow |= bits;
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
case 'a':
|
||||
*R_PORT_PA_DATA = port_pa_data_shadow |= bits;
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case 'b':
|
||||
*R_PORT_PB_DATA = port_pb_data_shadow |= bits;
|
||||
break;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
asmlinkage void sys_gpioclearbits(unsigned char port, unsigned int bits){
|
||||
switch(port){
|
||||
case 'G':
|
||||
case 'g':
|
||||
*R_PORT_G_DATA = port_g_data_shadow &= ~bits;
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
case 'a':
|
||||
*R_PORT_PA_DATA = port_pa_data_shadow &= ~bits;
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case 'b':
|
||||
*R_PORT_PB_DATA = port_pb_data_shadow &= ~bits;
|
||||
break;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
asmlinkage void sys_gpiosetdir(unsigned char port, unsigned char dir, unsigned int bits){
|
||||
if((dir=='I' )||(dir=='i')){
|
||||
switch(port){
|
||||
case 'G':
|
||||
case 'g':
|
||||
if(bits & (1<<0)){
|
||||
genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g0dir);
|
||||
};
|
||||
if((bits & 0x0000FF00)==0x0000FF00){
|
||||
genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g8_15dir);
|
||||
};
|
||||
if((bits & 0x00FF0000)==0x00FF0000){
|
||||
genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g16_23dir);
|
||||
};
|
||||
if(bits & (1<<24)){
|
||||
genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g24dir);
|
||||
};
|
||||
*R_GEN_CONFIG = genconfig_shadow;
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
case 'a':
|
||||
*R_PORT_PA_DIR = port_pa_dir_shadow &= ~(bits & 0xff);
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case 'b':
|
||||
*R_PORT_PB_DIR = port_pb_dir_shadow &= ~(bits & 0xff);
|
||||
break;
|
||||
};
|
||||
} else if((dir=='O' )||(dir=='o')){
|
||||
switch(port){
|
||||
case 'G':
|
||||
case 'g':
|
||||
if(bits & (1<<0)){
|
||||
genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g0dir);
|
||||
};
|
||||
if((bits & 0x0000FF00)==0x0000FF00){
|
||||
genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g8_15dir);
|
||||
};
|
||||
if((bits & 0x00FF0000)==0x00FF0000){
|
||||
genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g8_15dir);
|
||||
};
|
||||
if(bits & (1<<24)){
|
||||
genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g24dir);
|
||||
};
|
||||
*R_GEN_CONFIG = genconfig_shadow;
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
case 'a':
|
||||
*R_PORT_PA_DIR = port_pa_dir_shadow |= (bits & 0xff);
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case 'b':
|
||||
*R_PORT_PB_DIR = port_pb_dir_shadow |= (bits & 0xff);
|
||||
break;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
asmlinkage void sys_gpiotogglebit(unsigned char port, unsigned int bits){
|
||||
switch(port){
|
||||
case 'G':
|
||||
case 'g':
|
||||
if(port_g_data_shadow & bits){
|
||||
*R_PORT_G_DATA = port_g_data_shadow &= ~bits;
|
||||
} else {
|
||||
*R_PORT_G_DATA = port_g_data_shadow |= bits;
|
||||
};
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
case 'a':
|
||||
if(*R_PORT_PA_DATA & bits){
|
||||
*R_PORT_PA_DATA = port_pa_data_shadow &= ~(bits & 0xff);
|
||||
} else {
|
||||
*R_PORT_PA_DATA = port_pa_data_shadow |= (bits & 0xff);
|
||||
};
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case 'b':
|
||||
if(*R_PORT_PB_DATA & bits){
|
||||
*R_PORT_PB_DATA = port_pb_data_shadow &= ~(bits & 0xff);
|
||||
} else {
|
||||
*R_PORT_PB_DATA = port_pb_data_shadow |= (bits & 0xff);
|
||||
};
|
||||
break;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
asmlinkage unsigned int sys_gpiogetbits(unsigned char port, unsigned int bits){
|
||||
unsigned int data = 0;
|
||||
switch(port){
|
||||
case 'G':
|
||||
case 'g':
|
||||
data = *R_PORT_G_DATA;
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
case 'a':
|
||||
data = *R_PORT_PA_DATA;
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case 'b':
|
||||
data = *R_PORT_PB_DATA;
|
||||
break;
|
||||
|
||||
};
|
||||
data &= bits;
|
||||
return data;
|
||||
};
|
||||
|
||||
|
|
@ -159,203 +159,8 @@ diff -urN linux-2.6.19.2.orig/include/asm-cris/unistd.h linux-2.6.19.2/include/a
|
|||
|
||||
/*
|
||||
* NOTE!! This doesn't have to be exact - we just have
|
||||
diff -urN linux-2.6.19.2.orig/arch/cris/arch-v10/drivers/gpio_syscalls.c linux-2.6.19.2/arch/cris/arch-v10/drivers/gpio_syscalls.c
|
||||
--- linux-2.6.19.2.orig/arch/cris/arch-v10/drivers/gpio_syscalls.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-2.6.19.2/arch/cris/arch-v10/drivers/gpio_syscalls.c 2007-06-17 04:09:15.000000000 +0200
|
||||
@@ -0,0 +1,192 @@
|
||||
+
|
||||
+#include <linux/autoconf.h>
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/sched.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/ioport.h>
|
||||
+#include <linux/errno.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/fs.h>
|
||||
+#include <linux/string.h>
|
||||
+#include <linux/poll.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/interrupt.h>
|
||||
+
|
||||
+#include <asm/uaccess.h>
|
||||
+#include <linux/gpio_syscalls.h>
|
||||
+
|
||||
+#include <asm/etraxgpio.h>
|
||||
+#include <asm/arch/svinto.h>
|
||||
+#include <asm/io.h>
|
||||
+#include <asm/system.h>
|
||||
+#include <asm/irq.h>
|
||||
+#include <asm/arch/io_interface_mux.h>
|
||||
+
|
||||
+#include <asm/unistd.h>
|
||||
+
|
||||
+
|
||||
+extern int errno;
|
||||
+
|
||||
+
|
||||
+asmlinkage void sys_gpiosetbits(unsigned char port, unsigned int bits){
|
||||
+ switch(port){
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ *R_PORT_G_DATA = port_g_data_shadow |= bits;
|
||||
+ break;
|
||||
+
|
||||
+ case 'A':
|
||||
+ case 'a':
|
||||
+ *R_PORT_PA_DATA = port_pa_data_shadow |= bits;
|
||||
+ break;
|
||||
+
|
||||
+ case 'B':
|
||||
+ case 'b':
|
||||
+ *R_PORT_PB_DATA = port_pb_data_shadow |= bits;
|
||||
+ break;
|
||||
+
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+
|
||||
+asmlinkage void sys_gpioclearbits(unsigned char port, unsigned int bits){
|
||||
+ switch(port){
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ *R_PORT_G_DATA = port_g_data_shadow &= ~bits;
|
||||
+ break;
|
||||
+
|
||||
+ case 'A':
|
||||
+ case 'a':
|
||||
+ *R_PORT_PA_DATA = port_pa_data_shadow &= ~bits;
|
||||
+ break;
|
||||
+
|
||||
+ case 'B':
|
||||
+ case 'b':
|
||||
+ *R_PORT_PB_DATA = port_pb_data_shadow &= ~bits;
|
||||
+ break;
|
||||
+
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+asmlinkage void sys_gpiosetdir(unsigned char port, unsigned char dir, unsigned int bits){
|
||||
+ if((dir=='I' )||(dir=='i')){
|
||||
+ switch(port){
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ if(bits & (1<<0)){
|
||||
+ genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g0dir);
|
||||
+ };
|
||||
+ if((bits & 0x0000FF00)==0x0000FF00){
|
||||
+ genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g8_15dir);
|
||||
+ };
|
||||
+ if((bits & 0x00FF0000)==0x00FF0000){
|
||||
+ genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g16_23dir);
|
||||
+ };
|
||||
+ if(bits & (1<<24)){
|
||||
+ genconfig_shadow &= ~IO_MASK(R_GEN_CONFIG, g24dir);
|
||||
+ };
|
||||
+ *R_GEN_CONFIG = genconfig_shadow;
|
||||
+ break;
|
||||
+
|
||||
+ case 'A':
|
||||
+ case 'a':
|
||||
+ *R_PORT_PA_DIR = port_pa_dir_shadow &= ~(bits & 0xff);
|
||||
+ break;
|
||||
+
|
||||
+ case 'B':
|
||||
+ case 'b':
|
||||
+ *R_PORT_PB_DIR = port_pb_dir_shadow &= ~(bits & 0xff);
|
||||
+ break;
|
||||
+ };
|
||||
+ } else if((dir=='O' )||(dir=='o')){
|
||||
+ switch(port){
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ if(bits & (1<<0)){
|
||||
+ genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g0dir);
|
||||
+ };
|
||||
+ if((bits & 0x0000FF00)==0x0000FF00){
|
||||
+ genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g8_15dir);
|
||||
+ };
|
||||
+ if((bits & 0x00FF0000)==0x00FF0000){
|
||||
+ genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g8_15dir);
|
||||
+ };
|
||||
+ if(bits & (1<<24)){
|
||||
+ genconfig_shadow |= IO_MASK(R_GEN_CONFIG, g24dir);
|
||||
+ };
|
||||
+ *R_GEN_CONFIG = genconfig_shadow;
|
||||
+ break;
|
||||
+
|
||||
+ case 'A':
|
||||
+ case 'a':
|
||||
+ *R_PORT_PA_DIR = port_pa_dir_shadow |= (bits & 0xff);
|
||||
+ break;
|
||||
+
|
||||
+ case 'B':
|
||||
+ case 'b':
|
||||
+ *R_PORT_PB_DIR = port_pb_dir_shadow |= (bits & 0xff);
|
||||
+ break;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+
|
||||
+asmlinkage void sys_gpiotogglebit(unsigned char port, unsigned int bits){
|
||||
+ switch(port){
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ if(port_g_data_shadow & bits){
|
||||
+ *R_PORT_G_DATA = port_g_data_shadow &= ~bits;
|
||||
+ } else {
|
||||
+ *R_PORT_G_DATA = port_g_data_shadow |= bits;
|
||||
+ };
|
||||
+ break;
|
||||
+
|
||||
+ case 'A':
|
||||
+ case 'a':
|
||||
+ if(*R_PORT_PA_DATA & bits){
|
||||
+ *R_PORT_PA_DATA = port_pa_data_shadow &= ~(bits & 0xff);
|
||||
+ } else {
|
||||
+ *R_PORT_PA_DATA = port_pa_data_shadow |= (bits & 0xff);
|
||||
+ };
|
||||
+ break;
|
||||
+
|
||||
+ case 'B':
|
||||
+ case 'b':
|
||||
+ if(*R_PORT_PB_DATA & bits){
|
||||
+ *R_PORT_PB_DATA = port_pb_data_shadow &= ~(bits & 0xff);
|
||||
+ } else {
|
||||
+ *R_PORT_PB_DATA = port_pb_data_shadow |= (bits & 0xff);
|
||||
+ };
|
||||
+ break;
|
||||
+
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+
|
||||
+asmlinkage unsigned int sys_gpiogetbits(unsigned char port, unsigned int bits){
|
||||
+ unsigned int data = 0;
|
||||
+ switch(port){
|
||||
+ case 'G':
|
||||
+ case 'g':
|
||||
+ data = *R_PORT_G_DATA;
|
||||
+ break;
|
||||
+
|
||||
+ case 'A':
|
||||
+ case 'a':
|
||||
+ data = *R_PORT_PA_DATA;
|
||||
+ break;
|
||||
+
|
||||
+ case 'B':
|
||||
+ case 'b':
|
||||
+ data = *R_PORT_PB_DATA;
|
||||
+ break;
|
||||
+
|
||||
+ };
|
||||
+ data &= bits;
|
||||
+ return data;
|
||||
+};
|
||||
+
|
||||
+
|
||||
Only in linux-2.6.19.2/arch/cris/arch-v10/drivers/: gpio_syscalls.c
|
||||
diff linux-2.6.19.2.orig/arch/cris/arch-v10/drivers/Makefile linux-2.6.19.2/arch/cris/arch-v10/drivers/Makefile
|
||||
--- linux-2.6.19.2.orig/arch/cris/arch-v10/drivers/Makefile 2007-06-16 23:58:14.000000000 +0200
|
||||
+++ linux-2.6.19.2/arch/cris/arch-v10/drivers/Makefile 2007-06-17 03:48:21.000000000 +0200
|
||||
8a9
|
||||
> obj-$(CONFIG_ETRAX_GPIO) += gpio_syscalls.o
|
||||
|
|
Loading…
Reference in a new issue