Changeset 7962


Ignore:
Timestamp:
2007-07-13T11:56:05+02:00 (11 years ago)
Author:
kaloz
Message:

sync avr32 to 2.6.22.atmel.2

Location:
trunk/target/linux/avr32-2.6
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/avr32-2.6/config/default

    r7945 r7962  
    66CONFIG_AVR32=y 
    77CONFIG_BOARD_ATNGW100=y 
     8# CONFIG_BOARD_ATNGW100_I2C_GPIO is not set 
    89# CONFIG_BOARD_ATSTK1000 is not set 
    910# CONFIG_BROADCOM_PHY is not set 
  • trunk/target/linux/avr32-2.6/patches/100-git_sync.patch

    r7945 r7962  
     1diff -x .git -Nur linux-2.6.22.1/arch/avr32/boards/atngw100/Kconfig linux-avr32.git/arch/avr32/boards/atngw100/Kconfig 
     2--- linux-2.6.22.1/arch/avr32/boards/atngw100/Kconfig   1970-01-01 01:00:00.000000000 +0100 
     3+++ linux-avr32.git/arch/avr32/boards/atngw100/Kconfig  2007-07-13 11:24:16.000000000 +0200 
     4@@ -0,0 +1,12 @@ 
     5+# NGW100 customization 
     6+ 
     7+config BOARD_ATNGW100_I2C_GPIO 
     8+       bool "Use GPIO for i2c instead of built-in TWI module" 
     9+       help 
     10+         The driver for the built-in TWI module has been plagued by 
     11+         various problems, while the i2c-gpio driver is based on the 
     12+         trusty old i2c-algo-bit bitbanging engine, making it work 
     13+         on pretty much any setup. 
     14+ 
     15+         Choose 'Y' here if you're having i2c-related problems and 
     16+         want to rule out the i2c bus driver. 
    117diff -x .git -Nur linux-2.6.22.1/arch/avr32/boards/atngw100/setup.c linux-avr32.git/arch/avr32/boards/atngw100/setup.c 
    218--- linux-2.6.22.1/arch/avr32/boards/atngw100/setup.c   2007-07-10 20:56:30.000000000 +0200 
    3 +++ linux-avr32.git/arch/avr32/boards/atngw100/setup.c  2007-07-12 13:59:49.000000000 +0200 
    4 @@ -13,6 +13,7 @@ 
     19+++ linux-avr32.git/arch/avr32/boards/atngw100/setup.c  2007-07-13 11:24:16.000000000 +0200 
     20@@ -9,10 +9,12 @@ 
     21  */ 
     22 #include <linux/clk.h> 
     23 #include <linux/etherdevice.h> 
     24+#include <linux/i2c-gpio.h> 
     25 #include <linux/init.h> 
    526 #include <linux/linkage.h> 
    627 #include <linux/platform_device.h> 
     
    1031  
    1132 #include <asm/io.h> 
    12 @@ -21,6 +22,7 @@ 
     33@@ -21,6 +23,7 @@ 
    1334 #include <asm/arch/at32ap7000.h> 
    1435 #include <asm/arch/board.h> 
     
    1839 /* Initialized by bootloader-specific startup code. */ 
    1940 struct tag *bootloader_tags __initdata; 
    20 @@ -39,6 +41,11 @@ 
     41@@ -39,6 +42,11 @@ 
    2142        }, 
    2243 }; 
     
    3051  * The next two functions should go away as the boot loader is 
    3152  * supposed to initialize the macb address registers with a valid 
    32 @@ -100,8 +107,31 @@ 
     53@@ -100,8 +108,46 @@ 
    3354        at32_setup_serial_console(0); 
    3455 } 
     
    5576+}; 
    5677+ 
     78+#ifdef CONFIG_BOARD_ATNGW100_I2C_GPIO 
     79+static struct i2c_gpio_platform_data i2c_gpio_data = { 
     80+       .sda_pin        = GPIO_PIN_PA(6), 
     81+       .scl_pin        = GPIO_PIN_PA(7), 
     82+}; 
     83+ 
     84+static struct platform_device i2c_gpio_device = { 
     85+       .name           = "i2c-gpio", 
     86+       .id             = 0, 
     87+       .dev            = { 
     88+               .platform_data  = &i2c_gpio_data, 
     89+       }, 
     90+}; 
     91+#endif 
     92+ 
    5793 static int __init atngw100_init(void) 
    5894 { 
     
    6298         * ATNGW100 uses 16-bit SDRAM interface, so we don't need to 
    6399         * reserve any pins for it. 
    64 @@ -115,6 +145,14 @@ 
     100@@ -115,6 +161,22 @@ 
    65101        set_hw_addr(at32_add_device_eth(1, &eth_data[1])); 
    66102  
     
    74110+       } 
    75111+       platform_device_register(&ngw_gpio_leds); 
     112+ 
     113+#ifdef CONFIG_BOARD_ATNGW100_I2C_GPIO 
     114+       at32_select_gpio(i2c_gpio_data.sda_pin, 0); 
     115+       at32_select_gpio(i2c_gpio_data.scl_pin, 0); 
     116+       platform_device_register(&i2c_gpio_device); 
     117+#else 
     118+       at32_add_device_twi(0); 
     119+#endif 
    76120  
    77121        return 0; 
     
    329373diff -x .git -Nur linux-2.6.22.1/arch/avr32/configs/atngw100_defconfig linux-avr32.git/arch/avr32/configs/atngw100_defconfig 
    330374--- linux-2.6.22.1/arch/avr32/configs/atngw100_defconfig        2007-07-10 20:56:30.000000000 +0200 
    331 +++ linux-avr32.git/arch/avr32/configs/atngw100_defconfig       2007-07-12 13:59:49.000000000 +0200 
    332 @@ -712,7 +712,21 @@ 
     375+++ linux-avr32.git/arch/avr32/configs/atngw100_defconfig       2007-07-13 11:24:16.000000000 +0200 
     376@@ -1,7 +1,7 @@ 
     377 # 
     378 # Automatically generated make config: don't edit 
     379-# Linux kernel version: 2.6.22-rc5 
     380-# Sat Jun 23 15:40:05 2007 
     381+# Linux kernel version: 2.6.22.atmel.1 
     382+# Thu Jul 12 17:49:20 2007 
     383 # 
     384 CONFIG_AVR32=y 
     385 CONFIG_GENERIC_GPIO=y 
     386@@ -114,6 +114,7 @@ 
     387 CONFIG_CPU_AT32AP7000=y 
     388 # CONFIG_BOARD_ATSTK1000 is not set 
     389 CONFIG_BOARD_ATNGW100=y 
     390+# CONFIG_BOARD_ATNGW100_I2C_GPIO is not set 
     391 CONFIG_LOADER_U_BOOT=y 
     392  
     393 # 
     394@@ -122,6 +123,7 @@ 
     395 # CONFIG_AP7000_32_BIT_SMC is not set 
     396 CONFIG_AP7000_16_BIT_SMC=y 
     397 # CONFIG_AP7000_8_BIT_SMC is not set 
     398+CONFIG_GPIO_DEV=y 
     399 CONFIG_LOAD_ADDRESS=0x10000000 
     400 CONFIG_ENTRY_ADDRESS=0x90000000 
     401 CONFIG_PHYS_OFFSET=0x10000000 
     402@@ -145,6 +147,7 @@ 
     403 # CONFIG_RESOURCES_64BIT is not set 
     404 CONFIG_ZONE_DMA_FLAG=0 
     405 # CONFIG_OWNERSHIP_TRACE is not set 
     406+CONFIG_DW_DMAC=y 
     407 # CONFIG_HZ_100 is not set 
     408 CONFIG_HZ_250=y 
     409 # CONFIG_HZ_300 is not set 
     410@@ -153,6 +156,27 @@ 
     411 CONFIG_CMDLINE="" 
     412  
     413 # 
     414+# Power managment options 
     415+# 
     416+ 
     417+# 
     418+# CPU Frequency scaling 
     419+# 
     420+CONFIG_CPU_FREQ=y 
     421+CONFIG_CPU_FREQ_TABLE=y 
     422+# CONFIG_CPU_FREQ_DEBUG is not set 
     423+CONFIG_CPU_FREQ_STAT=m 
     424+# CONFIG_CPU_FREQ_STAT_DETAILS is not set 
     425+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 
     426+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 
     427+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 
     428+CONFIG_CPU_FREQ_GOV_POWERSAVE=y 
     429+CONFIG_CPU_FREQ_GOV_USERSPACE=y 
     430+CONFIG_CPU_FREQ_GOV_ONDEMAND=y 
     431+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set 
     432+CONFIG_CPU_FREQ_AT32AP=y 
     433+ 
     434+# 
     435 # Bus options 
     436 # 
     437 # CONFIG_ARCH_SUPPORTS_MSI is not set 
     438@@ -187,13 +211,8 @@ 
     439 # CONFIG_NET_KEY_MIGRATE is not set 
     440 CONFIG_INET=y 
     441 CONFIG_IP_MULTICAST=y 
     442-CONFIG_IP_ADVANCED_ROUTER=y 
     443-CONFIG_ASK_IP_FIB_HASH=y 
     444-# CONFIG_IP_FIB_TRIE is not set 
     445+# CONFIG_IP_ADVANCED_ROUTER is not set 
     446 CONFIG_IP_FIB_HASH=y 
     447-# CONFIG_IP_MULTIPLE_TABLES is not set 
     448-# CONFIG_IP_ROUTE_MULTIPATH is not set 
     449-# CONFIG_IP_ROUTE_VERBOSE is not set 
     450 CONFIG_IP_PNP=y 
     451 CONFIG_IP_PNP_DHCP=y 
     452 # CONFIG_IP_PNP_BOOTP is not set 
     453@@ -240,6 +259,7 @@ 
     454 # CONFIG_NETWORK_SECMARK is not set 
     455 CONFIG_NETFILTER=y 
     456 # CONFIG_NETFILTER_DEBUG is not set 
     457+CONFIG_BRIDGE_NETFILTER=y 
     458  
     459 # 
     460 # Core Netfilter Configuration 
     461@@ -284,6 +304,7 @@ 
     462 CONFIG_NETFILTER_XT_MATCH_MARK=m 
     463 CONFIG_NETFILTER_XT_MATCH_POLICY=m 
     464 CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 
     465+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set 
     466 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 
     467 CONFIG_NETFILTER_XT_MATCH_QUOTA=m 
     468 CONFIG_NETFILTER_XT_MATCH_REALM=m 
     469@@ -359,13 +380,19 @@ 
     470 CONFIG_IP6_NF_MANGLE=m 
     471 CONFIG_IP6_NF_TARGET_HL=m 
     472 CONFIG_IP6_NF_RAW=m 
     473+ 
     474+# 
     475+# Bridge: Netfilter Configuration 
     476+# 
     477+# CONFIG_BRIDGE_NF_EBTABLES is not set 
     478 # CONFIG_IP_DCCP is not set 
     479 # CONFIG_IP_SCTP is not set 
     480 # CONFIG_TIPC is not set 
     481 # CONFIG_ATM is not set 
     482-# CONFIG_BRIDGE is not set 
     483+CONFIG_BRIDGE=m 
     484 CONFIG_VLAN_8021Q=m 
     485 # CONFIG_DECNET is not set 
     486+CONFIG_LLC=m 
     487 # CONFIG_LLC2 is not set 
     488 # CONFIG_IPX is not set 
     489 # CONFIG_ATALK is not set 
     490@@ -521,7 +548,6 @@ 
     491 # 
     492 # Misc devices 
     493 # 
     494-# CONFIG_BLINK is not set 
     495 # CONFIG_IDE is not set 
     496  
     497 # 
     498@@ -545,13 +571,26 @@ 
     499 # CONFIG_BONDING is not set 
     500 # CONFIG_EQUALIZER is not set 
     501 CONFIG_TUN=m 
     502-# CONFIG_PHYLIB is not set 
     503+CONFIG_PHYLIB=y 
     504+ 
     505+# 
     506+# MII PHY device drivers 
     507+# 
     508+# CONFIG_MARVELL_PHY is not set 
     509+# CONFIG_DAVICOM_PHY is not set 
     510+# CONFIG_QSEMI_PHY is not set 
     511+# CONFIG_LXT_PHY is not set 
     512+# CONFIG_CICADA_PHY is not set 
     513+# CONFIG_VITESSE_PHY is not set 
     514+# CONFIG_SMSC_PHY is not set 
     515+# CONFIG_BROADCOM_PHY is not set 
     516+# CONFIG_FIXED_PHY is not set 
     517  
     518 # 
     519 # Ethernet (10 or 100Mbit) 
     520 # 
     521 CONFIG_NET_ETHERNET=y 
     522-CONFIG_MII=y 
     523+# CONFIG_MII is not set 
     524 CONFIG_MACB=y 
     525 # CONFIG_NETDEV_1000 is not set 
     526 # CONFIG_NETDEV_10000 is not set 
     527@@ -625,7 +664,15 @@ 
     528 # IPMI 
     529 # 
     530 # CONFIG_IPMI_HANDLER is not set 
     531-# CONFIG_WATCHDOG is not set 
     532+CONFIG_WATCHDOG=y 
     533+# CONFIG_WATCHDOG_NOWAYOUT is not set 
     534+ 
     535+# 
     536+# Watchdog Device Drivers 
     537+# 
     538+# CONFIG_SOFT_WATCHDOG is not set 
     539+CONFIG_AT32AP700X_WDT=y 
     540+CONFIG_AT32AP700X_WDT_TIMEOUT=2 
     541 # CONFIG_HW_RANDOM is not set 
     542 # CONFIG_RTC is not set 
     543 # CONFIG_GEN_RTC is not set 
     544@@ -636,7 +683,42 @@ 
     545 # TPM devices 
     546 # 
     547 # CONFIG_TCG_TPM is not set 
     548-# CONFIG_I2C is not set 
     549+CONFIG_I2C=m 
     550+CONFIG_I2C_BOARDINFO=y 
     551+CONFIG_I2C_CHARDEV=m 
     552+ 
     553+# 
     554+# I2C Algorithms 
     555+# 
     556+CONFIG_I2C_ALGOBIT=m 
     557+# CONFIG_I2C_ALGOPCF is not set 
     558+# CONFIG_I2C_ALGOPCA is not set 
     559+ 
     560+# 
     561+# I2C Hardware Bus support 
     562+# 
     563+CONFIG_I2C_ATMELTWI=m 
     564+CONFIG_I2C_ATMELTWI_BAUDRATE=100000 
     565+CONFIG_I2C_GPIO=m 
     566+# CONFIG_I2C_OCORES is not set 
     567+# CONFIG_I2C_PARPORT_LIGHT is not set 
     568+# CONFIG_I2C_SIMTEC is not set 
     569+# CONFIG_I2C_STUB is not set 
     570+ 
     571+# 
     572+# Miscellaneous I2C Chip support 
     573+# 
     574+# CONFIG_SENSORS_DS1337 is not set 
     575+# CONFIG_SENSORS_DS1374 is not set 
     576+# CONFIG_SENSORS_EEPROM is not set 
     577+# CONFIG_SENSORS_PCF8574 is not set 
     578+# CONFIG_SENSORS_PCA9539 is not set 
     579+# CONFIG_SENSORS_PCF8591 is not set 
     580+# CONFIG_SENSORS_MAX6875 is not set 
     581+# CONFIG_I2C_DEBUG_CORE is not set 
     582+# CONFIG_I2C_DEBUG_ALGO is not set 
     583+# CONFIG_I2C_DEBUG_BUS is not set 
     584+# CONFIG_I2C_DEBUG_CHIP is not set 
     585  
     586 # 
     587 # SPI support 
     588@@ -655,7 +737,7 @@ 
     589 # SPI Protocol Masters 
     590 # 
     591 # CONFIG_SPI_AT25 is not set 
     592-# CONFIG_SPI_SPIDEV is not set 
     593+CONFIG_SPI_SPIDEV=m 
     594  
     595 # 
     596 # Dallas's 1-wire bus 
     597@@ -706,21 +788,59 @@ 
     598 # 
     599 # USB Gadget Support 
     600 # 
     601-# CONFIG_USB_GADGET is not set 
     602-# CONFIG_MMC is not set 
     603+CONFIG_USB_GADGET=y 
     604+# CONFIG_USB_GADGET_DEBUG_FILES is not set 
     605+CONFIG_USB_GADGET_SELECTED=y 
     606+# CONFIG_USB_GADGET_FSL_USB2 is not set 
     607+# CONFIG_USB_GADGET_NET2280 is not set 
     608+# CONFIG_USB_GADGET_PXA2XX is not set 
     609+# CONFIG_USB_GADGET_GOKU is not set 
     610+# CONFIG_USB_GADGET_LH7A40X is not set 
     611+CONFIG_USB_GADGET_ATMEL_USBA=y 
     612+CONFIG_USB_ATMEL_USBA=y 
     613+# CONFIG_USB_GADGET_OMAP is not set 
     614+# CONFIG_USB_GADGET_AT91 is not set 
     615+# CONFIG_USB_GADGET_DUMMY_HCD is not set 
     616+CONFIG_USB_GADGET_DUALSPEED=y 
     617+CONFIG_USB_ZERO=m 
     618+CONFIG_USB_ETH=m 
     619+CONFIG_USB_ETH_RNDIS=y 
     620+CONFIG_USB_GADGETFS=m 
     621+CONFIG_USB_FILE_STORAGE=m 
     622+# CONFIG_USB_FILE_STORAGE_TEST is not set 
     623+CONFIG_USB_G_SERIAL=m 
     624+# CONFIG_USB_MIDI_GADGET is not set 
     625+CONFIG_MMC=y 
     626+# CONFIG_MMC_DEBUG is not set 
     627+# CONFIG_MMC_UNSAFE_RESUME is not set 
     628+ 
     629+# 
     630+# MMC/SD Card Drivers 
     631+# 
     632+CONFIG_MMC_BLOCK=y 
     633+ 
     634+# 
     635+# MMC/SD Host Controller Drivers 
     636+# 
     637+CONFIG_MMC_ATMELMCI=y 
     638  
    333639 # 
    334640 # LED devices 
     
    337643+CONFIG_NEW_LEDS=y 
    338644+CONFIG_LEDS_CLASS=y 
    339 + 
    340 +# 
    341 +# LED drivers 
    342 +# 
     645  
     646 # 
     647 # LED drivers 
     648 # 
    343649+CONFIG_LEDS_GPIO=y 
    344 + 
    345 +# 
    346 +# LED Triggers 
    347 +# 
     650  
     651 # 
     652 # LED Triggers 
     653 # 
    348654+CONFIG_LEDS_TRIGGERS=y 
    349655+CONFIG_LEDS_TRIGGER_TIMER=y 
    350656+CONFIG_LEDS_TRIGGER_HEARTBEAT=y 
    351 + 
     657  
     658 # 
     659 # InfiniBand support 
     660@@ -733,7 +853,51 @@ 
     661 # 
     662 # Real Time Clock 
     663 # 
     664-# CONFIG_RTC_CLASS is not set 
     665+CONFIG_RTC_LIB=y 
     666+CONFIG_RTC_CLASS=y 
     667+CONFIG_RTC_HCTOSYS=y 
     668+CONFIG_RTC_HCTOSYS_DEVICE="rtc0" 
     669+# CONFIG_RTC_DEBUG is not set 
     670+ 
     671+# 
     672+# RTC interfaces 
     673+# 
     674+CONFIG_RTC_INTF_SYSFS=y 
     675+CONFIG_RTC_INTF_PROC=y 
     676+CONFIG_RTC_INTF_DEV=y 
     677+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 
     678+# CONFIG_RTC_DRV_TEST is not set 
     679+ 
     680+# 
     681+# I2C RTC drivers 
     682+# 
     683+# CONFIG_RTC_DRV_DS1307 is not set 
     684+# CONFIG_RTC_DRV_DS1672 is not set 
     685+# CONFIG_RTC_DRV_MAX6900 is not set 
     686+# CONFIG_RTC_DRV_RS5C372 is not set 
     687+# CONFIG_RTC_DRV_ISL1208 is not set 
     688+# CONFIG_RTC_DRV_X1205 is not set 
     689+# CONFIG_RTC_DRV_PCF8563 is not set 
     690+# CONFIG_RTC_DRV_PCF8583 is not set 
     691+ 
     692+# 
     693+# SPI RTC drivers 
     694+# 
     695+# CONFIG_RTC_DRV_RS5C348 is not set 
     696+# CONFIG_RTC_DRV_MAX6902 is not set 
     697+ 
     698+# 
     699+# Platform RTC drivers 
     700+# 
     701+# CONFIG_RTC_DRV_DS1553 is not set 
     702+# CONFIG_RTC_DRV_DS1742 is not set 
     703+# CONFIG_RTC_DRV_M48T86 is not set 
     704+# CONFIG_RTC_DRV_V3020 is not set 
     705+ 
     706+# 
     707+# on-CPU RTC drivers 
     708+# 
     709+CONFIG_RTC_DRV_AT32AP700X=y 
     710  
     711 # 
     712 # DMA Engine support 
     713@@ -767,7 +931,8 @@ 
     714 # CONFIG_OCFS2_FS is not set 
     715 # CONFIG_MINIX_FS is not set 
     716 # CONFIG_ROMFS_FS is not set 
     717-# CONFIG_INOTIFY is not set 
     718+CONFIG_INOTIFY=y 
     719+CONFIG_INOTIFY_USER=y 
     720 # CONFIG_QUOTA is not set 
     721 # CONFIG_DNOTIFY is not set 
     722 # CONFIG_AUTOFS_FS is not set 
     723@@ -922,7 +1087,7 @@ 
     724 CONFIG_ENABLE_MUST_CHECK=y 
     725 CONFIG_MAGIC_SYSRQ=y 
     726 # CONFIG_UNUSED_SYMBOLS is not set 
     727-# CONFIG_DEBUG_FS is not set 
     728+CONFIG_DEBUG_FS=y 
     729 # CONFIG_HEADERS_CHECK is not set 
     730 CONFIG_DEBUG_KERNEL=y 
     731 # CONFIG_DEBUG_SHIRQ is not set 
     732diff -x .git -Nur linux-2.6.22.1/arch/avr32/configs/atstk1002_defconfig linux-avr32.git/arch/avr32/configs/atstk1002_defconfig 
     733--- linux-2.6.22.1/arch/avr32/configs/atstk1002_defconfig       2007-07-10 20:56:30.000000000 +0200 
     734+++ linux-avr32.git/arch/avr32/configs/atstk1002_defconfig      2007-07-13 11:24:16.000000000 +0200 
     735@@ -1,7 +1,7 @@ 
     736 # 
     737 # Automatically generated make config: don't edit 
     738-# Linux kernel version: 2.6.22-rc5 
     739-# Sat Jun 23 15:32:08 2007 
     740+# Linux kernel version: 2.6.22.atmel.1 
     741+# Thu Jul 12 19:34:17 2007 
     742 # 
     743 CONFIG_AVR32=y 
     744 CONFIG_GENERIC_GPIO=y 
     745@@ -80,10 +80,10 @@ 
     746 # 
     747 CONFIG_MODULES=y 
     748 CONFIG_MODULE_UNLOAD=y 
     749-# CONFIG_MODULE_FORCE_UNLOAD is not set 
     750+CONFIG_MODULE_FORCE_UNLOAD=y 
     751 # CONFIG_MODVERSIONS is not set 
     752 # CONFIG_MODULE_SRCVERSION_ALL is not set 
     753-# CONFIG_KMOD is not set 
     754+CONFIG_KMOD=y 
     755  
     756 # 
     757 # Block layer 
     758@@ -99,12 +99,12 @@ 
     759 CONFIG_IOSCHED_NOOP=y 
     760 # CONFIG_IOSCHED_AS is not set 
     761 # CONFIG_IOSCHED_DEADLINE is not set 
     762-# CONFIG_IOSCHED_CFQ is not set 
     763+CONFIG_IOSCHED_CFQ=y 
     764 # CONFIG_DEFAULT_AS is not set 
     765 # CONFIG_DEFAULT_DEADLINE is not set 
     766-# CONFIG_DEFAULT_CFQ is not set 
     767-CONFIG_DEFAULT_NOOP=y 
     768-CONFIG_DEFAULT_IOSCHED="noop" 
     769+CONFIG_DEFAULT_CFQ=y 
     770+# CONFIG_DEFAULT_NOOP is not set 
     771+CONFIG_DEFAULT_IOSCHED="cfq" 
     772  
     773 # 
     774 # System Type and features 
     775@@ -117,6 +117,11 @@ 
     776 CONFIG_BOARD_ATSTK1002=y 
     777 CONFIG_BOARD_ATSTK1000=y 
     778 # CONFIG_BOARD_ATNGW100 is not set 
     779+# CONFIG_BOARD_ATSTK1002_CUSTOM is not set 
     780+# CONFIG_BOARD_ATSTK1002_SPI1 is not set 
     781+# CONFIG_BOARD_ATSTK1002_J2_LED is not set 
     782+# CONFIG_BOARD_ATSTK1002_J2_LED8 is not set 
     783+# CONFIG_BOARD_ATSTK1002_J2_RGB is not set 
     784 CONFIG_LOADER_U_BOOT=y 
     785  
     786 # 
     787@@ -125,6 +130,7 @@ 
     788 # CONFIG_AP7000_32_BIT_SMC is not set 
     789 CONFIG_AP7000_16_BIT_SMC=y 
     790 # CONFIG_AP7000_8_BIT_SMC is not set 
     791+CONFIG_GPIO_DEV=y 
     792 CONFIG_LOAD_ADDRESS=0x10000000 
     793 CONFIG_ENTRY_ADDRESS=0x90000000 
     794 CONFIG_PHYS_OFFSET=0x10000000 
     795@@ -148,6 +154,7 @@ 
     796 # CONFIG_RESOURCES_64BIT is not set 
     797 CONFIG_ZONE_DMA_FLAG=0 
     798 # CONFIG_OWNERSHIP_TRACE is not set 
     799+CONFIG_DW_DMAC=y 
     800 # CONFIG_HZ_100 is not set 
     801 CONFIG_HZ_250=y 
     802 # CONFIG_HZ_300 is not set 
     803@@ -156,6 +163,27 @@ 
     804 CONFIG_CMDLINE="" 
     805  
     806 # 
     807+# Power managment options 
     808+# 
     809+ 
     810+# 
     811+# CPU Frequency scaling 
     812+# 
     813+CONFIG_CPU_FREQ=y 
     814+CONFIG_CPU_FREQ_TABLE=y 
     815+# CONFIG_CPU_FREQ_DEBUG is not set 
     816+CONFIG_CPU_FREQ_STAT=m 
     817+# CONFIG_CPU_FREQ_STAT_DETAILS is not set 
     818+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 
     819+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 
     820+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 
     821+CONFIG_CPU_FREQ_GOV_POWERSAVE=y 
     822+CONFIG_CPU_FREQ_GOV_USERSPACE=y 
     823+CONFIG_CPU_FREQ_GOV_ONDEMAND=y 
     824+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set 
     825+CONFIG_CPU_FREQ_AT32AP=y 
     826+ 
     827+# 
     828 # Bus options 
     829 # 
     830 # CONFIG_ARCH_SUPPORTS_MSI is not set 
     831@@ -327,6 +355,8 @@ 
     832 # 
     833 # Self-contained MTD device drivers 
     834 # 
     835+CONFIG_MTD_DATAFLASH=m 
     836+# CONFIG_MTD_M25P80 is not set 
     837 # CONFIG_MTD_SLRAM is not set 
     838 # CONFIG_MTD_PHRAM is not set 
     839 # CONFIG_MTD_MTDRAM is not set 
     840@@ -373,7 +403,6 @@ 
     841 # 
     842 # Misc devices 
     843 # 
     844-# CONFIG_BLINK is not set 
     845 # CONFIG_IDE is not set 
     846  
     847 # 
     848@@ -397,13 +426,26 @@ 
     849 # CONFIG_BONDING is not set 
     850 # CONFIG_EQUALIZER is not set 
     851 CONFIG_TUN=m 
     852-# CONFIG_PHYLIB is not set 
     853+CONFIG_PHYLIB=y 
     854+ 
     855+# 
     856+# MII PHY device drivers 
     857+# 
     858+# CONFIG_MARVELL_PHY is not set 
     859+# CONFIG_DAVICOM_PHY is not set 
     860+# CONFIG_QSEMI_PHY is not set 
     861+CONFIG_LXT_PHY=y 
     862+# CONFIG_CICADA_PHY is not set 
     863+# CONFIG_VITESSE_PHY is not set 
     864+# CONFIG_SMSC_PHY is not set 
     865+# CONFIG_BROADCOM_PHY is not set 
     866+# CONFIG_FIXED_PHY is not set 
     867  
     868 # 
     869 # Ethernet (10 or 100Mbit) 
     870 # 
     871 CONFIG_NET_ETHERNET=y 
     872-CONFIG_MII=y 
     873+# CONFIG_MII is not set 
     874 CONFIG_MACB=y 
     875 # CONFIG_NETDEV_1000 is not set 
     876 # CONFIG_NETDEV_10000 is not set 
     877@@ -443,7 +485,42 @@ 
     878 # 
     879 # Input device support 
     880 # 
     881-# CONFIG_INPUT is not set 
     882+CONFIG_INPUT=m 
     883+# CONFIG_INPUT_FF_MEMLESS is not set 
     884+CONFIG_INPUT_POLLDEV=m 
     885+ 
     886+# 
     887+# Userland interfaces 
     888+# 
     889+CONFIG_INPUT_MOUSEDEV=m 
     890+CONFIG_INPUT_MOUSEDEV_PSAUX=y 
     891+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 
     892+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 
     893+# CONFIG_INPUT_JOYDEV is not set 
     894+# CONFIG_INPUT_TSDEV is not set 
     895+# CONFIG_INPUT_EVDEV is not set 
     896+# CONFIG_INPUT_EVBUG is not set 
     897+ 
     898+# 
     899+# Input Device Drivers 
     900+# 
     901+CONFIG_INPUT_KEYBOARD=y 
     902+# CONFIG_KEYBOARD_ATKBD is not set 
     903+# CONFIG_KEYBOARD_SUNKBD is not set 
     904+# CONFIG_KEYBOARD_LKKBD is not set 
     905+# CONFIG_KEYBOARD_XTKBD is not set 
     906+# CONFIG_KEYBOARD_NEWTON is not set 
     907+# CONFIG_KEYBOARD_STOWAWAY is not set 
     908+CONFIG_KEYBOARD_GPIO=m 
     909+CONFIG_INPUT_MOUSE=y 
     910+# CONFIG_MOUSE_PS2 is not set 
     911+# CONFIG_MOUSE_SERIAL is not set 
     912+# CONFIG_MOUSE_VSXXXAA is not set 
     913+CONFIG_MOUSE_GPIO=m 
     914+# CONFIG_INPUT_JOYSTICK is not set 
     915+# CONFIG_INPUT_TABLET is not set 
     916+# CONFIG_INPUT_TOUCHSCREEN is not set 
     917+# CONFIG_INPUT_MISC is not set 
     918  
     919 # 
     920 # Hardware I/O ports 
     921@@ -477,7 +554,15 @@ 
     922 # IPMI 
     923 # 
     924 # CONFIG_IPMI_HANDLER is not set 
     925-# CONFIG_WATCHDOG is not set 
     926+CONFIG_WATCHDOG=y 
     927+# CONFIG_WATCHDOG_NOWAYOUT is not set 
     928+ 
     929+# 
     930+# Watchdog Device Drivers 
     931+# 
     932+# CONFIG_SOFT_WATCHDOG is not set 
     933+CONFIG_AT32AP700X_WDT=y 
     934+CONFIG_AT32AP700X_WDT_TIMEOUT=2 
     935 # CONFIG_HW_RANDOM is not set 
     936 # CONFIG_RTC is not set 
     937 # CONFIG_GEN_RTC is not set 
     938@@ -488,13 +573,61 @@ 
     939 # TPM devices 
     940 # 
     941 # CONFIG_TCG_TPM is not set 
     942-# CONFIG_I2C is not set 
     943+CONFIG_I2C=m 
     944+CONFIG_I2C_BOARDINFO=y 
     945+CONFIG_I2C_CHARDEV=m 
     946+ 
     947+# 
     948+# I2C Algorithms 
     949+# 
     950+CONFIG_I2C_ALGOBIT=m 
     951+# CONFIG_I2C_ALGOPCF is not set 
     952+# CONFIG_I2C_ALGOPCA is not set 
     953+ 
     954+# 
     955+# I2C Hardware Bus support 
     956+# 
     957+CONFIG_I2C_ATMELTWI=m 
     958+CONFIG_I2C_ATMELTWI_BAUDRATE=100000 
     959+CONFIG_I2C_GPIO=m 
     960+# CONFIG_I2C_OCORES is not set 
     961+# CONFIG_I2C_PARPORT_LIGHT is not set 
     962+# CONFIG_I2C_SIMTEC is not set 
     963+# CONFIG_I2C_STUB is not set 
     964+ 
     965+# 
     966+# Miscellaneous I2C Chip support 
     967+# 
     968+# CONFIG_SENSORS_DS1337 is not set 
     969+# CONFIG_SENSORS_DS1374 is not set 
     970+# CONFIG_SENSORS_EEPROM is not set 
     971+# CONFIG_SENSORS_PCF8574 is not set 
     972+# CONFIG_SENSORS_PCA9539 is not set 
     973+# CONFIG_SENSORS_PCF8591 is not set 
     974+# CONFIG_SENSORS_MAX6875 is not set 
     975+# CONFIG_I2C_DEBUG_CORE is not set 
     976+# CONFIG_I2C_DEBUG_ALGO is not set 
     977+# CONFIG_I2C_DEBUG_BUS is not set 
     978+# CONFIG_I2C_DEBUG_CHIP is not set 
     979  
     980 # 
     981 # SPI support 
     982 # 
     983-# CONFIG_SPI is not set 
     984-# CONFIG_SPI_MASTER is not set 
     985+CONFIG_SPI=y 
     986+# CONFIG_SPI_DEBUG is not set 
     987+CONFIG_SPI_MASTER=y 
     988+ 
     989+# 
     990+# SPI Master Controller Drivers 
     991+# 
     992+CONFIG_SPI_ATMEL=y 
     993+# CONFIG_SPI_BITBANG is not set 
     994+ 
     995+# 
     996+# SPI Protocol Masters 
     997+# 
     998+# CONFIG_SPI_AT25 is not set 
     999+CONFIG_SPI_SPIDEV=m 
     1000  
     1001 # 
     1002 # Dallas's 1-wire bus 
     1003@@ -517,14 +650,40 @@ 
     1004 # 
     1005 # Graphics support 
     1006 # 
     1007-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 
     1008+CONFIG_BACKLIGHT_LCD_SUPPORT=y 
     1009+CONFIG_LCD_CLASS_DEVICE=y 
     1010+CONFIG_LCD_LTV350QV=y 
     1011+# CONFIG_BACKLIGHT_CLASS_DEVICE is not set 
     1012  
     1013 # 
     1014 # Display device support 
     1015 # 
     1016 # CONFIG_DISPLAY_SUPPORT is not set 
     1017 # CONFIG_VGASTATE is not set 
     1018-# CONFIG_FB is not set 
     1019+CONFIG_FB=y 
     1020+# CONFIG_FIRMWARE_EDID is not set 
     1021+# CONFIG_FB_DDC is not set 
     1022+CONFIG_FB_CFB_FILLRECT=y 
     1023+CONFIG_FB_CFB_COPYAREA=y 
     1024+CONFIG_FB_CFB_IMAGEBLIT=y 
     1025+# CONFIG_FB_SYS_FILLRECT is not set 
     1026+# CONFIG_FB_SYS_COPYAREA is not set 
     1027+# CONFIG_FB_SYS_IMAGEBLIT is not set 
     1028+# CONFIG_FB_SYS_FOPS is not set 
     1029+CONFIG_FB_DEFERRED_IO=y 
     1030+# CONFIG_FB_SVGALIB is not set 
     1031+# CONFIG_FB_MACMODES is not set 
     1032+# CONFIG_FB_BACKLIGHT is not set 
     1033+# CONFIG_FB_MODE_HELPERS is not set 
     1034+# CONFIG_FB_TILEBLITTING is not set 
     1035+ 
     1036+# 
     1037+# Frame buffer hardware drivers 
     1038+# 
     1039+# CONFIG_FB_S1D13XXX is not set 
     1040+CONFIG_FB_ATMEL=y 
     1041+# CONFIG_FB_VIRTUAL is not set 
     1042+# CONFIG_LOGO is not set 
     1043  
     1044 # 
     1045 # Sound 
     1046@@ -532,6 +691,11 @@ 
     1047 # CONFIG_SOUND is not set 
     1048  
     1049 # 
     1050+# HID Devices 
     1051+# 
     1052+# CONFIG_HID is not set 
     1053+ 
     1054+# 
     1055 # USB support 
     1056 # 
     1057 # CONFIG_USB_ARCH_HAS_HCD is not set 
     1058@@ -545,21 +709,59 @@ 
     1059 # 
     1060 # USB Gadget Support 
     1061 # 
     1062-# CONFIG_USB_GADGET is not set 
     1063-# CONFIG_MMC is not set 
     1064+CONFIG_USB_GADGET=y 
     1065+# CONFIG_USB_GADGET_DEBUG_FILES is not set 
     1066+CONFIG_USB_GADGET_SELECTED=y 
     1067+# CONFIG_USB_GADGET_FSL_USB2 is not set 
     1068+# CONFIG_USB_GADGET_NET2280 is not set 
     1069+# CONFIG_USB_GADGET_PXA2XX is not set 
     1070+# CONFIG_USB_GADGET_GOKU is not set 
     1071+# CONFIG_USB_GADGET_LH7A40X is not set 
     1072+CONFIG_USB_GADGET_ATMEL_USBA=y 
     1073+CONFIG_USB_ATMEL_USBA=y 
     1074+# CONFIG_USB_GADGET_OMAP is not set 
     1075+# CONFIG_USB_GADGET_AT91 is not set 
     1076+# CONFIG_USB_GADGET_DUMMY_HCD is not set 
     1077+CONFIG_USB_GADGET_DUALSPEED=y 
     1078+CONFIG_USB_ZERO=m 
     1079+CONFIG_USB_ETH=m 
     1080+CONFIG_USB_ETH_RNDIS=y 
     1081+CONFIG_USB_GADGETFS=m 
     1082+CONFIG_USB_FILE_STORAGE=m 
     1083+# CONFIG_USB_FILE_STORAGE_TEST is not set 
     1084+CONFIG_USB_G_SERIAL=m 
     1085+# CONFIG_USB_MIDI_GADGET is not set 
     1086+CONFIG_MMC=y 
     1087+# CONFIG_MMC_DEBUG is not set 
     1088+# CONFIG_MMC_UNSAFE_RESUME is not set 
     1089+ 
     1090+# 
     1091+# MMC/SD Card Drivers 
     1092+# 
     1093+CONFIG_MMC_BLOCK=y 
     1094+ 
     1095+# 
     1096+# MMC/SD Host Controller Drivers 
     1097+# 
     1098+CONFIG_MMC_ATMELMCI=y 
     1099  
     1100 # 
     1101 # LED devices 
     1102 # 
     1103-# CONFIG_NEW_LEDS is not set 
     1104+CONFIG_NEW_LEDS=y 
     1105+CONFIG_LEDS_CLASS=m 
    3521106  
    3531107 # 
    3541108 # LED drivers 
     1109 # 
     1110+CONFIG_LEDS_GPIO=m 
     1111  
     1112 # 
     1113 # LED Triggers 
     1114 # 
     1115+CONFIG_LEDS_TRIGGERS=y 
     1116+CONFIG_LEDS_TRIGGER_TIMER=m 
     1117+CONFIG_LEDS_TRIGGER_HEARTBEAT=m 
     1118  
     1119 # 
     1120 # InfiniBand support 
     1121@@ -572,7 +774,50 @@ 
     1122 # 
     1123 # Real Time Clock 
     1124 # 
     1125-# CONFIG_RTC_CLASS is not set 
     1126+CONFIG_RTC_LIB=y 
     1127+CONFIG_RTC_CLASS=y 
     1128+# CONFIG_RTC_HCTOSYS is not set 
     1129+# CONFIG_RTC_DEBUG is not set 
     1130+ 
     1131+# 
     1132+# RTC interfaces 
     1133+# 
     1134+CONFIG_RTC_INTF_SYSFS=y 
     1135+CONFIG_RTC_INTF_PROC=y 
     1136+CONFIG_RTC_INTF_DEV=y 
     1137+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 
     1138+# CONFIG_RTC_DRV_TEST is not set 
     1139+ 
     1140+# 
     1141+# I2C RTC drivers 
     1142+# 
     1143+# CONFIG_RTC_DRV_DS1307 is not set 
     1144+# CONFIG_RTC_DRV_DS1672 is not set 
     1145+# CONFIG_RTC_DRV_MAX6900 is not set 
     1146+# CONFIG_RTC_DRV_RS5C372 is not set 
     1147+# CONFIG_RTC_DRV_ISL1208 is not set 
     1148+# CONFIG_RTC_DRV_X1205 is not set 
     1149+# CONFIG_RTC_DRV_PCF8563 is not set 
     1150+# CONFIG_RTC_DRV_PCF8583 is not set 
     1151+ 
     1152+# 
     1153+# SPI RTC drivers 
     1154+# 
     1155+# CONFIG_RTC_DRV_RS5C348 is not set 
     1156+# CONFIG_RTC_DRV_MAX6902 is not set 
     1157+ 
     1158+# 
     1159+# Platform RTC drivers 
     1160+# 
     1161+# CONFIG_RTC_DRV_DS1553 is not set 
     1162+# CONFIG_RTC_DRV_DS1742 is not set 
     1163+# CONFIG_RTC_DRV_M48T86 is not set 
     1164+# CONFIG_RTC_DRV_V3020 is not set 
     1165+ 
     1166+# 
     1167+# on-CPU RTC drivers 
     1168+# 
     1169+CONFIG_RTC_DRV_AT32AP700X=y 
     1170  
     1171 # 
     1172 # DMA Engine support 
     1173@@ -590,11 +835,14 @@ 
     1174 # 
     1175 # File systems 
     1176 # 
     1177-CONFIG_EXT2_FS=m 
     1178+CONFIG_EXT2_FS=y 
     1179 # CONFIG_EXT2_FS_XATTR is not set 
     1180 # CONFIG_EXT2_FS_XIP is not set 
     1181-# CONFIG_EXT3_FS is not set 
     1182+CONFIG_EXT3_FS=y 
     1183+# CONFIG_EXT3_FS_XATTR is not set 
     1184 # CONFIG_EXT4DEV_FS is not set 
     1185+CONFIG_JBD=y 
     1186+# CONFIG_JBD_DEBUG is not set 
     1187 # CONFIG_REISERFS_FS is not set 
     1188 # CONFIG_JFS_FS is not set 
     1189 # CONFIG_FS_POSIX_ACL is not set 
     1190@@ -609,7 +857,7 @@ 
     1191 # CONFIG_DNOTIFY is not set 
     1192 # CONFIG_AUTOFS_FS is not set 
     1193 # CONFIG_AUTOFS4_FS is not set 
     1194-# CONFIG_FUSE_FS is not set 
     1195+CONFIG_FUSE_FS=m 
     1196  
     1197 # 
     1198 # CD-ROM/DVD Filesystems 
     1199@@ -638,7 +886,7 @@ 
     1200 # CONFIG_TMPFS_POSIX_ACL is not set 
     1201 # CONFIG_HUGETLB_PAGE is not set 
     1202 CONFIG_RAMFS=y 
     1203-CONFIG_CONFIGFS_FS=m 
     1204+CONFIG_CONFIGFS_FS=y 
     1205  
     1206 # 
     1207 # Miscellaneous filesystems 
     1208@@ -683,8 +931,14 @@ 
     1209 # CONFIG_SUNRPC_BIND34 is not set 
     1210 # CONFIG_RPCSEC_GSS_KRB5 is not set 
     1211 # CONFIG_RPCSEC_GSS_SPKM3 is not set 
     1212-# CONFIG_SMB_FS is not set 
     1213-# CONFIG_CIFS is not set 
     1214+CONFIG_SMB_FS=m 
     1215+# CONFIG_SMB_NLS_DEFAULT is not set 
     1216+CONFIG_CIFS=m 
     1217+# CONFIG_CIFS_STATS is not set 
     1218+# CONFIG_CIFS_WEAK_PW_HASH is not set 
     1219+# CONFIG_CIFS_XATTR is not set 
     1220+# CONFIG_CIFS_DEBUG2 is not set 
     1221+# CONFIG_CIFS_EXPERIMENTAL is not set 
     1222 # CONFIG_NCP_FS is not set 
     1223 # CONFIG_CODA_FS is not set 
     1224 # CONFIG_AFS_FS is not set 
    3551225diff -x .git -Nur linux-2.6.22.1/arch/avr32/drivers/dw-dmac.c linux-avr32.git/arch/avr32/drivers/dw-dmac.c 
    3561226--- linux-2.6.22.1/arch/avr32/drivers/dw-dmac.c 1970-01-01 01:00:00.000000000 +0100 
    357 +++ linux-avr32.git/arch/avr32/drivers/dw-dmac.c        2007-06-06 11:33:46.000000000 +0200 
     1227+++ linux-avr32.git/arch/avr32/drivers/dw-dmac.c        2007-07-13 11:24:16.000000000 +0200 
    3581228@@ -0,0 +1,761 @@ 
    3591229+/* 
     
    11712041diff -x .git -Nur linux-2.6.22.1/arch/avr32/Kconfig linux-avr32.git/arch/avr32/Kconfig 
    11722042--- linux-2.6.22.1/arch/avr32/Kconfig   2007-07-10 20:56:30.000000000 +0200 
    1173 +++ linux-avr32.git/arch/avr32/Kconfig  2007-07-12 13:59:49.000000000 +0200 
    1174 @@ -113,6 +113,10 @@ 
     2043+++ linux-avr32.git/arch/avr32/Kconfig  2007-07-13 11:24:16.000000000 +0200 
     2044@@ -113,6 +113,13 @@ 
    11752045        bool "ATNGW100 Network Gateway" 
    11762046 endchoice 
     
    11792049+source "arch/avr32/boards/atstk1000/Kconfig" 
    11802050+endif 
     2051+if BOARD_ATNGW100 
     2052+source "arch/avr32/boards/atngw100/Kconfig" 
     2053+endif 
    11812054+ 
    11822055 choice 
    11832056        prompt "Boot loader type" 
    11842057        default LOADER_U_BOOT 
    1185 @@ -171,6 +175,10 @@ 
     2058@@ -171,6 +178,10 @@ 
    11862059          enabling Nexus-compliant debuggers to keep track of the PID of the 
    11872060          currently executing task. 
     
    11942067  
    11952068 source "kernel/Kconfig.hz" 
    1196 @@ -185,6 +193,27 @@ 
     2069@@ -185,6 +196,27 @@ 
    11972070  
    11982071 endmenu 
     
    41505023diff -x .git -Nur linux-2.6.22.1/drivers/i2c/busses/i2c-atmeltwi.c linux-avr32.git/drivers/i2c/busses/i2c-atmeltwi.c 
    41515024--- linux-2.6.22.1/drivers/i2c/busses/i2c-atmeltwi.c    1970-01-01 01:00:00.000000000 +0100 
    4152 +++ linux-avr32.git/drivers/i2c/busses/i2c-atmeltwi.c   2007-07-12 13:59:59.000000000 +0200 
    4153 @@ -0,0 +1,348 @@ 
     5025+++ linux-avr32.git/drivers/i2c/busses/i2c-atmeltwi.c   2007-07-13 11:24:16.000000000 +0200 
     5026@@ -0,0 +1,383 @@ 
    41545027+/* 
    41555028+ * i2c Support for Atmel's Two-Wire Interface (TWI) 
     
    41575030+ * Based on the work of Copyright (C) 2004 Rick Bronson 
    41585031+ * Converted to 2.6 by Andrew Victor <andrew at sanpeople.com> 
    4159 + * Ported to AVR32 and heavily modified by Espen Krangnes <ekrangnes at atmel.com> 
     5032+ * Ported to AVR32 and heavily modified by Espen Krangnes 
     5033+ * <ekrangnes at atmel.com> 
    41605034+ * 
    41615035+ * Copyright (C) 2006 Atmel Corporation 
     
    41635037+ * Borrowed heavily from the original work by: 
    41645038+ * Copyright (C) 2000 Philip Edelbrock <phil at stimpy.netroedge.com> 
     5039+ * 
     5040+ * Partialy rewriten by Karel Hojdar <cmkaho at seznam.cz> 
     5041+ * bugs removed, interrupt routine markedly rewritten 
    41655042+ * 
    41665043+ * This program is free software; you can redistribute it and/or modify 
     
    42035080+       u8 len; 
    42045081+       u8 acks_left; 
     5082+       u8 nack; 
    42055083+       unsigned int irq; 
    42065084+ 
     
    42395117+ * Returns 0 if timed out (~100ms). 
    42405118+ */ 
    4241 +static short twi_wait_for_completion(struct atmel_twi *twi, 
    4242 +               u32 mask) 
     5119+static short twi_complete(struct atmel_twi *twi, u32 mask) 
    42435120+{ 
    42445121+       int timeout = msecs_to_jiffies(100); 
     
    42495126+       twi_writel(twi, IER, mask); 
    42505127+ 
    4251 +       if(!wait_for_completion_timeout(&twi->comp, timeout)) 
     5128+       if (!wait_for_completion_timeout(&twi->comp, timeout)) { 
     5129+               /* RESET TWI interface */ 
     5130+               twi_writel(twi, CR, TWI_BIT(SWRST)); 
     5131+ 
     5132+               /* Reinitialize TWI */ 
     5133+               twi_hwinit(twi); 
     5134+ 
    42525135+               return -ETIMEDOUT; 
    4253 + 
     5136+       } 
    42545137+       return 0; 
    42555138+} 
     
    42695152+       dev_dbg(&adap->dev, "twi_xfer: processing %d messages:\n", num); 
    42705153+ 
     5154+       twi->nack = 0; 
    42715155+       for (i = 0; i < num; i++, pmsg++) { 
    4272 + 
    42735156+               twi->len = pmsg->len; 
    42745157+               twi->buf = pmsg->buf; 
     
    42875170+ 
    42885171+               if (pmsg->flags & I2C_M_RD) { 
    4289 +                       twi_writel(twi, CR, TWI_BIT(START)); 
    4290 +                       if ( twi_wait_for_completion(twi,TWI_BIT(RXRDY))==-ETIMEDOUT ) { 
     5172+                       if (twi->len == 1) 
     5173+                               twi_writel(twi, CR, 
     5174+                                       TWI_BIT(START) | TWI_BIT(STOP)); 
     5175+                       else 
     5176+                               twi_writel(twi, CR, TWI_BIT(START)); 
     5177+ 
     5178+                       if (twi_complete(twi, TWI_BIT(RXRDY)) == -ETIMEDOUT) { 
    42915179+                               dev_dbg(&adap->dev, "RXRDY timeout. Stopped with %d bytes left\n", 
    42925180+                                       twi->acks_left); 
    42935181+                               return -ETIMEDOUT; 
    42945182+                       } 
    4295 + 
    4296 +                       /* Send Stop, and Wait until transfer is finished */ 
    4297 +                       if ( twi_wait_for_completion(twi,TWI_BIT(TXCOMP))==-ETIMEDOUT ) { 
    4298 +                               dev_dbg(&adap->dev, "TXCOMP timeout\n"); 
    4299 +                               return -ETIMEDOUT; 
    4300 +                       } 
    4301 + 
    43025183+               } else { 
    43035184+                       twi_writel(twi, THR, twi->buf[0]); 
    4304 +                       if ( twi_wait_for_completion(twi,TWI_BIT(TXRDY))==-ETIMEDOUT ) { 
     5185+                       if (twi_complete(twi, TWI_BIT(TXRDY)) == -ETIMEDOUT) { 
    43055186+                               dev_dbg(&adap->dev, "TXRDY timeout. Stopped with %d bytes left\n", 
    43065187+                               twi->acks_left); 
    43075188+                               return -ETIMEDOUT; 
    43085189+                       } 
     5190+ 
     5191+                       if (twi->nack) 
     5192+                           return -ENODEV; 
    43095193+               } 
    43105194+ 
     
    43235207+       int status = twi_readl(twi, SR); 
    43245208+ 
    4325 +       if (twi->intmask & status){ 
    4326 +               if (twi->intmask & TWI_BIT(NACK)) { 
     5209+       /* Save state for later debug prints */ 
     5210+       int old_mask = twi->intmask; 
     5211+       int old_status = status; 
     5212+ 
     5213+       if (twi->intmask & status) { 
     5214+               if (status & TWI_BIT(NACK)) 
    43275215+                       goto nack; 
    4328 +               } else if (twi->intmask & TWI_BIT(RXRDY)){ 
    4329 +                       twi->buf[twi->len - twi->acks_left] = twi_readl(twi,RHR); 
    4330 +                       if(--twi->acks_left==1) 
     5216+ 
     5217+               status &= twi->intmask; 
     5218+ 
     5219+               if (status & TWI_BIT(TXCOMP)) 
     5220+                   goto complete; 
     5221+ 
     5222+               else if (status & TWI_BIT(RXRDY)) { 
     5223+                       if ( twi->acks_left > 0 ) { 
     5224+                           twi->buf[twi->len - twi->acks_left] = 
     5225+                               twi_readl(twi, RHR); 
     5226+                           twi->acks_left--; 
     5227+                       } 
     5228+                       if ( twi->acks_left == 1 ) 
    43315229+                               twi_writel(twi, CR, TWI_BIT(STOP)); 
    4332 +                       if (twi->acks_left==0) 
    4333 +                               goto complete; 
    4334 +               } else if (twi->intmask & TWI_BIT(TXRDY)) { 
    4335 +                       twi->acks_left--; 
    4336 +                       if (twi->acks_left==0) { 
     5230+ 
     5231+                       if (twi->acks_left == 0 ) { 
    43375232+                               twi->intmask = TWI_BIT(TXCOMP); 
    43385233+                               twi_writel(twi, IER, TWI_BIT(TXCOMP)); 
    4339 +                       } else 
     5234+                       } 
     5235+               } else if (status & TWI_BIT(TXRDY)) { 
     5236+                       twi->acks_left--; 
     5237+                       if ( twi->acks_left == 0 ) { 
     5238+                               twi->intmask = TWI_BIT(TXCOMP); 
     5239+                               twi_writel(twi, IER, TWI_BIT(TXCOMP)); 
     5240+                       } else if (twi->acks_left > 0) 
    43405241+                               twi_writel(twi, THR, twi->buf[twi->len - twi->acks_left]); 
    4341 +               } else if (twi->intmask & TWI_BIT(TXCOMP)) { 
    4342 +                       goto complete; 
    43435242+               } 
    43445243+       } 
    43455244+ 
     5245+       dev_dbg(&twi->adapter.dev, 
     5246+               "TWI ISR, SR 0x%08X, intmask 0x%08X, acks_left %i.\n", 
     5247+               old_status, old_mask, twi->acks_left); 
     5248+ 
    43465249+       return IRQ_HANDLED; 
    43475250+ 
    43485251+nack: 
    4349 +       printk(KERN_INFO "NACK received!\n"); 
     5252+       dev_dbg(&twi->adapter.dev, "NACK received!\n"); 
     5253+       twi->nack = 1; 
    43505254+ 
    43515255+complete: 
     
    43535257+       complete(&twi->comp); 
    43545258+ 
     5259+       dev_dbg(&twi->adapter.dev, 
     5260+               "TWI ISR, SR 0x%08X, intmask 0x%08X, \ 
     5261+               acks_left %i - completed.\n", 
     5262+               old_status, old_mask, twi->acks_left); 
     5263+ 
    43555264+       return IRQ_HANDLED; 
    4356 + 
    43575265+} 
    43585266+ 
     
    45415449 ifeq ($(CONFIG_I2C_DEBUG_BUS),y) 
    45425450 EXTRA_CFLAGS += -DDEBUG 
     5451diff -x .git -Nur linux-2.6.22.1/drivers/input/mouse/gpio_mouse.c linux-avr32.git/drivers/input/mouse/gpio_mouse.c 
     5452--- linux-2.6.22.1/drivers/input/mouse/gpio_mouse.c     1970-01-01 01:00:00.000000000 +0100 
     5453+++ linux-avr32.git/drivers/input/mouse/gpio_mouse.c    2007-07-13 11:24:16.000000000 +0200 
     5454@@ -0,0 +1,196 @@ 
     5455+/* 
     5456+ * Driver for simulating a mouse on GPIO lines. 
     5457+ * 
     5458+ * Copyright (C) 2007 Atmel Corporation 
     5459+ * 
     5460+ * This program is free software; you can redistribute it and/or modify 
     5461+ * it under the terms of the GNU General Public License version 2 as 
     5462+ * published by the Free Software Foundation. 
     5463+ */ 
     5464+ 
     5465+#include <linux/init.h> 
     5466+#include <linux/version.h> 
     5467+#include <linux/module.h> 
     5468+#include <linux/platform_device.h> 
     5469+#include <linux/input-polldev.h> 
     5470+#include <linux/gpio_mouse.h> 
     5471+ 
     5472+#include <asm/gpio.h> 
     5473+ 
     5474+/* 
     5475+ * Timer function which is run every scan_ms ms when the device is opened. 
     5476+ * The dev input varaible is set to the the input_dev pointer. 
     5477+ */ 
     5478+static void gpio_mouse_scan(struct input_polled_dev *dev) 
     5479+{ 
     5480+       struct gpio_mouse_platform_data *gpio = dev->private; 
     5481+       struct input_dev *input = dev->input; 
     5482+       int x, y; 
     5483+ 
     5484+       if (gpio->bleft >= 0) 
     5485+               input_report_key(input, BTN_LEFT, 
     5486+                               gpio_get_value(gpio->bleft) ^ gpio->polarity); 
     5487+       if (gpio->bmiddle >= 0) 
     5488+               input_report_key(input, BTN_MIDDLE, 
     5489+                               gpio_get_value(gpio->bmiddle) ^ gpio->polarity); 
     5490+       if (gpio->bright >= 0) 
     5491+               input_report_key(input, BTN_RIGHT, 
     5492+                               gpio_get_value(gpio->bright) ^ gpio->polarity); 
     5493+ 
     5494+       x = (gpio_get_value(gpio->right) ^ gpio->polarity) 
     5495+               - (gpio_get_value(gpio->left) ^ gpio->polarity); 
     5496+       y = (gpio_get_value(gpio->down) ^ gpio->polarity) 
     5497+               - (gpio_get_value(gpio->up) ^ gpio->polarity); 
     5498+ 
     5499+       input_report_rel(input, REL_X, x); 
     5500+       input_report_rel(input, REL_Y, y); 
     5501+       input_sync(input); 
     5502+} 
     5503+ 
     5504+static int __init gpio_mouse_probe(struct platform_device *pdev) 
     5505+{ 
     5506+       struct gpio_mouse_platform_data *pdata = pdev->dev.platform_data; 
     5507+       struct input_polled_dev *input_poll; 
     5508+       struct input_dev *input; 
     5509+       int pin, i; 
     5510+       int error; 
     5511+ 
     5512+       if (!pdata) { 
     5513+               dev_err(&pdev->dev, "no platform data\n"); 
     5514+               error = -ENXIO; 
     5515+               goto out; 
     5516+       } 
     5517+ 
     5518+       if (pdata->scan_ms < 0) { 
     5519+               dev_err(&pdev->dev, "invalid scan time\n"); 
     5520+               error = -EINVAL; 
     5521+               goto out; 
     5522+       } 
     5523+ 
     5524+       for (i = 0; i < GPIO_MOUSE_PIN_MAX; i++) { 
     5525+               pin = pdata->pins[i]; 
     5526+ 
     5527+               if (pin < 0) { 
     5528+ 
     5529+                       if (i <= GPIO_MOUSE_PIN_RIGHT) { 
     5530+                               /* Mouse direction is required. */ 
     5531+                               dev_err(&pdev->dev, 
     5532+                                       "missing GPIO for directions\n"); 
     5533+                               error = -EINVAL; 
     5534+                               goto out_free_gpios; 
     5535+                       } 
     5536+ 
     5537+                       if (i == GPIO_MOUSE_PIN_BLEFT) 
     5538+                               dev_dbg(&pdev->dev, "no left button defined\n"); 
     5539+ 
     5540+               } else { 
     5541+                       error = gpio_request(pin, "gpio_mouse"); 
     5542+                       if (error) { 
     5543+                               dev_err(&pdev->dev, "fail %d pin (%d idx)\n", 
     5544+                                       pin, i); 
     5545+                               goto out_free_gpios; 
     5546+                       } 
     5547+ 
     5548+                       gpio_direction_input(pin); 
     5549+               } 
     5550+       } 
     5551+ 
     5552+       input_poll = input_allocate_polled_device(); 
     5553+       if (!input_poll) { 
     5554+               dev_err(&pdev->dev, "not enough memory for input device\n"); 
     5555+               error = -ENOMEM; 
     5556+               goto out_free_gpios; 
     5557+       } 
     5558+ 
     5559+       platform_set_drvdata(pdev, input_poll); 
     5560+ 
     5561+       /* set input-polldev handlers */ 
     5562+       input_poll->private = pdata; 
     5563+       input_poll->poll = gpio_mouse_scan; 
     5564+       input_poll->poll_interval = pdata->scan_ms; 
     5565+ 
     5566+       input = input_poll->input; 
     5567+       input->name = pdev->name; 
     5568+       input->id.bustype = BUS_HOST; 
     5569+       input->dev.parent = &pdev->dev; 
     5570+ 
     5571+       input_set_capability(input, EV_REL, REL_X); 
     5572+       input_set_capability(input, EV_REL, REL_Y); 
     5573+       if (pdata->bleft >= 0) 
     5574+               input_set_capability(input, EV_KEY, BTN_LEFT); 
     5575+       if (pdata->bmiddle >= 0) 
     5576+               input_set_capability(input, EV_KEY, BTN_MIDDLE); 
     5577+       if (pdata->bright >= 0) 
     5578+               input_set_capability(input, EV_KEY, BTN_RIGHT); 
     5579+ 
     5580+       error = input_register_polled_device(input_poll); 
     5581+       if (error) { 
     5582+               dev_err(&pdev->dev, "could not register input device\n"); 
     5583+               goto out_free_polldev; 
     5584+       } 
     5585+ 
     5586+       dev_dbg(&pdev->dev, "%d ms scan time, buttons: %s%s%s\n", 
     5587+                       pdata->scan_ms, 
     5588+                       pdata->bleft < 0 ? "" : "left ", 
     5589+                       pdata->bmiddle < 0 ? "" : "middle ", 
     5590+                       pdata->bright < 0 ? "" : "right"); 
     5591+ 
     5592+       return 0; 
     5593+ 
     5594+ out_free_polldev: 
     5595+       input_free_polled_device(input_poll); 
     5596+       platform_set_drvdata(pdev, NULL); 
     5597+ 
     5598+ out_free_gpios: 
     5599+       while (--i >= 0) { 
     5600+               pin = pdata->pins[i]; 
     5601+               if (pin) 
     5602+                       gpio_free(pin); 
     5603+       } 
     5604+ out: 
     5605+       return error; 
     5606+} 
     5607+ 
     5608+static int __devexit gpio_mouse_remove(struct platform_device *pdev) 
     5609+{ 
     5610+       struct input_polled_dev *input = platform_get_drvdata(pdev); 
     5611+       struct gpio_mouse_platform_data *pdata = input->private; 
     5612+       int pin, i; 
     5613+ 
     5614+       input_unregister_polled_device(input); 
     5615+       input_free_polled_device(input); 
     5616+ 
     5617+       for (i = 0; i < GPIO_MOUSE_PIN_MAX; i++) { 
     5618+               pin = pdata->pins[i]; 
     5619+               if (pin >= 0) 
     5620+                       gpio_free(pin); 
     5621+       } 
     5622+ 
     5623+       platform_set_drvdata(pdev, NULL); 
     5624+ 
     5625+       return 0; 
     5626+} 
     5627+ 
     5628+struct platform_driver gpio_mouse_device_driver = { 
     5629+       .remove         = __devexit_p(gpio_mouse_remove), 
     5630+       .driver         = { 
     5631+               .name   = "gpio_mouse", 
     5632+       } 
     5633+}; 
     5634+ 
     5635+static int __init gpio_mouse_init(void) 
     5636+{ 
     5637+       return platform_driver_probe(&gpio_mouse_device_driver, 
     5638+                       gpio_mouse_probe); 
     5639+} 
     5640+module_init(gpio_mouse_init); 
     5641+ 
     5642+static void __exit gpio_mouse_exit(void) 
     5643+{ 
     5644+       platform_driver_unregister(&gpio_mouse_device_driver); 
     5645+} 
     5646+module_exit(gpio_mouse_exit); 
     5647+ 
     5648+MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>"); 
     5649+MODULE_DESCRIPTION("GPIO mouse driver"); 
     5650+MODULE_LICENSE("GPL"); 
     5651diff -x .git -Nur linux-2.6.22.1/drivers/input/mouse/Kconfig linux-avr32.git/drivers/input/mouse/Kconfig 
     5652--- linux-2.6.22.1/drivers/input/mouse/Kconfig  2007-07-10 20:56:30.000000000 +0200 
     5653+++ linux-avr32.git/drivers/input/mouse/Kconfig 2007-07-13 11:24:16.000000000 +0200 
     5654@@ -216,4 +216,20 @@ 
     5655        help 
     5656          Say Y here to support HIL pointers. 
     5657  
     5658+config MOUSE_GPIO 
     5659+       tristate "GPIO mouse" 
     5660+       depends on GENERIC_GPIO 
     5661+       select INPUT_POLLDEV 
     5662+       help 
     5663+         This driver simulates a mouse on GPIO lines of various CPUs (and some 
     5664+         other chips). 
     5665+ 
     5666+         Say Y here if your device has buttons or a simple joystick connected 
     5667+         directly to GPIO lines. Your board-specific setup logic must also 
     5668+         provide a platform device and platform data saying which GPIOs are 
     5669+         used. 
     5670+ 
     5671+         To compile this driver as a module, choose M here: the 
     5672+         module will be called gpio_mouse. 
     5673+ 
     5674 endif 
     5675diff -x .git -Nur linux-2.6.22.1/drivers/input/mouse/Makefile linux-avr32.git/drivers/input/mouse/Makefile 
     5676--- linux-2.6.22.1/drivers/input/mouse/Makefile 2007-07-10 20:56:30.000000000 +0200 
     5677+++ linux-avr32.git/drivers/input/mouse/Makefile        2007-07-13 11:24:16.000000000 +0200 
     5678@@ -15,6 +15,7 @@ 
     5679 obj-$(CONFIG_MOUSE_SERIAL)     += sermouse.o 
     5680 obj-$(CONFIG_MOUSE_HIL)                += hil_ptr.o 
     5681 obj-$(CONFIG_MOUSE_VSXXXAA)    += vsxxxaa.o 
     5682+obj-$(CONFIG_MOUSE_GPIO)       += gpio_mouse.o 
     5683  
     5684 psmouse-objs := psmouse-base.o synaptics.o 
     5685  
    45435686diff -x .git -Nur linux-2.6.22.1/drivers/leds/Kconfig linux-avr32.git/drivers/leds/Kconfig 
    45445687--- linux-2.6.22.1/drivers/leds/Kconfig 2007-07-10 20:56:30.000000000 +0200 
     
    63317474diff -x .git -Nur linux-2.6.22.1/drivers/net/macb.c linux-avr32.git/drivers/net/macb.c 
    63327475--- linux-2.6.22.1/drivers/net/macb.c   2007-07-10 20:56:30.000000000 +0200 
    6333 +++ linux-avr32.git/drivers/net/macb.c  2007-07-12 14:00:04.000000000 +0200 
     7476+++ linux-avr32.git/drivers/net/macb.c  2007-07-13 11:24:16.000000000 +0200 
    63347477@@ -17,13 +17,14 @@ 
    63357478 #include <linux/init.h> 
     
    63687511- 
    63697512-static void macb_disable_mdio(struct macb *bp) 
    6370 -{ 
     7513+static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum) 
     7514 { 
    63717515-       unsigned long flags; 
    63727516-       u32 reg; 
     
    63817525- 
    63827526-static int macb_mdio_read(struct net_device *dev, int phy_id, int location) 
    6383 +static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum) 
    6384  { 
     7527-{ 
    63857528-       struct macb *bp = netdev_priv(dev); 
    63867529+       struct macb *bp = bus->priv; 
     
    64337576-                             | MACB_BF(DATA, val))); 
    64347577+                             | MACB_BF(DATA, value))); 
    6435 + 
     7578  
     7579-       wait_for_completion(&bp->mdio_complete); 
    64367580+       /* wait for end of transfer */ 
    64377581+       while (!MACB_BFEXT(IDLE, macb_readl(bp, NSR))) 
    64387582+               cpu_relax(); 
    64397583  
    6440 -       wait_for_completion(&bp->mdio_complete); 
    6441 +       return 0; 
    6442 +} 
    6443   
    64447584-       macb_disable_mdio(bp); 
    64457585-       mutex_unlock(&bp->mdio_mutex); 
    6446 +static int macb_mdio_reset(struct mii_bus *bus) 
    6447 +{ 
    64487586+       return 0; 
    64497587 } 
    64507588  
    64517589-static int macb_phy_probe(struct macb *bp) 
    6452 +static void macb_handle_link_change(struct net_device *dev) 
     7590+static int macb_mdio_reset(struct mii_bus *bus) 
    64537591 { 
    64547592-       int phy_address; 
    64557593-       u16 phyid1, phyid2; 
     7594+       return 0; 
     7595+} 
     7596  
     7597-       for (phy_address = 0; phy_address < 32; phy_address++) { 
     7598-               phyid1 = macb_mdio_read(bp->dev, phy_address, MII_PHYSID1); 
     7599-               phyid2 = macb_mdio_read(bp->dev, phy_address, MII_PHYSID2); 
     7600+static void macb_handle_link_change(struct net_device *dev) 
     7601+{ 
    64567602+       struct macb *bp = netdev_priv(dev); 
    64577603+       struct phy_device *phydev = bp->phy_dev; 
    64587604+       unsigned long flags; 
    64597605  
    6460 -       for (phy_address = 0; phy_address < 32; phy_address++) { 
    6461 -               phyid1 = macb_mdio_read(bp->dev, phy_address, MII_PHYSID1); 
    6462 -               phyid2 = macb_mdio_read(bp->dev, phy_address, MII_PHYSID2); 
    6463 +       int status_change = 0; 
    6464   
    64657606-               if (phyid1 != 0xffff && phyid1 != 0x0000 
    64667607-                   && phyid2 != 0xffff && phyid2 != 0x0000) 
    64677608-                       break; 
     7609+       int status_change = 0; 
     7610+ 
    64687611+       spin_lock_irqsave(&bp->lock, flags); 
    64697612+ 
     
    67187861        /* Enable interrupts */ 
    67197862        macb_writel(bp, IER, (MACB_BIT(RCOMP) 
    6720 @@ -776,18 +795,7 @@ 
     7863@@ -776,18 +795,126 @@ 
    67217864                              | MACB_BIT(TCOMP) 
    67227865                              | MACB_BIT(ISR_ROVR) 
    67237866                              | MACB_BIT(HRESP))); 
    6724 -} 
    6725 - 
     7867+ 
     7868+} 
     7869+ 
     7870+/* 
     7871+ * The hash address register is 64 bits long and takes up two 
     7872+ * locations in the memory map.  The least significant bits are stored 
     7873+ * in EMAC_HSL and the most significant bits in EMAC_HSH. 
     7874+ * 
     7875+ * The unicast hash enable and the multicast hash enable bits in the 
     7876+ * network configuration register enable the reception of hash matched 
     7877+ * frames. The destination address is reduced to a 6 bit index into 
     7878+ * the 64 bit hash register using the following hash function.  The 
     7879+ * hash function is an exclusive or of every sixth bit of the 
     7880+ * destination address. 
     7881+ * 
     7882+ * hi[5] = da[5] ^ da[11] ^ da[17] ^ da[23] ^ da[29] ^ da[35] ^ da[41] ^ da[47] 
     7883+ * hi[4] = da[4] ^ da[10] ^ da[16] ^ da[22] ^ da[28] ^ da[34] ^ da[40] ^ da[46] 
     7884+ * hi[3] = da[3] ^ da[09] ^ da[15] ^ da[21] ^ da[27] ^ da[33] ^ da[39] ^ da[45] 
     7885+ * hi[2] = da[2] ^ da[08] ^ da[14] ^ da[20] ^ da[26] ^ da[32] ^ da[38] ^ da[44] 
     7886+ * hi[1] = da[1] ^ da[07] ^ da[13] ^ da[19] ^ da[25] ^ da[31] ^ da[37] ^ da[43] 
     7887+ * hi[0] = da[0] ^ da[06] ^ da[12] ^ da[18] ^ da[24] ^ da[30] ^ da[36] ^ da[42] 
     7888+ * 
     7889+ * da[0] represents the least significant bit of the first byte 
     7890+ * received, that is, the multicast/unicast indicator, and da[47] 
     7891+ * represents the most significant bit of the last byte received.  If 
     7892+ * the hash index, hi[n], points to a bit that is set in the hash 
     7893+ * register then the frame will be matched according to whether the 
     7894+ * frame is multicast or unicast.  A multicast match will be signalled 
     7895+ * if the multicast hash enable bit is set, da[0] is 1 and the hash 
     7896+ * index points to a bit set in the hash register.  A unicast match 
     7897+ * will be signalled if the unicast hash enable bit is set, da[0] is 0 
     7898+ * and the hash index points to a bit set in the hash register.  To 
     7899+ * receive all multicast frames, the hash register should be set with 
     7900+ * all ones and the multicast hash enable bit should be set in the 
     7901+ * network configuration register. 
     7902+ */ 
     7903+ 
     7904+static inline int hash_bit_value(int bitnr, __u8 *addr) 
     7905+{ 
     7906+       if (addr[bitnr / 8] & (1 << (bitnr % 8))) 
     7907+               return 1; 
     7908+       return 0; 
     7909+} 
     7910+ 
     7911+/* 
     7912+ * Return the hash index value for the specified address. 
     7913+ */ 
     7914+static int hash_get_index(__u8 *addr) 
     7915+{ 
     7916+       int i, j, bitval; 
     7917+       int hash_index = 0; 
     7918+ 
     7919+       for (j = 0; j < 6; j++) { 
     7920+               for (i = 0, bitval = 0; i < 8; i++) 
     7921+                       bitval ^= hash_bit_value(i*6 + j, addr); 
     7922+ 
     7923+               hash_index |= (bitval << j); 
     7924+       } 
     7925+ 
     7926+       return hash_index; 
     7927 } 
     7928  
    67267929-static void macb_init_phy(struct net_device *dev) 
    6727 -{ 
    6728 -       struct macb *bp = netdev_priv(dev); 
     7930+/* 
     7931+ * Add multicast addresses to the internal multicast-hash table. 
     7932+ */ 
     7933+static void macb_sethashtable(struct net_device *dev) 
     7934 { 
     7935+       struct dev_mc_list *curr; 
     7936+       unsigned long mc_filter[2]; 
     7937+       unsigned int i, bitnr; 
     7938        struct macb *bp = netdev_priv(dev); 
    67297939  
    67307940-       /* Set some reasonable default settings */ 
     
    67347944-                       (BMCR_SPEED100 | BMCR_ANENABLE 
    67357945-                        | BMCR_ANRESTART | BMCR_FULLDPLX)); 
     7946+       mc_filter[0] = mc_filter[1] = 0; 
     7947+ 
     7948+       curr = dev->mc_list; 
     7949+       for (i = 0; i < dev->mc_count; i++, curr = curr->next) { 
     7950+               if (!curr) break;       /* unexpected end of list */ 
     7951+ 
     7952+               bitnr = hash_get_index(curr->dmi_addr); 
     7953+               mc_filter[bitnr >> 5] |= 1 << (bitnr & 31); 
     7954+       } 
     7955+ 
     7956+       macb_writel(bp, HRB, mc_filter[0]); 
     7957+       macb_writel(bp, HRT, mc_filter[1]); 
     7958+} 
     7959+ 
     7960+/* 
     7961+ * Enable/Disable promiscuous and multicast modes. 
     7962+ */ 
     7963+static void macb_set_rx_mode(struct net_device *dev) 
     7964+{ 
     7965+       unsigned long cfg; 
     7966+       struct macb *bp = netdev_priv(dev); 
     7967+ 
     7968+       cfg = macb_readl(bp, NCFGR); 
     7969+ 
     7970+       if (dev->flags & IFF_PROMISC) 
     7971+               /* Enable promiscuous mode */ 
     7972+               cfg |= MACB_BIT(CAF); 
     7973+       else if (dev->flags & (~IFF_PROMISC)) 
     7974+                /* Disable promiscuous mode */ 
     7975+               cfg &= ~MACB_BIT(CAF); 
     7976+ 
     7977+       if (dev->flags & IFF_ALLMULTI) { 
     7978+               /* Enable all multicast mode */ 
     7979+               macb_writel(bp, HRB, -1); 
     7980+               macb_writel(bp, HRT, -1); 
     7981+               cfg |= MACB_BIT(NCFGR_MTI); 
     7982+       } else if (dev->mc_count > 0) { 
     7983+               /* Enable specific multicasts */ 
     7984+               macb_sethashtable(dev); 
     7985+               cfg |= MACB_BIT(NCFGR_MTI); 
     7986+       } else if (dev->flags & (~IFF_ALLMULTI)) { 
     7987+               /* Disable all multicast mode */ 
     7988+               macb_writel(bp, HRB, 0); 
     7989+               macb_writel(bp, HRT, 0); 
     7990+               cfg &= ~MACB_BIT(NCFGR_MTI); 
     7991+       } 
     7992+ 
     7993+       macb_writel(bp, NCFGR, cfg); 
    67367994 } 
    67377995  
    67387996 static int macb_open(struct net_device *dev) 
    6739 @@ -797,6 +805,10 @@ 
     7997@@ -797,6 +924,10 @@ 
    67407998  
    67417999        dev_dbg(&bp->pdev->dev, "open\n"); 
     
    67488006                return -EADDRNOTAVAIL; 
    67498007  
    6750 @@ -810,12 +822,11 @@ 
     8008@@ -810,12 +941,11 @@ 
    67518009  
    67528010        macb_init_rings(bp); 
     
    67648022        return 0; 
    67658023 } 
    6766 @@ -825,10 +836,11 @@ 
     8024@@ -825,10 +955,11 @@ 
    67678025        struct macb *bp = netdev_priv(dev); 
    67688026        unsigned long flags; 
     
    67788036        macb_reset_hw(bp); 
    67798037        netif_carrier_off(dev); 
    6780 @@ -845,6 +857,9 @@ 
     8038@@ -845,6 +976,9 @@ 
    67818039        struct net_device_stats *nstat = &bp->stats; 
    67828040        struct macb_stats *hwstat = &bp->hw_stats; 
     
    67888046        nstat->rx_errors = (hwstat->rx_fcs_errors + 
    67898047                            hwstat->rx_align_errors + 
    6790 @@ -882,18 +897,27 @@ 
     8048@@ -882,18 +1016,27 @@ 
    67918049 static int macb_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) 
    67928050 { 
    67938051        struct macb *bp = netdev_priv(dev); 
    67948052+       struct phy_device *phydev = bp->phy_dev; 
    6795   
    6796 -       return mii_ethtool_gset(&bp->mii, cmd); 
     8053+ 
    67978054+       if (!phydev) 
    67988055+               return -ENODEV; 
    6799 + 
     8056  
     8057-       return mii_ethtool_gset(&bp->mii, cmd); 
    68008058+       return phy_ethtool_gset(phydev, cmd); 
    68018059 } 
     
    68198077        struct macb *bp = netdev_priv(dev); 
    68208078  
    6821 @@ -902,104 +926,34 @@ 
     8079@@ -902,104 +1045,34 @@ 
    68228080        strcpy(info->bus_info, bp->pdev->dev.bus_id); 
    68238081 } 
     
    69298187        u32 config; 
    69308188        int err = -ENXIO; 
    6931 @@ -1080,10 +1034,6 @@ 
     8189@@ -1073,6 +1146,7 @@ 
     8190        dev->stop = macb_close; 
     8191        dev->hard_start_xmit = macb_start_xmit; 
     8192        dev->get_stats = macb_get_stats; 
     8193+       dev->set_multicast_list = macb_set_rx_mode; 
     8194        dev->do_ioctl = macb_ioctl; 
     8195        dev->poll = macb_poll; 
     8196        dev->weight = 64; 
     8197@@ -1080,10 +1154,6 @@ 
    69328198  
    69338199        dev->base_addr = regs->start; 
     
    69408206        pclk_hz = clk_get_rate(bp->pclk); 
    69418207        if (pclk_hz <= 20000000) 
    6942 @@ -1096,20 +1046,9 @@ 
     8208@@ -1096,20 +1166,9 @@ 
    69438209                config = MACB_BF(CLK, MACB_CLK_DIV64); 
    69448210        macb_writel(bp, NCFGR, config); 
     
    69628228 #if defined(CONFIG_ARCH_AT91) 
    69638229                macb_writel(bp, USRIO, (MACB_BIT(RMII) | MACB_BIT(CLKEN)) ); 
    6964 @@ -1131,9 +1070,11 @@ 
     8230@@ -1131,9 +1190,11 @@ 
    69658231                goto err_out_free_irq; 
    69668232        } 
     
    69768242        printk(KERN_INFO "%s: Atmel MACB at 0x%08lx irq %d " 
    69778243               "(%02x:%02x:%02x:%02x:%02x:%02x)\n", 
    6978 @@ -1141,8 +1082,15 @@ 
     8244@@ -1141,8 +1202,15 @@ 
    69798245               dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], 
    69808246               dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); 
     
    69928258        free_irq(dev->irq, dev); 
    69938259 err_out_iounmap: 
    6994 @@ -1153,7 +1101,9 @@ 
     8260@@ -1153,7 +1221,9 @@ 
    69958261        clk_put(bp->hclk); 
    69968262 #endif 
     
    70028268 err_out_free_dev: 
    70038269        free_netdev(dev); 
    7004 @@ -1171,7 +1121,8 @@ 
     8270@@ -1171,7 +1241,8 @@ 
    70058271  
    70068272        if (dev) { 
     
    1106112327  
    1106212328 #endif /* __ASM_AVR32_UNALIGNED_H */ 
     12329diff -x .git -Nur linux-2.6.22.1/include/linux/gpio_mouse.h linux-avr32.git/include/linux/gpio_mouse.h 
     12330--- linux-2.6.22.1/include/linux/gpio_mouse.h   1970-01-01 01:00:00.000000000 +0100 
     12331+++ linux-avr32.git/include/linux/gpio_mouse.h  2007-07-13 11:24:16.000000000 +0200 
     12332@@ -0,0 +1,61 @@ 
     12333+/* 
     12334+ * Driver for simulating a mouse on GPIO lines. 
     12335+ * 
     12336+ * Copyright (C) 2007 Atmel Corporation 
     12337+ * 
     12338+ * This program is free software; you can redistribute it and/or modify 
     12339+ * it under the terms of the GNU General Public License version 2 as 
     12340+ * published by the Free Software Foundation. 
     12341+ */ 
     12342+ 
     12343+#ifndef _GPIO_MOUSE_H 
     12344+#define _GPIO_MOUSE_H 
     12345+ 
     12346+#define GPIO_MOUSE_POLARITY_ACT_HIGH   0x00 
     12347+#define GPIO_MOUSE_POLARITY_ACT_LOW    0x01 
     12348+ 
     12349+#define GPIO_MOUSE_PIN_UP      0 
     12350+#define GPIO_MOUSE_PIN_DOWN    1 
     12351+#define GPIO_MOUSE_PIN_LEFT    2 
     12352+#define GPIO_MOUSE_PIN_RIGHT   3 
     12353+#define GPIO_MOUSE_PIN_BLEFT   4 
     12354+#define GPIO_MOUSE_PIN_BMIDDLE 5 
     12355+#define GPIO_MOUSE_PIN_BRIGHT  6 
     12356+#define GPIO_MOUSE_PIN_MAX     7 
     12357+ 
     12358+/** 
     12359+ * struct gpio_mouse_platform_data 
     12360+ * @scan_ms: integer in ms specifying the scan periode. 
     12361+ * @polarity: Pin polarity, active high or low. 
     12362+ * @up: GPIO line for up value. 
     12363+ * @down: GPIO line for down value. 
     12364+ * @left: GPIO line for left value. 
     12365+ * @right: GPIO line for right value. 
     12366+ * @bleft: GPIO line for left button. 
     12367+ * @bmiddle: GPIO line for middle button. 
     12368+ * @bright: GPIO line for right button. 
     12369+ * 
     12370+ * This struct must be added to the platform_device in the board code. 
     12371+ * It is used by the gpio_mouse driver to setup GPIO lines and to 
     12372+ * calculate mouse movement. 
     12373+ */ 
     12374+struct gpio_mouse_platform_data { 
     12375+       int scan_ms; 
     12376+       int polarity; 
     12377+ 
     12378+       union { 
     12379+               struct { 
     12380+                       int up; 
     12381+                       int down; 
     12382+                       int left; 
     12383+                       int right; 
     12384+ 
     12385+                       int bleft; 
     12386+                       int bmiddle; 
     12387+                       int bright; 
     12388+               }; 
     12389+               int pins[GPIO_MOUSE_PIN_MAX]; 
     12390+       }; 
     12391+}; 
     12392+ 
     12393+#endif /* _GPIO_MOUSE_H */ 
    1106312394diff -x .git -Nur linux-2.6.22.1/include/linux/leds.h linux-avr32.git/include/linux/leds.h 
    1106412395--- linux-2.6.22.1/include/linux/leds.h 2007-07-10 20:56:30.000000000 +0200 
Note: See TracChangeset for help on using the changeset viewer.