From 2191315caf8a58fc3915bde8a4d585e7330b8908 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 5 Sep 2012 13:13:58 -0500 Subject: config: set ppp/peers/gsm ipcp-max-failure to 10 --- multitech/recipes/multitech/config/ppp/peers/gsm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'multitech') diff --git a/multitech/recipes/multitech/config/ppp/peers/gsm b/multitech/recipes/multitech/config/ppp/peers/gsm index f17fcff..d23957e 100644 --- a/multitech/recipes/multitech/config/ppp/peers/gsm +++ b/multitech/recipes/multitech/config/ppp/peers/gsm @@ -3,7 +3,7 @@ linkname ppp0 defaultroute replacedefaultroute usepeerdns -ipcp-max-failure 4 +ipcp-max-failure 10 ipcp-restart 10 noauth crtscts -- cgit v1.2.3 From 8b39664d5431900b2c8df25f3a3c88ec1fcab6f8 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Thu, 6 Sep 2012 17:50:25 -0500 Subject: linux-2.6.35: build ohci as a module for mt100eocg --- multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig | 2 +- multitech/recipes/linux/linux_2.6.35.bbappend | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig b/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig index 498d6d7..02e49eb 100644 --- a/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig +++ b/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig @@ -1399,7 +1399,7 @@ CONFIG_USB_MON=y # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP1760_HCD is not set # CONFIG_USB_ISP1362_HCD is not set -CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD=m # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y diff --git a/multitech/recipes/linux/linux_2.6.35.bbappend b/multitech/recipes/linux/linux_2.6.35.bbappend index 1ba0624..6b27b76 100644 --- a/multitech/recipes/linux/linux_2.6.35.bbappend +++ b/multitech/recipes/linux/linux_2.6.35.bbappend @@ -1,7 +1,7 @@ FILESEXTRA := "${THISDIR}" FILESPATHBASE =. "${FILESEXTRA}:" -PR .= ".corecdp9" +PR .= ".corecdp10" STABLEV = "14" SRC_URI_mtcdp = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ -- cgit v1.2.3 From 56fc81f583488837a184d49a0c84eff2a0fc07db Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 12 Sep 2012 08:53:22 -0500 Subject: corecdp: version 2.2.1 --- multitech/conf/distro/corecdp.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'multitech') diff --git a/multitech/conf/distro/corecdp.conf b/multitech/conf/distro/corecdp.conf index e411b6c..b5b337b 100644 --- a/multitech/conf/distro/corecdp.conf +++ b/multitech/conf/distro/corecdp.conf @@ -8,7 +8,7 @@ require conf/distro/angstrom-2010.x.conf DISTRO_NAME = "CoreCDP" DISTRO = "corecdp" -DISTRO_VERSION = "2.2.0" +DISTRO_VERSION = "2.2.1" DISTRO_PR = ".10" DISTRO_TYPE = "release" TARGET_VENDOR = "-corecdp" -- cgit v1.2.3 From d15ca5f3246184b4f3c6f8ac97092331fde8bb1f Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Fri, 14 Sep 2012 14:21:29 -0500 Subject: config: bump PR --- multitech/recipes/multitech/config_1.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'multitech') diff --git a/multitech/recipes/multitech/config_1.0.bb b/multitech/recipes/multitech/config_1.0.bb index 20b5de4..8d3ee99 100644 --- a/multitech/recipes/multitech/config_1.0.bb +++ b/multitech/recipes/multitech/config_1.0.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Provides default system config files and /var/config fs" SECTION = "base" LICENSE = "GPL" -PR = "r14" +PR = "r15" inherit update-rc.d -- cgit v1.2.3 From 47b4c0a25d51b4e25051720471df2dcd5820777a Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 17 Sep 2012 12:43:09 -0500 Subject: linux-2.6.35: remove linux-2.6.35-at91sam9g20-reset.patch Removing this patch because it has caused major reboot regressions compared to running without it. Though the patch is intended to improve reboot reliability, in our testing it has made it worse and is very unreliable. Reboot testing without the patch has shown no problems. --- multitech/recipes/linux/linux_2.6.35.bbappend | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'multitech') diff --git a/multitech/recipes/linux/linux_2.6.35.bbappend b/multitech/recipes/linux/linux_2.6.35.bbappend index 6b27b76..3177904 100644 --- a/multitech/recipes/linux/linux_2.6.35.bbappend +++ b/multitech/recipes/linux/linux_2.6.35.bbappend @@ -1,7 +1,7 @@ FILESEXTRA := "${THISDIR}" FILESPATHBASE =. "${FILESEXTRA}:" -PR .= ".corecdp10" +PR .= ".corecdp11" STABLEV = "14" SRC_URI_mtcdp = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ @@ -15,7 +15,6 @@ SRC_URI_mtcdp = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;n file://linux-2.6.32.3-atmel_serial_disable_hwhs.patch \ file://linux-2.6.35.14-option-zte.patch \ file://linux-2.6.32.3-option-telit.patch \ - file://linux-2.6.35-at91sam9g20-reset.patch \ " SRC_URI_mt100eocg = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ @@ -29,7 +28,6 @@ SRC_URI_mt100eocg = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.b file://linux-2.6.32.3-atmel_serial_disable_hwhs.patch \ file://linux-2.6.35.14-option-zte.patch \ file://linux-2.6.32.3-option-telit.patch \ - file://linux-2.6.35-at91sam9g20-reset.patch \ " # work around firmware/Makefile issue with make 3.82 -- cgit v1.2.3 From cfada554f818ef74076f83783306dd193f85f90b Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 17 Sep 2012 12:46:48 -0500 Subject: corecdp: version 2.2.2 --- multitech/conf/distro/corecdp.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'multitech') diff --git a/multitech/conf/distro/corecdp.conf b/multitech/conf/distro/corecdp.conf index b5b337b..b81d4d5 100644 --- a/multitech/conf/distro/corecdp.conf +++ b/multitech/conf/distro/corecdp.conf @@ -8,7 +8,7 @@ require conf/distro/angstrom-2010.x.conf DISTRO_NAME = "CoreCDP" DISTRO = "corecdp" -DISTRO_VERSION = "2.2.1" +DISTRO_VERSION = "2.2.2" DISTRO_PR = ".10" DISTRO_TYPE = "release" TARGET_VENDOR = "-corecdp" -- cgit v1.2.3 From e59b998916af81912f1c94b6252187b593885ada Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:00:05 -0500 Subject: conf/machine: add mt100eocg-pcie-dk --- multitech/conf/machine/mt100eocg-pcie-dk.conf | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 multitech/conf/machine/mt100eocg-pcie-dk.conf (limited to 'multitech') diff --git a/multitech/conf/machine/mt100eocg-pcie-dk.conf b/multitech/conf/machine/mt100eocg-pcie-dk.conf new file mode 100644 index 0000000..d7ace51 --- /dev/null +++ b/multitech/conf/machine/mt100eocg-pcie-dk.conf @@ -0,0 +1,29 @@ +#@TYPE: Machine +#@Name: Multi-Tech MT100EOCG PCIE Developer Kit +#@DESCRIPTION: Machine configuration for the MultiConnect OCG-E with PCIE-DK board + +TARGET_ARCH = "arm" + +PREFERRED_PROVIDER_virtual/kernel = "linux" + +PREFERRED_VERSION_linux = "2.6.39.4" +PREFERRED_VERSION_mts-io ?= "0.5.1" + +KERNEL_IMAGETYPE = "uImage" +UBOOT_MACHINE = "at91sam9g20ek_nandflash_config" + +PREFERRED_VERSION_at91bootstrap = "2.13" +PREFERRED_VERSION_u-boot = "1.3.4" + +#don't try to access tty1 +USE_VT = "0" + +MACHINE_FEATURES = "kernel26 ext2 usbhost usbgadget" +EXTRA_IMAGEDEPENDS += "at91bootstrap u-boot" + +# used by sysvinit_2 +SERIAL_CONSOLE = "115200 ttyS0" +IMAGE_FSTYPES ?= "jffs2" +EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n" + +require conf/machine/include/tune-arm926ejs.inc -- cgit v1.2.3 From 0495f93cc549bd71b74e8f1eaeeabc65a86fd03c Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:00:43 -0500 Subject: at91bootstrap: add mt100eocg-pcie-dk machine --- .../at91bootstrap-2.13/memory_bus_1.8v.patch | 22 ++++++ .../at91bootstrap-2.13/mt100eocg-pcie-dk/defconfig | 91 ++++++++++++++++++++++ .../mt100eocg/memory_bus_1.8v.patch | 22 ------ .../at91bootstrap/at91bootstrap_2.13.bbappend | 5 +- 4 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap-2.13/memory_bus_1.8v.patch create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg-pcie-dk/defconfig delete mode 100644 multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg/memory_bus_1.8v.patch (limited to 'multitech') diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-2.13/memory_bus_1.8v.patch b/multitech/recipes/at91bootstrap/at91bootstrap-2.13/memory_bus_1.8v.patch new file mode 100644 index 0000000..045f255 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap-2.13/memory_bus_1.8v.patch @@ -0,0 +1,22 @@ +Only in at91bootstrap-2.13/build: at91sam9g20nf +Only in at91bootstrap-2.13/config: .depend +Only in at91bootstrap-2.13: .config +diff -ru at91bootstrap-2.13/main.c at91bootstrap-2.13_new/main.c +--- at91bootstrap-2.13/main.c 2010-01-12 15:13:39.000000000 -0600 ++++ at91bootstrap-2.13_new/main.c 2011-03-08 06:26:35.463088000 -0600 +@@ -174,6 +174,14 @@ + user_hw_init(); + #endif + ++#ifdef CONFIG_USER_EBI_1V8 ++//This patch will configure the 9G20 to run a 1.8V memory bus ++ *((int *)AT91C_CCFG_EBICSA) &= ~(0x1 << 16); //1.8V bus ++#else ++ *((int *)AT91C_CCFG_EBICSA) |= (0x1 << 16); //3.3V bus ++#endif ++ ++ + #if defined(CONFIG_SDRAM) || defined(CONFIG_SDDRC) || defined(CONFIG_DDR2) + #if defined(CONFIG_LONG_TEST) + /* This will not work for the CAP9 where RAM in elsewhere */ +Only in at91bootstrap-2.13/result: at91sam9g20nf-nandflashboot-2.13-r0.map diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg-pcie-dk/defconfig b/multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg-pcie-dk/defconfig new file mode 100644 index 0000000..8338b3d --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg-pcie-dk/defconfig @@ -0,0 +1,91 @@ +# +# Automatically generated make config: don't edit +# Tue Jan 12 22:00:36 2010 +# +HAVE_DOT_CONFIG=y +CONFIG_BOARDNAME="at91sam9g20nf" +# CONFIG_AT91SAM9260EK is not set +# CONFIG_AT91SAM9261EK is not set +# CONFIG_AT91SAM9263EK is not set +# CONFIG_AT91SAM9RLEK is not set +# CONFIG_AT91SAM9XEEK is not set +# CONFIG_AT91SAM9G10EK is not set +CONFIG_AT91SAM9G20EK=y +# CONFIG_AT91SAM9G45EK is not set +# CONFIG_AT91SAM9G45EKES is not set +# CONFIG_AT91SAM9M10EK is not set +# CONFIG_AT91CAP9ADK is not set +# CONFIG_AT91CAP9STK is not set +# CONFIG_AFEB9260 is not set +CONFIG_CHIP="AT91SAM9G20" +CONFIG_BOARD="at91sam9g20ek" +CONFIG_MACH_TYPE="0x658" +CONFIG_LINK_ADDR="0x000000" +CONFIG_TOP_OF_MEMORY="0x301000" +CONFIG_BOOTSTRAP_MAXSIZE="13000" +# CONFIG_CRYSTAL_12_000MHZ is not set +# CONFIG_CRYSTAL_16_000MHZ is not set +# CONFIG_CRYSTAL_16_36766MHZ is not set +CONFIG_CRYSTAL_18_432MHZ=y +ALLOW_CRYSTAL_18_432MHZ=y +CONFIG_CRYSTAL="CRYSTAL_18_432MHZ" +# CONFIG_CPU_CLK_166MHZ is not set +# CONFIG_CPU_CLK_180MHZ is not set +# CONFIG_CPU_CLK_200MHZ is not set +# CONFIG_CPU_CLK_240MHZ is not set +# CONFIG_CPU_CLK_266MHZ is not set +CONFIG_CPU_CLK_400MHZ=y +ALLOW_CPU_CLK_400MHZ=y +# DISABLE_CPU_CLK_240MHZ is not set +# CONFIG_BUS_SPEED_83MHZ is not set +# CONFIG_BUS_SPEED_90MHZ is not set +# CONFIG_BUS_SPEED_100MHZ is not set +CONFIG_BUS_SPEED_133MHZ=y + +# +# Memory selection +# +CONFIG_SDRAM=y +# CONFIG_SDDRC is not set +# CONFIG_DDR2 is not set +ALLOW_DATAFLASH=y +# ALLOW_FLASH is not set +ALLOW_NANDFLASH=y +# ALLOW_SDCARD is not set +# ALLOW_PSRAM is not set +# ALLOW_SDRAM_16BIT is not set +# CONFIG_RAM_32MB is not set +CONFIG_RAM_64MB=y +# CONFIG_RAM_128MB is not set +# CONFIG_RAM_256MB is not set +# CONFIG_DATAFLASH is not set +# CONFIG_FLASH is not set +CONFIG_NANDFLASH=y +# CONFIG_SDCARD is not set +CONFIG_MEMORY="nandflash" +ALLOW_DATAFLASH_RECOVERY=y +ALLOW_BOOT_FROM_DATAFLASH_CS0=y +ALLOW_BOOT_FROM_DATAFLASH_CS1=y +DATAFLASHCARD_ON_CS0=y + +# +# NAND Flash configuration +# +# CONFIG_NANDFLASH_SMALL_BLOCKS is not set +CONFIG_PROJECT="nandflash" +CONFIG_LOAD_UBOOT=y +# CONFIG_LOAD_64KB is not set +# CONFIG_LOAD_1MB is not set +# CONFIG_LOAD_4MB is not set +CONFIG_IMG_ADDRESS="0x00020000" +CONFIG_IMG_SIZE="0x00040000" +CONFIG_JUMP_ADDR="0x23F00000" +CONFIG_APP_CHECK=y +# CONFIG_LONG_TEST is not set +CONFIG_DEBUG=y +CONFIG_VERBOSE=y +CONFIG_HW_INIT=y +# CONFIG_USER_HW_INIT is not set +# CONFIG_THUMB is not set +CONFIG_SX_AT91=y +CONFIG_RAW_AT91=y diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg/memory_bus_1.8v.patch b/multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg/memory_bus_1.8v.patch deleted file mode 100644 index 045f255..0000000 --- a/multitech/recipes/at91bootstrap/at91bootstrap-2.13/mt100eocg/memory_bus_1.8v.patch +++ /dev/null @@ -1,22 +0,0 @@ -Only in at91bootstrap-2.13/build: at91sam9g20nf -Only in at91bootstrap-2.13/config: .depend -Only in at91bootstrap-2.13: .config -diff -ru at91bootstrap-2.13/main.c at91bootstrap-2.13_new/main.c ---- at91bootstrap-2.13/main.c 2010-01-12 15:13:39.000000000 -0600 -+++ at91bootstrap-2.13_new/main.c 2011-03-08 06:26:35.463088000 -0600 -@@ -174,6 +174,14 @@ - user_hw_init(); - #endif - -+#ifdef CONFIG_USER_EBI_1V8 -+//This patch will configure the 9G20 to run a 1.8V memory bus -+ *((int *)AT91C_CCFG_EBICSA) &= ~(0x1 << 16); //1.8V bus -+#else -+ *((int *)AT91C_CCFG_EBICSA) |= (0x1 << 16); //3.3V bus -+#endif -+ -+ - #if defined(CONFIG_SDRAM) || defined(CONFIG_SDDRC) || defined(CONFIG_DDR2) - #if defined(CONFIG_LONG_TEST) - /* This will not work for the CAP9 where RAM in elsewhere */ -Only in at91bootstrap-2.13/result: at91sam9g20nf-nandflashboot-2.13-r0.map diff --git a/multitech/recipes/at91bootstrap/at91bootstrap_2.13.bbappend b/multitech/recipes/at91bootstrap/at91bootstrap_2.13.bbappend index 2bd3fd8..9b78b06 100644 --- a/multitech/recipes/at91bootstrap/at91bootstrap_2.13.bbappend +++ b/multitech/recipes/at91bootstrap/at91bootstrap_2.13.bbappend @@ -1,7 +1,7 @@ FILESEXTRA := "${THISDIR}" FILESPATHBASE =. "${FILESEXTRA}:" -PR .= ".corecdp3" +PR .= ".corecdp4" SRC_URI += "file://defconfig \ file://nand_ids_toshiba.patch \ @@ -11,3 +11,6 @@ SRC_URI += "file://defconfig \ # run memory bus at 1.8v for mt100eocg SRC_URI_append_mt100eocg = " file://memory_bus_1.8v.patch" AT91BOOTSTRAP_FLAGS_append_mt100eocg = " -DCONFIG_USER_EBI_1V8" + +SRC_URI_append_mt100eocg-pcie-dk = " file://memory_bus_1.8v.patch" +AT91BOOTSTRAP_FLAGS_append_mt100eocg-pcie-dk = " -DCONFIG_USER_EBI_1V8" -- cgit v1.2.3 From ba96af3d59f084542b18c17aa9caf368ce89ac4a Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:01:12 -0500 Subject: u-boot: add mt100eocg-pcie-dk machine --- .../u-boot-1.3.4/mt100eocg-pcie-dk/fw_env.config | 7 + .../mt100eocg-pcie-dk/u-boot-1.3.4-mts.patch | 3298 ++++++++++++++++++++ multitech/recipes/u-boot/u-boot_1.3.4.bb | 12 +- 3 files changed, 3308 insertions(+), 9 deletions(-) create mode 100644 multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/fw_env.config create mode 100644 multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/u-boot-1.3.4-mts.patch (limited to 'multitech') diff --git a/multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/fw_env.config b/multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/fw_env.config new file mode 100644 index 0000000..41b9605 --- /dev/null +++ b/multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/fw_env.config @@ -0,0 +1,7 @@ +# Configuration file for fw_{printenv,setenv} utility. +# Up to two entries are valid, in this case the redundant +# environment sector is assumed present. + +# MTD device name Device offset Env. size Flash sector size +/dev/mtd3 0x0000 0x20000 0x20000 +/dev/mtd4 0x0000 0x20000 0x20000 diff --git a/multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/u-boot-1.3.4-mts.patch b/multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/u-boot-1.3.4-mts.patch new file mode 100644 index 0000000..4d05ba3 --- /dev/null +++ b/multitech/recipes/u-boot/u-boot-1.3.4/mt100eocg-pcie-dk/u-boot-1.3.4-mts.patch @@ -0,0 +1,3298 @@ +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9260ek/at91sam9260ek.c u-boot-1.3.4/board/atmel/at91sam9260ek/at91sam9260ek.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9260ek/at91sam9260ek.c 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/board/atmel/at91sam9260ek/at91sam9260ek.c 2010-03-25 16:45:59.000000000 -0500 +@@ -125,6 +125,8 @@ static void at91sam9260ek_spi_hw_init(vo + #ifdef CONFIG_MACB + static void at91sam9260ek_macb_hw_init(void) + { ++ unsigned long rstc; ++ + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_EMAC); + +@@ -147,6 +149,8 @@ static void at91sam9260ek_macb_hw_init(v + pin_to_mask(AT91_PIN_PA28), + pin_to_controller(AT91_PIN_PA0) + PIO_PUDR); + ++ rstc = at91_sys_read(AT91_RSTC_MR); ++ + /* Need to reset PHY -> 500ms reset */ + at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | + (AT91_RSTC_ERSTL & (0x0D << 8)) | +@@ -159,9 +163,8 @@ static void at91sam9260ek_macb_hw_init(v + + /* Restore NRST value */ + at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | +- (AT91_RSTC_ERSTL & (0x0 << 8)) | ++ (rstc) | + AT91_RSTC_URSTEN); +- + /* Re-enable pull-up */ + writel(pin_to_mask(AT91_PIN_PA14) | + pin_to_mask(AT91_PIN_PA15) | +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9263ek/at91sam9263ek.c u-boot-1.3.4/board/atmel/at91sam9263ek/at91sam9263ek.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9263ek/at91sam9263ek.c 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/board/atmel/at91sam9263ek/at91sam9263ek.c 2010-03-25 16:45:59.000000000 -0500 +@@ -128,6 +128,8 @@ static void at91sam9263ek_spi_hw_init(vo + #ifdef CONFIG_MACB + static void at91sam9263ek_macb_hw_init(void) + { ++ unsigned long rstc; ++ + /* Enable clock */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC); + +@@ -145,6 +147,8 @@ static void at91sam9263ek_macb_hw_init(v + pin_to_mask(AT91_PIN_PE26), + pin_to_controller(AT91_PIN_PE0) + PIO_PUDR); + ++ rstc = at91_sys_read(AT91_RSTC_MR); ++ + /* Need to reset PHY -> 500ms reset */ + at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | + (AT91_RSTC_ERSTL & (0x0D << 8)) | +@@ -157,7 +161,7 @@ static void at91sam9263ek_macb_hw_init(v + + /* Restore NRST value */ + at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | +- (AT91_RSTC_ERSTL & (0x0 << 8)) | ++ (rstc) | + AT91_RSTC_URSTEN); + + /* Re-enable pull-up */ +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/at91sam9g10ek.c u-boot-1.3.4/board/atmel/at91sam9g10ek/at91sam9g10ek.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/at91sam9g10ek.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g10ek/at91sam9g10ek.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,281 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_DRIVER_DM9000) ++#include ++#endif ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++/* ------------------------------------------------------------------------- */ ++/* ++ * Miscelaneous platform dependent initialisations ++ */ ++ ++static void at91sam9g10ek_serial_hw_init(void) ++{ ++#ifdef CONFIG_USART0 ++ at91_set_A_periph(AT91_PIN_PC8, 1); /* TXD0 */ ++ at91_set_A_periph(AT91_PIN_PC9, 0); /* RXD0 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US0); ++#endif ++ ++#ifdef CONFIG_USART1 ++ at91_set_A_periph(AT91_PIN_PC12, 1); /* TXD1 */ ++ at91_set_A_periph(AT91_PIN_PC13, 0); /* RXD1 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US1); ++#endif ++ ++#ifdef CONFIG_USART2 ++ at91_set_A_periph(AT91_PIN_PC14, 1); /* TXD2 */ ++ at91_set_A_periph(AT91_PIN_PC15, 0); /* RXD2 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US2); ++#endif ++ ++#ifdef CONFIG_USART3 /* DBGU */ ++ at91_set_A_periph(AT91_PIN_PA9, 0); /* DRXD */ ++ at91_set_A_periph(AT91_PIN_PA10, 1); /* DTXD */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); ++#endif ++} ++ ++#ifdef CONFIG_CMD_NAND ++static void at91sam9g10ek_nand_hw_init(void) ++{ ++ unsigned long csa; ++ ++ /* Enable CS3 */ ++ csa = at91_sys_read(AT91_MATRIX_EBICSA); ++ at91_sys_write(AT91_MATRIX_EBICSA, ++ csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); ++ ++ /* Configure SMC CS3 for NAND/SmartMedia */ ++ at91_sys_write(AT91_SMC_SETUP(3), ++ /* ++ AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) | ++ AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0)); ++ */ ++ AT91_SMC_NWESETUP_(2) | AT91_SMC_NCS_WRSETUP_(0) | ++ AT91_SMC_NRDSETUP_(2) | AT91_SMC_NCS_RDSETUP_(0)); ++ at91_sys_write(AT91_SMC_PULSE(3), ++ /* ++ AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) | ++ AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3)); ++ */ ++ AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(7) | ++ AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(7)); ++ at91_sys_write(AT91_SMC_CYCLE(3), ++ /* ++ AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5)); ++ */ ++ AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(7)); ++ at91_sys_write(AT91_SMC_MODE(3), ++ AT91_SMC_READMODE | AT91_SMC_WRITEMODE | ++ AT91_SMC_EXNWMODE_DISABLE | ++#ifdef CFG_NAND_DBW_16 ++ AT91_SMC_DBW_16 | ++#else /* CFG_NAND_DBW_8 */ ++ AT91_SMC_DBW_8 | ++#endif ++ AT91_SMC_TDF_(2)); ++ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_PIOC); ++ ++ /* Configure RDY/BSY */ ++ at91_set_gpio_input(AT91_PIN_PC15, 1); ++ ++ /* Enable NandFlash */ ++ at91_set_gpio_output(AT91_PIN_PC14, 1); ++ ++ at91_set_A_periph(AT91_PIN_PC0, 0); /* NANDOE */ ++ at91_set_A_periph(AT91_PIN_PC1, 0); /* NANDWE */ ++} ++#endif ++ ++#ifdef CONFIG_HAS_DATAFLASH ++static void at91sam9g10ek_spi_hw_init(void) ++{ ++ at91_set_A_periph(AT91_PIN_PA3, 0); /* SPI0_NPCS0 */ ++ ++ at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ ++ at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ ++ at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ ++ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_SPI0); ++} ++#endif ++ ++#ifdef CONFIG_DRIVER_DM9000 ++static void at91sam9g10ek_dm9000_hw_init(void) ++{ ++ /* Configure SMC CS2 for DM9000 */ ++ /* ++ at91_sys_write(AT91_SMC_SETUP(2), ++ AT91_SMC_NWESETUP_(2) | AT91_SMC_NCS_WRSETUP_(0) | ++ AT91_SMC_NRDSETUP_(2) | AT91_SMC_NCS_RDSETUP_(0)); ++ at91_sys_write(AT91_SMC_PULSE(2), ++ AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(8) | ++ AT91_SMC_NRDPULSE_(4) | AT91_SMC_NCS_RDPULSE_(8)); ++ at91_sys_write(AT91_SMC_CYCLE(2), ++ AT91_SMC_NWECYCLE_(16) | AT91_SMC_NRDCYCLE_(16)); ++ */ ++ at91_sys_write(AT91_SMC_SETUP(2), ++ AT91_SMC_NWESETUP_(3) | AT91_SMC_NCS_WRSETUP_(0) | ++ AT91_SMC_NRDSETUP_(3) | AT91_SMC_NCS_RDSETUP_(0)); ++ at91_sys_write(AT91_SMC_PULSE(2), ++ AT91_SMC_NWEPULSE_(6) | AT91_SMC_NCS_WRPULSE_(8) | ++ AT91_SMC_NRDPULSE_(6) | AT91_SMC_NCS_RDPULSE_(8)); ++ at91_sys_write(AT91_SMC_CYCLE(2), ++ AT91_SMC_NWECYCLE_(20) | AT91_SMC_NRDCYCLE_(20)); ++ at91_sys_write(AT91_SMC_MODE(2), ++ AT91_SMC_READMODE | AT91_SMC_WRITEMODE | ++ AT91_SMC_EXNWMODE_DISABLE | ++ AT91_SMC_BAT_WRITE | AT91_SMC_DBW_16 | ++ AT91_SMC_TDF_(1)); ++ ++ /* Configure Reset signal as output */ ++ at91_set_gpio_output(AT91_PIN_PC10, 0); ++ ++ /* Configure Interrupt pin as input, no pull-up */ ++ at91_set_gpio_input(AT91_PIN_PC11, 0); ++} ++#endif ++ ++#ifdef CONFIG_LCD ++vidinfo_t panel_info = { ++ vl_col: 240, ++ vl_row: 320, ++ vl_clk: 4965000, ++ vl_sync: ATMEL_LCDC_INVLINE_INVERTED | ++ ATMEL_LCDC_INVFRAME_INVERTED, ++ vl_bpix: 3, ++ vl_tft: 1, ++ vl_hsync_len: 5, ++ vl_left_margin: 1, ++ vl_right_margin:33, ++ vl_vsync_len: 1, ++ vl_upper_margin:1, ++ vl_lower_margin:0, ++ mmio: AT91SAM9261_LCDC_BASE, ++}; ++ ++void lcd_enable(void) ++{ ++ at91_set_gpio_value(AT91_PIN_PA12, 0); /* power up */ ++} ++ ++void lcd_disable(void) ++{ ++ at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */ ++} ++ ++static void at91sam9g10ek_lcd_hw_init(void) ++{ ++ at91_set_A_periph(AT91_PIN_PB1, 0); /* LCDHSYNC */ ++ at91_set_A_periph(AT91_PIN_PB2, 0); /* LCDDOTCK */ ++ at91_set_A_periph(AT91_PIN_PB3, 0); /* LCDDEN */ ++ at91_set_A_periph(AT91_PIN_PB4, 0); /* LCDCC */ ++ at91_set_A_periph(AT91_PIN_PB7, 0); /* LCDD2 */ ++ at91_set_A_periph(AT91_PIN_PB8, 0); /* LCDD3 */ ++ at91_set_A_periph(AT91_PIN_PB9, 0); /* LCDD4 */ ++ at91_set_A_periph(AT91_PIN_PB10, 0); /* LCDD5 */ ++ at91_set_A_periph(AT91_PIN_PB11, 0); /* LCDD6 */ ++ at91_set_A_periph(AT91_PIN_PB12, 0); /* LCDD7 */ ++ at91_set_A_periph(AT91_PIN_PB15, 0); /* LCDD10 */ ++ at91_set_A_periph(AT91_PIN_PB16, 0); /* LCDD11 */ ++ at91_set_A_periph(AT91_PIN_PB17, 0); /* LCDD12 */ ++ at91_set_A_periph(AT91_PIN_PB18, 0); /* LCDD13 */ ++ at91_set_A_periph(AT91_PIN_PB19, 0); /* LCDD14 */ ++ at91_set_A_periph(AT91_PIN_PB20, 0); /* LCDD15 */ ++ at91_set_B_periph(AT91_PIN_PB23, 0); /* LCDD18 */ ++ at91_set_B_periph(AT91_PIN_PB24, 0); /* LCDD19 */ ++ at91_set_B_periph(AT91_PIN_PB25, 0); /* LCDD20 */ ++ at91_set_B_periph(AT91_PIN_PB26, 0); /* LCDD21 */ ++ at91_set_B_periph(AT91_PIN_PB27, 0); /* LCDD22 */ ++ at91_set_B_periph(AT91_PIN_PB28, 0); /* LCDD23 */ ++ ++ at91_sys_write(AT91_PMC_SCER, AT91_PMC_HCK1); ++ ++ /* gd->fb_base = AT91SAM9261_SRAM_BASE; */ ++ gd->fb_base = 0x23E00000; ++ ++} ++#endif ++ ++int board_init(void) ++{ ++ /* Enable Ctrlc */ ++ console_init_f(); ++ ++ /* arch number of AT91SAM9G10EK-Board */ ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G10EK; ++ /* adress of boot parameters */ ++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; ++ ++ at91sam9g10ek_serial_hw_init(); ++#ifdef CONFIG_CMD_NAND ++ at91sam9g10ek_nand_hw_init(); ++#endif ++#ifdef CONFIG_HAS_DATAFLASH ++ at91sam9g10ek_spi_hw_init(); ++#endif ++#ifdef CONFIG_DRIVER_DM9000 ++ at91sam9g10ek_dm9000_hw_init(); ++#endif ++#ifdef CONFIG_LCD ++ at91sam9g10ek_lcd_hw_init(); ++#endif ++ return 0; ++} ++ ++int dram_init(void) ++{ ++ gd->bd->bi_dram[0].start = PHYS_SDRAM; ++ gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; ++ return 0; ++} ++ ++#ifdef CONFIG_RESET_PHY_R ++void reset_phy(void) ++{ ++#ifdef CONFIG_DRIVER_DM9000 ++ /* ++ * Initialize ethernet HW addr prior to starting Linux, ++ * needed for nfsroot ++ */ ++ eth_init(gd->bd); ++#endif ++} ++#endif +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/config.mk u-boot-1.3.4/board/atmel/at91sam9g10ek/config.mk +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/config.mk 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g10ek/config.mk 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1 @@ ++TEXT_BASE = 0x23f00000 +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/led.c u-boot-1.3.4/board/atmel/at91sam9g10ek/led.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/led.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g10ek/led.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,78 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define RED_LED AT91_PIN_PA23 /* this is the power led */ ++#define GREEN_LED AT91_PIN_PA13 /* this is the user1 led */ ++#define YELLOW_LED AT91_PIN_PA14 /* this is the user2 led */ ++ ++void red_LED_on(void) ++{ ++ at91_set_gpio_value(RED_LED, 1); ++} ++ ++void red_LED_off(void) ++{ ++ at91_set_gpio_value(RED_LED, 0); ++} ++ ++void green_LED_on(void) ++{ ++ at91_set_gpio_value(GREEN_LED, 0); ++} ++ ++void green_LED_off(void) ++{ ++ at91_set_gpio_value(GREEN_LED, 1); ++} ++ ++void yellow_LED_on(void) ++{ ++ at91_set_gpio_value(YELLOW_LED, 0); ++} ++ ++void yellow_LED_off(void) ++{ ++ at91_set_gpio_value(YELLOW_LED, 1); ++} ++ ++ ++void coloured_LED_init(void) ++{ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9261_ID_PIOA); ++ ++ at91_set_gpio_output(RED_LED, 1); ++ at91_set_gpio_output(GREEN_LED, 1); ++ at91_set_gpio_output(YELLOW_LED, 1); ++ ++ at91_set_gpio_value(RED_LED, 0); ++ at91_set_gpio_value(GREEN_LED, 1); ++ at91_set_gpio_value(YELLOW_LED, 1); ++} +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/Makefile u-boot-1.3.4/board/atmel/at91sam9g10ek/Makefile +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/Makefile 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g10ek/Makefile 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,57 @@ ++# ++# (C) Copyright 2003-2008 ++# Wolfgang Denk, DENX Software Engineering, wd@denx.de. ++# ++# (C) Copyright 2008 ++# Stelian Pop ++# Lead Tech Design ++# ++# See file CREDITS for list of people who contributed to this ++# project. ++# ++# 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 option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# 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., 59 Temple Place, Suite 330, Boston, ++# MA 02111-1307 USA ++# ++ ++include $(TOPDIR)/config.mk ++ ++LIB = $(obj)lib$(BOARD).a ++ ++COBJS-y += at91sam9g10ek.o ++COBJS-y += led.o ++COBJS-y += partition.o ++COBJS-$(CONFIG_CMD_NAND) += nand.o ++ ++SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) ++OBJS := $(addprefix $(obj),$(COBJS-y)) ++SOBJS := $(addprefix $(obj),$(SOBJS)) ++ ++$(LIB): $(obj).depend $(OBJS) $(SOBJS) ++ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) ++ ++clean: ++ rm -f $(SOBJS) $(OBJS) ++ ++distclean: clean ++ rm -f $(LIB) core *.bak $(obj).depend ++ ++######################################################################### ++ ++# defines $(obj).depend target ++include $(SRCTREE)/rules.mk ++ ++sinclude $(obj).depend ++ ++######################################################################### +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/nand.c u-boot-1.3.4/board/atmel/at91sam9g10ek/nand.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/nand.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g10ek/nand.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,79 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* ++ * hardware specific access to control-lines ++ */ ++#define MASK_ALE (1 << 22) /* our ALE is AD22 */ ++#define MASK_CLE (1 << 21) /* our CLE is AD21 */ ++ ++static void at91sam9261ek_nand_hwcontrol(struct mtd_info *mtd, int cmd) ++{ ++ struct nand_chip *this = mtd->priv; ++ ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; ++ ++ IO_ADDR_W &= ~(MASK_ALE|MASK_CLE); ++ switch (cmd) { ++ case NAND_CTL_SETCLE: ++ IO_ADDR_W |= MASK_CLE; ++ break; ++ case NAND_CTL_SETALE: ++ IO_ADDR_W |= MASK_ALE; ++ break; ++ case NAND_CTL_CLRNCE: ++ at91_set_gpio_value(AT91_PIN_PC14, 1); ++ break; ++ case NAND_CTL_SETNCE: ++ at91_set_gpio_value(AT91_PIN_PC14, 0); ++ break; ++ } ++ this->IO_ADDR_W = (void *) IO_ADDR_W; ++} ++ ++static int at91sam9261ek_nand_ready(struct mtd_info *mtd) ++{ ++ return at91_get_gpio_value(AT91_PIN_PC15); ++} ++ ++int board_nand_init(struct nand_chip *nand) ++{ ++ nand->eccmode = NAND_ECC_SOFT; ++#ifdef CFG_NAND_DBW_16 ++ nand->options = NAND_BUSWIDTH_16; ++#endif ++ nand->hwcontrol = at91sam9261ek_nand_hwcontrol; ++ nand->dev_ready = at91sam9261ek_nand_ready; ++ nand->chip_delay = 20; ++ ++ return 0; ++} +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/partition.c u-boot-1.3.4/board/atmel/at91sam9g10ek/partition.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g10ek/partition.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g10ek/partition.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,40 @@ ++/* ++ * (C) Copyright 2008 ++ * Ulf Samuelsson ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ */ ++#include ++#include ++#include ++#include ++ ++AT91S_DATAFLASH_INFO dataflash_info[CFG_MAX_DATAFLASH_BANKS]; ++ ++struct dataflash_addr cs[CFG_MAX_DATAFLASH_BANKS] = { ++ {CFG_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */ ++ {CFG_DATAFLASH_LOGIC_ADDR_CS3, 3} ++}; ++ ++/*define the area offsets*/ ++dataflash_protect_t area_list[NB_DATAFLASH_AREA] = { ++ {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"}, ++ {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"}, ++ {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"}, ++ {0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0, "Kernel"}, ++ {0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0, "FS"}, ++}; +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/at91sam9g20ek.c u-boot-1.3.4/board/atmel/at91sam9g20ek/at91sam9g20ek.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/at91sam9g20ek.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g20ek/at91sam9g20ek.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,258 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB) ++#include ++#endif ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++/* ------------------------------------------------------------------------- */ ++/* ++ * Miscelaneous platform dependent initialisations ++ */ ++ ++static void at91sam9g20ek_serial_hw_init(void) ++{ ++#ifdef CONFIG_USART0 ++ at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD0 */ ++ at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD0 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US0); ++#endif ++ ++#ifdef CONFIG_USART1 ++ at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD1 */ ++ at91_set_A_periph(AT91_PIN_PB7, 0); /* RXD1 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US1); ++#endif ++ ++#ifdef CONFIG_USART2 ++ at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD2 */ ++ at91_set_A_periph(AT91_PIN_PB9, 0); /* RXD2 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US2); ++#endif ++ ++#ifdef CONFIG_USART3 /* DBGU */ ++ at91_set_A_periph(AT91_PIN_PB14, 0); /* DRXD */ ++ at91_set_A_periph(AT91_PIN_PB15, 1); /* DTXD */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); ++#endif ++} ++ ++#ifdef CONFIG_CMD_NAND ++static void at91sam9g20ek_nand_hw_init(void) ++{ ++ unsigned long csa; ++ ++ /* Enable CS3 */ ++ csa = at91_sys_read(AT91_MATRIX_EBICSA); ++ at91_sys_write(AT91_MATRIX_EBICSA, ++ csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA); ++ ++ /* Configure SMC CS3 for NAND/SmartMedia */ ++ at91_sys_write(AT91_SMC_SETUP(3), ++ AT91_SMC_NWESETUP_(2) | AT91_SMC_NCS_WRSETUP_(0) | ++ AT91_SMC_NRDSETUP_(2) | AT91_SMC_NCS_RDSETUP_(0)); ++ at91_sys_write(AT91_SMC_PULSE(3), ++ AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(3) | ++ AT91_SMC_NRDPULSE_(4) | AT91_SMC_NCS_RDPULSE_(3)); ++ at91_sys_write(AT91_SMC_CYCLE(3), ++ AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(7)); ++ at91_sys_write(AT91_SMC_MODE(3), ++ AT91_SMC_READMODE | AT91_SMC_WRITEMODE | ++ AT91_SMC_EXNWMODE_DISABLE | ++#ifdef CFG_NAND_DBW_16 ++ AT91_SMC_DBW_16 | ++#else /* CFG_NAND_DBW_8 */ ++ AT91_SMC_DBW_8 | ++#endif ++ AT91_SMC_TDF_(3)); ++ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOC); ++ ++ /* Configure RDY/BSY */ ++ at91_set_gpio_input(AT91_PIN_PC13, 1); ++ ++ /* Enable NandFlash */ ++ at91_set_gpio_output(AT91_PIN_PC14, 1); ++} ++#endif ++ ++#ifdef CONFIG_HAS_DATAFLASH ++static void at91sam9g20ek_spi_hw_init(void) ++{ ++ at91_set_A_periph(AT91_PIN_PA3, 0); /* SPI0_NPCS0 */ ++ at91_set_B_periph(AT91_PIN_PC11, 0); /* SPI0_NPCS1 */ ++ ++ at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */ ++ at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */ ++ at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */ ++ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_SPI0); ++} ++#endif ++ ++#ifdef CONFIG_MACB ++static void at91sam9g20ek_macb_hw_init(void) ++{ ++ unsigned long rstc; ++ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_EMAC); ++ ++ /* ++ * Disable pull-up on: ++ * RXDV (PA17) => PHY normal mode (not Test mode) ++ * ERX0 (PA14) => PHY ADDR0 ++ * ERX1 (PA15) => PHY ADDR1 ++ * ERX2 (PA25) => PHY ADDR2 ++ * ERX3 (PA26) => PHY ADDR3 ++ * ECRS (PA28) => PHY ADDR4 => PHYADDR = 0x0 ++ * ++ * PHY has internal pull-down ++ */ ++ writel(pin_to_mask(AT91_PIN_PA14) | ++ pin_to_mask(AT91_PIN_PA15) | ++ pin_to_mask(AT91_PIN_PA17) | ++ pin_to_mask(AT91_PIN_PA25) | ++ pin_to_mask(AT91_PIN_PA26) | ++ pin_to_mask(AT91_PIN_PA28), ++ pin_to_controller(AT91_PIN_PA0) + PIO_PUDR); ++ ++ rstc = at91_sys_read(AT91_RSTC_MR); ++ ++ /* Need to reset PHY -> 500ms reset */ ++ at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | ++ (AT91_RSTC_ERSTL & (0x0D << 8)) | ++ AT91_RSTC_URSTEN); ++ ++ at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_EXTRST); ++ ++ /* Wait for end hardware reset */ ++ while (!(at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_NRSTL)); ++ ++ /* Restore NRST value */ ++ at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | ++ (rstc) | ++ AT91_RSTC_URSTEN); ++ ++ /* Re-enable pull-up */ ++ writel(pin_to_mask(AT91_PIN_PA14) | ++ pin_to_mask(AT91_PIN_PA15) | ++ pin_to_mask(AT91_PIN_PA17) | ++ pin_to_mask(AT91_PIN_PA25) | ++ pin_to_mask(AT91_PIN_PA26) | ++ pin_to_mask(AT91_PIN_PA28), ++ pin_to_controller(AT91_PIN_PA0) + PIO_PUER); ++ ++ at91_set_A_periph(AT91_PIN_PA19, 0); /* ETXCK_EREFCK */ ++ at91_set_A_periph(AT91_PIN_PA17, 0); /* ERXDV */ ++ at91_set_A_periph(AT91_PIN_PA14, 0); /* ERX0 */ ++ at91_set_A_periph(AT91_PIN_PA15, 0); /* ERX1 */ ++ at91_set_A_periph(AT91_PIN_PA18, 0); /* ERXER */ ++ at91_set_A_periph(AT91_PIN_PA16, 0); /* ETXEN */ ++ at91_set_A_periph(AT91_PIN_PA12, 0); /* ETX0 */ ++ at91_set_A_periph(AT91_PIN_PA13, 0); /* ETX1 */ ++ at91_set_A_periph(AT91_PIN_PA21, 0); /* EMDIO */ ++ at91_set_A_periph(AT91_PIN_PA20, 0); /* EMDC */ ++ ++#ifndef CONFIG_RMII ++ at91_set_B_periph(AT91_PIN_PA28, 0); /* ECRS */ ++ at91_set_B_periph(AT91_PIN_PA29, 0); /* ECOL */ ++ at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ ++ at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ ++ at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ ++#if defined(CONFIG_AT91SAM9G20EK) || defined(CONFIG_AT91SAM9G20EK_2MMC) ++ /* ++ * use PA10, PA11 for ETX2, ETX3. ++ * PA23 and PA24 are for TWI EEPROM ++ */ ++ at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ ++ at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ ++#else ++ at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ ++ at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ ++#endif ++ at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ ++#endif ++ ++} ++#endif ++ ++int board_init(void) ++{ ++ /* Enable Ctrlc */ ++ console_init_f(); ++ ++ /* arch number of AT91SAM9G20EK-Board */ ++#ifdef CONFIG_AT91SAM9G20EK_2MMC ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK_2MMC; ++#else ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK; ++#endif ++ /* adress of boot parameters */ ++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; ++ ++ at91sam9g20ek_serial_hw_init(); ++#ifdef CONFIG_CMD_NAND ++ at91sam9g20ek_nand_hw_init(); ++#endif ++#ifdef CONFIG_HAS_DATAFLASH ++ at91sam9g20ek_spi_hw_init(); ++#endif ++#ifdef CONFIG_MACB ++ at91sam9g20ek_macb_hw_init(); ++#endif ++ ++ return 0; ++} ++ ++int dram_init(void) ++{ ++ gd->bd->bi_dram[0].start = PHYS_SDRAM; ++ gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; ++ return 0; ++} ++ ++#ifdef CONFIG_RESET_PHY_R ++void reset_phy(void) ++{ ++#ifdef CONFIG_MACB ++ /* ++ * Initialize ethernet HW addr prior to starting Linux, ++ * needed for nfsroot ++ */ ++ eth_init(gd->bd); ++#endif ++} ++#endif +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/config.mk u-boot-1.3.4/board/atmel/at91sam9g20ek/config.mk +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/config.mk 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g20ek/config.mk 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1 @@ ++TEXT_BASE = 0x23f00000 +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/led.c u-boot-1.3.4/board/atmel/at91sam9g20ek/led.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/led.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g20ek/led.c 2010-03-25 18:48:37.000000000 -0500 +@@ -0,0 +1,69 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#ifdef CONFIG_AT91SAM9G20EK_2MMC ++#define RED_LED AT91_PIN_PB31 /* this is the power led */ ++#define GREEN_LED AT91_PIN_PB30 /* this is the user led */ ++#else ++#define RED_LED AT91_PIN_PA31 /* this is the power led */ ++#define GREEN_LED AT91_PIN_PA30 /* this is the user led */ ++#endif ++ ++void red_LED_on(void) ++{ ++ at91_set_gpio_value(RED_LED, 1); ++} ++ ++void red_LED_off(void) ++{ ++ at91_set_gpio_value(RED_LED, 0); ++} ++ ++void green_LED_on(void) ++{ ++ at91_set_gpio_value(GREEN_LED, 0); ++} ++ ++void green_LED_off(void) ++{ ++ at91_set_gpio_value(GREEN_LED, 1); ++} ++ ++void coloured_LED_init(void) ++{ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA); ++ ++ at91_set_gpio_output(RED_LED, 1); ++ at91_set_gpio_output(GREEN_LED, 1); ++ ++ at91_set_gpio_value(RED_LED, 0); ++ at91_set_gpio_value(GREEN_LED, 1); ++} +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/Makefile u-boot-1.3.4/board/atmel/at91sam9g20ek/Makefile +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/Makefile 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g20ek/Makefile 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,57 @@ ++# ++# (C) Copyright 2003-2008 ++# Wolfgang Denk, DENX Software Engineering, wd@denx.de. ++# ++# (C) Copyright 2008 ++# Stelian Pop ++# Lead Tech Design ++# ++# See file CREDITS for list of people who contributed to this ++# project. ++# ++# 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 option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# 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., 59 Temple Place, Suite 330, Boston, ++# MA 02111-1307 USA ++# ++ ++include $(TOPDIR)/config.mk ++ ++LIB = $(obj)lib$(BOARD).a ++ ++COBJS-y += at91sam9g20ek.o ++COBJS-y += led.o ++COBJS-y += partition.o ++COBJS-$(CONFIG_CMD_NAND) += nand.o ++ ++SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) ++OBJS := $(addprefix $(obj),$(COBJS-y)) ++SOBJS := $(addprefix $(obj),$(SOBJS)) ++ ++$(LIB): $(obj).depend $(OBJS) $(SOBJS) ++ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) ++ ++clean: ++ rm -f $(SOBJS) $(OBJS) ++ ++distclean: clean ++ rm -f $(LIB) core *.bak $(obj).depend ++ ++######################################################################### ++ ++# defines $(obj).depend target ++include $(SRCTREE)/rules.mk ++ ++sinclude $(obj).depend ++ ++######################################################################### +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/nand.c u-boot-1.3.4/board/atmel/at91sam9g20ek/nand.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/nand.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g20ek/nand.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,79 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* ++ * hardware specific access to control-lines ++ */ ++#define MASK_ALE (1 << 21) /* our ALE is AD21 */ ++#define MASK_CLE (1 << 22) /* our CLE is AD22 */ ++ ++static void at91sam9g20ek_nand_hwcontrol(struct mtd_info *mtd, int cmd) ++{ ++ struct nand_chip *this = mtd->priv; ++ ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; ++ ++ IO_ADDR_W &= ~(MASK_ALE|MASK_CLE); ++ switch (cmd) { ++ case NAND_CTL_SETCLE: ++ IO_ADDR_W |= MASK_CLE; ++ break; ++ case NAND_CTL_SETALE: ++ IO_ADDR_W |= MASK_ALE; ++ break; ++ case NAND_CTL_CLRNCE: ++ at91_set_gpio_value(AT91_PIN_PC14, 1); ++ break; ++ case NAND_CTL_SETNCE: ++ at91_set_gpio_value(AT91_PIN_PC14, 0); ++ break; ++ } ++ this->IO_ADDR_W = (void *) IO_ADDR_W; ++} ++ ++static int at91sam9g20ek_nand_ready(struct mtd_info *mtd) ++{ ++ return at91_get_gpio_value(AT91_PIN_PC13); ++} ++ ++int board_nand_init(struct nand_chip *nand) ++{ ++ nand->eccmode = NAND_ECC_SOFT; ++#ifdef CFG_NAND_DBW_16 ++ nand->options = NAND_BUSWIDTH_16; ++#endif ++ nand->hwcontrol = at91sam9g20ek_nand_hwcontrol; ++ nand->dev_ready = at91sam9g20ek_nand_ready; ++ nand->chip_delay = 20; ++ ++ return 0; ++} +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/partition.c u-boot-1.3.4/board/atmel/at91sam9g20ek/partition.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9g20ek/partition.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9g20ek/partition.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,40 @@ ++/* ++ * (C) Copyright 2008 ++ * Ulf Samuelsson ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ */ ++#include ++#include ++#include ++#include ++ ++AT91S_DATAFLASH_INFO dataflash_info[CFG_MAX_DATAFLASH_BANKS]; ++ ++struct dataflash_addr cs[CFG_MAX_DATAFLASH_BANKS] = { ++ {CFG_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */ ++ {CFG_DATAFLASH_LOGIC_ADDR_CS1, 1} ++}; ++ ++/*define the area offsets*/ ++dataflash_protect_t area_list[NB_DATAFLASH_AREA] = { ++ {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"}, ++ {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"}, ++ {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"}, ++ {0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0, "Kernel"}, ++ {0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0, "FS"}, ++}; +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c u-boot-1.3.4/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,324 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB) ++#include ++#endif ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++/* ------------------------------------------------------------------------- */ ++/* ++ * Miscelaneous platform dependent initialisations ++ */ ++ ++static void at91samm10g45ek_serial_hw_init(void) ++{ ++#ifdef CONFIG_USART0 ++ at91_set_A_periph(AT91_PIN_PB19, 1); /* TXD0 */ ++ at91_set_A_periph(AT91_PIN_PB18, 0); /* RXD0 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US0); ++#endif ++ ++#ifdef CONFIG_USART1 ++ at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD1 */ ++ at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD1 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US1); ++#endif ++ ++#ifdef CONFIG_USART2 ++ at91_set_A_periph(AT91_PIN_PD6, 1); /* TXD2 */ ++ at91_set_A_periph(AT91_PIN_PD7, 0); /* RXD2 */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US2); ++#endif ++ ++#ifdef CONFIG_USART3 /* DBGU */ ++ at91_set_A_periph(AT91_PIN_PB12, 0); /* DRXD */ ++ at91_set_A_periph(AT91_PIN_PB13, 1); /* DTXD */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); ++#endif ++} ++ ++#ifdef CONFIG_CMD_NAND ++static void at91samm10g45ek_nand_hw_init(void) ++{ ++ unsigned long csa; ++ ++ /* Enable CS3 */ ++ csa = at91_sys_read(AT91_MATRIX_EBICSA); ++ at91_sys_write(AT91_MATRIX_EBICSA, ++ csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA); ++ ++ /* Configure SMC CS3 for NAND/SmartMedia */ ++ at91_sys_write(AT91_SMC_SETUP(3), ++ AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) | ++ AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0)); ++ at91_sys_write(AT91_SMC_PULSE(3), ++ AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(3) | ++ AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(2)); ++ at91_sys_write(AT91_SMC_CYCLE(3), ++ AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(4)); ++ at91_sys_write(AT91_SMC_MODE(3), ++ AT91_SMC_READMODE | AT91_SMC_WRITEMODE | ++ AT91_SMC_EXNWMODE_DISABLE | ++#ifdef CFG_NAND_DBW_16 ++ AT91_SMC_DBW_16 | ++#else /* CFG_NAND_DBW_8 */ ++ AT91_SMC_DBW_8 | ++#endif ++ AT91_SMC_TDF_(3)); ++ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIOC); ++ ++ /* Configure RDY/BSY */ ++ at91_set_gpio_input(AT91_PIN_PC8, 1); ++ ++ /* Enable NandFlash */ ++ at91_set_gpio_output(AT91_PIN_PC14, 1); ++} ++#endif ++ ++#ifdef CONFIG_HAS_DATAFLASH ++static void at91samm10g45ek_spi_hw_init(void) ++{ ++ at91_set_B_periph(AT91_PIN_PB3, 0); /* SPI0_NPCS0 */ ++ ++ at91_set_B_periph(AT91_PIN_PB0, 0); /* SPI0_MISO */ ++ at91_set_B_periph(AT91_PIN_PB1, 0); /* SPI0_MOSI */ ++ at91_set_B_periph(AT91_PIN_PB2, 0); /* SPI0_SPCK */ ++ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_SPI0); ++} ++#endif ++ ++#ifdef CONFIG_MACB ++static void at91samm10g45ek_macb_hw_init(void) ++{ ++ unsigned long rstc; ++ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_EMAC); ++ ++ /* ++ * Disable pull-up on: ++ * RXDV (PA15) => PHY normal mode (not Test mode) ++ * ERX0 (PA12) => PHY ADDR0 ++ * ERX1 (PA13) => PHY ADDR1 => PHYADDR = 0x0 ++ * ++ * PHY has internal pull-down ++ */ ++ writel(pin_to_mask(AT91_PIN_PA15) | ++ pin_to_mask(AT91_PIN_PA12) | ++ pin_to_mask(AT91_PIN_PA13), ++ pin_to_controller(AT91_PIN_PA0) + PIO_PUDR); ++ ++ rstc = at91_sys_read(AT91_RSTC_MR); ++ ++ /* Need to reset PHY -> 500ms reset */ ++ at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | ++ (AT91_RSTC_ERSTL & (0x0D << 8)) | ++ AT91_RSTC_URSTEN); ++ ++ at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_EXTRST); ++ ++ /* Wait for end hardware reset */ ++ while (!(at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_NRSTL)); ++ ++ /* Restore NRST value */ ++ at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY | ++ (rstc) | ++ AT91_RSTC_URSTEN); ++ ++ /* Re-enable pull-up */ ++ writel(pin_to_mask(AT91_PIN_PA15) | ++ pin_to_mask(AT91_PIN_PA12) | ++ pin_to_mask(AT91_PIN_PA13), ++ pin_to_controller(AT91_PIN_PA0) + PIO_PUER); ++ ++ at91_set_A_periph(AT91_PIN_PA17, 0); /* ETXCK_EREFCK */ ++ at91_set_A_periph(AT91_PIN_PA15, 0); /* ERXDV */ ++ at91_set_A_periph(AT91_PIN_PA12, 0); /* ERX0 */ ++ at91_set_A_periph(AT91_PIN_PA13, 0); /* ERX1 */ ++ at91_set_A_periph(AT91_PIN_PA16, 0); /* ERXER */ ++ at91_set_A_periph(AT91_PIN_PA14, 0); /* ETXEN */ ++ at91_set_A_periph(AT91_PIN_PA10, 0); /* ETX0 */ ++ at91_set_A_periph(AT91_PIN_PA11, 0); /* ETX1 */ ++ at91_set_A_periph(AT91_PIN_PA19, 0); /* EMDIO */ ++ at91_set_A_periph(AT91_PIN_PA18, 0); /* EMDC */ ++ ++#ifndef CONFIG_RMII ++ at91_set_B_periph(AT91_PIN_PA29, 0); /* ECRS */ ++ at91_set_B_periph(AT91_PIN_PA30, 0); /* ECOL */ ++ at91_set_B_periph(AT91_PIN_PA8, 0); /* ERX2 */ ++ at91_set_B_periph(AT91_PIN_PA9, 0); /* ERX3 */ ++ at91_set_B_periph(AT91_PIN_PA28, 0); /* ERXCK */ ++ at91_set_B_periph(AT91_PIN_PA6, 0); /* ETX2 */ ++ at91_set_B_periph(AT91_PIN_PA7, 0); /* ETX3 */ ++ at91_set_B_periph(AT91_PIN_PA27, 0); /* ETXER */ ++#endif ++ ++} ++#endif ++ ++#ifdef CONFIG_LCD ++vidinfo_t panel_info = { ++ vl_col: 480, ++ vl_row: 272, ++ vl_clk: 125000, ++ vl_sync: ATMEL_LCDC_INVLINE_NORMAL | ++ ATMEL_LCDC_INVFRAME_NORMAL, ++ vl_bpix: 3, ++ vl_tft: 1, ++ vl_hsync_len: 41, ++ vl_left_margin: 2, ++ vl_right_margin:2, ++ vl_vsync_len: 1, ++ vl_upper_margin:2, ++ vl_lower_margin:2, ++ mmio: AT91SAM9G45_LCDC_BASE, ++}; ++ ++void lcd_enable(void) ++{ ++ at91_set_gpio_value(AT91_PIN_PE6, 1); /* power up */ ++} ++ ++void lcd_disable(void) ++{ ++ at91_set_gpio_value(AT91_PIN_PE6, 0); /* power down */ ++} ++ ++static void at91samm10g45ek_lcd_hw_init(void) ++{ ++ at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */ ++ ++ at91_set_A_periph(AT91_PIN_PE4, 0); /* LCDHSYNC */ ++ at91_set_A_periph(AT91_PIN_PE5, 0); /* LCDDOTCK */ ++ ++ at91_set_gpio_input(AT91_PIN_PE6, 0); /* LCDDEN */ ++ ++ at91_set_A_periph(AT91_PIN_PE7, 0); /* LCDD0 */ ++ at91_set_A_periph(AT91_PIN_PE8, 0); /* LCDD1 */ ++ at91_set_A_periph(AT91_PIN_PE9, 0); /* LCDD2 */ ++ at91_set_A_periph(AT91_PIN_PE10, 0); /* LCDD3 */ ++ at91_set_A_periph(AT91_PIN_PE11, 0); /* LCDD4 */ ++ at91_set_A_periph(AT91_PIN_PE12, 0); /* LCDD5 */ ++ at91_set_A_periph(AT91_PIN_PE13, 0); /* LCDD6 */ ++ at91_set_A_periph(AT91_PIN_PE14, 0); /* LCDD7 */ ++ at91_set_A_periph(AT91_PIN_PE15, 0); /* LCDD8 */ ++ at91_set_A_periph(AT91_PIN_PE16, 0); /* LCDD9 */ ++ at91_set_A_periph(AT91_PIN_PE17, 0); /* LCDD10 */ ++ at91_set_A_periph(AT91_PIN_PE18, 0); /* LCDD11 */ ++ at91_set_A_periph(AT91_PIN_PE19, 0); /* LCDD12 */ ++ at91_set_B_periph(AT91_PIN_PE20, 0); /* LCDD13 */ ++ at91_set_A_periph(AT91_PIN_PE21, 0); /* LCDD14 */ ++ at91_set_A_periph(AT91_PIN_PE22, 0); /* LCDD15 */ ++ at91_set_A_periph(AT91_PIN_PE23, 0); /* LCDD16 */ ++ at91_set_A_periph(AT91_PIN_PE24, 0); /* LCDD17 */ ++ at91_set_A_periph(AT91_PIN_PE25, 0); /* LCDD18 */ ++ at91_set_A_periph(AT91_PIN_PE26, 0); /* LCDD19 */ ++ at91_set_A_periph(AT91_PIN_PE27, 0); /* LCDD20 */ ++ at91_set_B_periph(AT91_PIN_PE28, 0); /* LCDD21 */ ++ at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22 */ ++ at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23 */ ++ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_LCDC); ++ ++ gd->fb_base = AT91SAM9G45_SRAM_BASE; ++} ++#endif ++ ++#if defined(CONFIG_MACB) && defined(CONFIG_CMD_NET) ++extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr); ++ ++int board_eth_init(bd_t *bis) ++{ ++ macb_eth_initialize(0, (void *)AT91SAM9G45_BASE_EMAC, 0x00); ++} ++#endif ++ ++int board_init(void) ++{ ++ /* Enable Ctrlc */ ++ console_init_f(); ++ ++ /* arch number of AT91SAM9M10G45EK-Board */ ++#ifdef CONFIG_AT91SAM9M10G45EK ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9M10G45EK; ++#elif defined CONFIG_AT91SAM9G45EKES ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G45EKES; ++#elif defined CONFIG_AT91SAM9M10EKES ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9M10EKES; ++#endif ++ /* adress of boot parameters */ ++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; ++ ++ at91samm10g45ek_serial_hw_init(); ++#ifdef CONFIG_CMD_NAND ++ at91samm10g45ek_nand_hw_init(); ++#endif ++#ifdef CONFIG_HAS_DATAFLASH ++ at91samm10g45ek_spi_hw_init(); ++#endif ++#ifdef CONFIG_MACB ++ at91samm10g45ek_macb_hw_init(); ++#endif ++ ++#ifdef CONFIG_LCD ++ at91samm10g45ek_lcd_hw_init(); ++#endif ++ return 0; ++} ++ ++int dram_init(void) ++{ ++ gd->bd->bi_dram[0].start = PHYS_SDRAM; ++ gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; ++ return 0; ++} ++ ++#ifdef CONFIG_RESET_PHY_R ++void reset_phy(void) ++{ ++#ifdef CONFIG_MACB ++ /* ++ * Initialize ethernet HW addr prior to starting Linux, ++ * needed for nfsroot ++ */ ++ eth_init(gd->bd); ++#endif ++} ++#endif +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/config.mk u-boot-1.3.4/board/atmel/at91sam9m10g45ek/config.mk +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/config.mk 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9m10g45ek/config.mk 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1 @@ ++TEXT_BASE = 0x73f00000 +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/led.c u-boot-1.3.4/board/atmel/at91sam9m10g45ek/led.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/led.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9m10g45ek/led.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,64 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define RED_LED AT91_PIN_PD31 /* this is the user1 led */ ++#define GREEN_LED AT91_PIN_PD0 /* this is the user2 led */ ++ ++void red_LED_on(void) ++{ ++ at91_set_gpio_value(RED_LED, 1); ++} ++ ++void red_LED_off(void) ++{ ++ at91_set_gpio_value(RED_LED, 0); ++} ++ ++void green_LED_on(void) ++{ ++ at91_set_gpio_value(GREEN_LED, 0); ++} ++ ++void green_LED_off(void) ++{ ++ at91_set_gpio_value(GREEN_LED, 1); ++} ++ ++void coloured_LED_init(void) ++{ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIODE); ++ ++ at91_set_gpio_output(RED_LED, 1); ++ at91_set_gpio_output(GREEN_LED, 1); ++ ++ at91_set_gpio_value(RED_LED, 0); ++ at91_set_gpio_value(GREEN_LED, 1); ++} +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/Makefile u-boot-1.3.4/board/atmel/at91sam9m10g45ek/Makefile +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/Makefile 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9m10g45ek/Makefile 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,57 @@ ++# ++# (C) Copyright 2003-2008 ++# Wolfgang Denk, DENX Software Engineering, wd@denx.de. ++# ++# (C) Copyright 2008 ++# Stelian Pop ++# Lead Tech Design ++# ++# See file CREDITS for list of people who contributed to this ++# project. ++# ++# 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 option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# 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., 59 Temple Place, Suite 330, Boston, ++# MA 02111-1307 USA ++# ++ ++include $(TOPDIR)/config.mk ++ ++LIB = $(obj)lib$(BOARD).a ++ ++COBJS-y += at91sam9m10g45ek.o ++COBJS-y += led.o ++COBJS-y += partition.o ++COBJS-$(CONFIG_CMD_NAND) += nand.o ++ ++SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) ++OBJS := $(addprefix $(obj),$(COBJS-y)) ++SOBJS := $(addprefix $(obj),$(SOBJS)) ++ ++$(LIB): $(obj).depend $(OBJS) $(SOBJS) ++ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) ++ ++clean: ++ rm -f $(SOBJS) $(OBJS) ++ ++distclean: clean ++ rm -f $(LIB) core *.bak $(obj).depend ++ ++######################################################################### ++ ++# defines $(obj).depend target ++include $(SRCTREE)/rules.mk ++ ++sinclude $(obj).depend ++ ++######################################################################### +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/nand.c u-boot-1.3.4/board/atmel/at91sam9m10g45ek/nand.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/nand.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9m10g45ek/nand.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,79 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* ++ * hardware specific access to control-lines ++ */ ++#define MASK_ALE (1 << 21) /* our ALE is AD21 */ ++#define MASK_CLE (1 << 22) /* our CLE is AD22 */ ++ ++static void at91samm10g45ek_nand_hwcontrol(struct mtd_info *mtd, int cmd) ++{ ++ struct nand_chip *this = mtd->priv; ++ ulong IO_ADDR_W = (ulong) this->IO_ADDR_W; ++ ++ IO_ADDR_W &= ~(MASK_ALE|MASK_CLE); ++ switch (cmd) { ++ case NAND_CTL_SETCLE: ++ IO_ADDR_W |= MASK_CLE; ++ break; ++ case NAND_CTL_SETALE: ++ IO_ADDR_W |= MASK_ALE; ++ break; ++ case NAND_CTL_CLRNCE: ++ at91_set_gpio_value(AT91_PIN_PC14, 1); ++ break; ++ case NAND_CTL_SETNCE: ++ at91_set_gpio_value(AT91_PIN_PC14, 0); ++ break; ++ } ++ this->IO_ADDR_W = (void *) IO_ADDR_W; ++} ++ ++static int at91samm10g45ek_nand_ready(struct mtd_info *mtd) ++{ ++ return at91_get_gpio_value(AT91_PIN_PC8); ++} ++ ++int board_nand_init(struct nand_chip *nand) ++{ ++ nand->eccmode = NAND_ECC_SOFT; ++#ifdef CFG_NAND_DBW_16 ++ nand->options = NAND_BUSWIDTH_16; ++#endif ++ nand->hwcontrol = at91samm10g45ek_nand_hwcontrol; ++ nand->dev_ready = at91samm10g45ek_nand_ready; ++ nand->chip_delay = 20; ++ ++ return 0; ++} +diff -uprN u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/partition.c u-boot-1.3.4/board/atmel/at91sam9m10g45ek/partition.c +--- u-boot-1.3.4-vanilla/board/atmel/at91sam9m10g45ek/partition.c 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/board/atmel/at91sam9m10g45ek/partition.c 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,39 @@ ++/* ++ * (C) Copyright 2008 ++ * Ulf Samuelsson ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ */ ++#include ++#include ++#include ++#include ++ ++AT91S_DATAFLASH_INFO dataflash_info[CFG_MAX_DATAFLASH_BANKS]; ++ ++struct dataflash_addr cs[CFG_MAX_DATAFLASH_BANKS] = { ++ {CFG_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */ ++}; ++ ++/*define the area offsets*/ ++dataflash_protect_t area_list[NB_DATAFLASH_AREA] = { ++ {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"}, ++ {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"}, ++ {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"}, ++ {0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0, "Kernel"}, ++ {0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0, "FS"}, ++}; +diff -uprN u-boot-1.3.4-vanilla/cpu/arm926ejs/at91sam9/usb.c u-boot-1.3.4/cpu/arm926ejs/at91sam9/usb.c +--- u-boot-1.3.4-vanilla/cpu/arm926ejs/at91sam9/usb.c 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/cpu/arm926ejs/at91sam9/usb.c 2010-03-25 16:45:59.000000000 -0500 +@@ -33,7 +33,7 @@ int usb_cpu_init(void) + { + /* Enable USB host clock. */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_UHP); +-#ifdef CONFIG_AT91SAM9261 ++#if defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10) + at91_sys_write(AT91_PMC_SCER, AT91_PMC_UHP | AT91_PMC_HCK0); + #else + at91_sys_write(AT91_PMC_SCER, AT91_PMC_UHP); +@@ -46,7 +46,7 @@ int usb_cpu_stop(void) + { + /* Disable USB host clock. */ + at91_sys_write(AT91_PMC_PCDR, 1 << AT91_ID_UHP); +-#ifdef CONFIG_AT91SAM9261 ++#if defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10) + at91_sys_write(AT91_PMC_SCDR, AT91_PMC_UHP | AT91_PMC_HCK0); + #else + at91_sys_write(AT91_PMC_SCDR, AT91_PMC_UHP); +diff -uprN u-boot-1.3.4-vanilla/doc/README.at91 u-boot-1.3.4/doc/README.at91 +--- u-boot-1.3.4-vanilla/doc/README.at91 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/doc/README.at91 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,88 @@ ++Atmel AT91 Evaluation kits ++ ++http://atmel.com/dyn/products/tools.asp?family_id=605#1443 ++ ++------------------------------------------------------------------------------ ++AT91SAM9260EK ++------------------------------------------------------------------------------ ++ ++Memory map ++ 0x20000000 - 23FFFFFF SDRAM (64 MB) ++ 0xC0000000 - Cxxxxxxx Atmel Dataflash card (J13) ++ 0xD0000000 - Dxxxxxxx Soldered Atmel Dataflash ++ ++Environment variables ++ ++ U-Boot environment variables can be stored at different places: ++ - Dataflash on SPI chip select 1 (default) ++ - Dataflash on SPI chip select 0 (dataflash card) ++ - Nand flash. ++ ++ You can choose your storage location at config step (here for at91sam9260ek) : ++ make at91sam9260ek_config - use data flash (spi cs1) (default) ++ make at91sam9260ek_nandflash_config - use nand flash ++ make at91sam9260ek_dataflash_cs0_config - use data flash (spi cs0) ++ make at91sam9260ek_dataflash_cs1_config - use data flash (spi cs1) ++ ++ ++------------------------------------------------------------------------------ ++AT91SAM9261EK ++------------------------------------------------------------------------------ ++ ++Memory map ++ 0x20000000 - 23FFFFFF SDRAM (64 MB) ++ 0xC0000000 - Cxxxxxxx Soldered Atmel Dataflash ++ 0xD0000000 - Dxxxxxxx Atmel Dataflash card (J22) ++ ++Environment variables ++ ++ U-Boot environment variables can be stored at different places: ++ - Dataflash on SPI chip select 0 (default) ++ - Dataflash on SPI chip select 3 (dataflash card) ++ - Nand flash. ++ ++ You can choose your storage location at config step (here for at91sam9260ek) : ++ make at91sam9261ek_config - use data flash (spi cs0) (default) ++ make at91sam9261ek_nandflash_config - use nand flash ++ make at91sam9261ek_dataflash_cs0_config - use data flash (spi cs0) ++ make at91sam9261ek_dataflash_cs3_config - use data flash (spi cs3) ++ ++ ++------------------------------------------------------------------------------ ++AT91SAM9263EK ++------------------------------------------------------------------------------ ++ ++Memory map ++ 0x20000000 - 23FFFFFF SDRAM (64 MB) ++ 0xC0000000 - Cxxxxxxx Atmel Dataflash card (J9) ++ ++Environment variables ++ ++ U-Boot environment variables can be stored at different places: ++ - Dataflash on SPI chip select 0 (dataflash card) ++ - Nand flash. ++ ++ You can choose your storage location at config step (here for at91sam9260ek) : ++ make at91sam9263ek_config - use data flash (spi cs0) (default) ++ make at91sam9263ek_nandflash_config - use nand flash ++ make at91sam9263ek_dataflash_cs0_config - use data flash (spi cs0) ++ ++ ++------------------------------------------------------------------------------ ++AT91SAM9RLEK ++------------------------------------------------------------------------------ ++ ++Memory map ++ 0x20000000 - 23FFFFFF SDRAM (64 MB) ++ 0xC0000000 - Cxxxxxxx Soldered Atmel Dataflash ++ ++Environment variables ++ ++ U-Boot environment variables can be stored at different places: ++ - Dataflash on SPI chip select 0 ++ - Nand flash. ++ ++ You can choose your storage location at config step (here for at91sam9260ek) : ++ make at91sam9263ek_config - use data flash (spi cs0) (default) ++ make at91sam9263ek_nandflash_config - use nand flash ++ make at91sam9263ek_dataflash_cs0_config - use data flash (spi cs0) +diff -uprN u-boot-1.3.4-vanilla/drivers/net/macb.c u-boot-1.3.4/drivers/net/macb.c +--- u-boot-1.3.4-vanilla/drivers/net/macb.c 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/drivers/net/macb.c 2010-05-04 14:32:15.000000000 -0500 +@@ -55,7 +55,7 @@ + #define CFG_MACB_RX_RING_SIZE (CFG_MACB_RX_BUFFER_SIZE / 128) + #define CFG_MACB_TX_RING_SIZE 16 + #define CFG_MACB_TX_TIMEOUT 1000 +-#define CFG_MACB_AUTONEG_TIMEOUT 5000000 ++#define CFG_MACB_AUTONEG_TIMEOUT 3000000 + + struct macb_dma_desc { + u32 addr; +@@ -290,11 +290,12 @@ static int macb_recv(struct eth_device * + return 0; + } + +-static void macb_phy_reset(struct macb_device *macb) ++static u16 macb_phy_reset(struct macb_device *macb) + { + struct eth_device *netdev = &macb->netdev; + int i; +- u16 status, adv; ++ u16 status = 0; ++ u16 adv; + + adv = ADVERTISE_CSMA | ADVERTISE_ALL; + macb_mdio_write(macb, MII_ADVERTISE, adv); +@@ -314,6 +315,8 @@ static void macb_phy_reset(struct macb_d + else + printf("%s: Autonegotiation timed out (status=0x%04x)\n", + netdev->name, status); ++ ++ return status; + } + + static int macb_phy_init(struct macb_device *macb) +@@ -334,14 +337,7 @@ static int macb_phy_init(struct macb_dev + status = macb_mdio_read(macb, MII_BMSR); + if (!(status & BMSR_LSTATUS)) { + /* Try to re-negotiate if we don't have link already. */ +- macb_phy_reset(macb); +- +- for (i = 0; i < CFG_MACB_AUTONEG_TIMEOUT / 100; i++) { +- status = macb_mdio_read(macb, MII_BMSR); +- if (status & BMSR_LSTATUS) +- break; +- udelay(100); +- } ++ status = macb_phy_reset(macb); + } + + if (!(status & BMSR_LSTATUS)) { +@@ -414,18 +410,16 @@ static int macb_init(struct eth_device * + + /* choose RMII or MII mode. This depends on the board */ + #ifdef CONFIG_RMII +-#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ +- defined(CONFIG_AT91SAM9263) +- macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN)); +-#else ++#if defined(CONFIG_AVR32) + macb_writel(macb, USRIO, 0); +-#endif + #else +-#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ +- defined(CONFIG_AT91SAM9263) +- macb_writel(macb, USRIO, MACB_BIT(CLKEN)); ++ macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN)); ++#endif + #else ++#if defined(CONFIG_AVR32) + macb_writel(macb, USRIO, MACB_BIT(MII)); ++#else ++ macb_writel(macb, USRIO, MACB_BIT(CLKEN)); + #endif + #endif /* CONFIG_RMII */ + +diff -uprN u-boot-1.3.4-vanilla/include/asm-arm/arch-at91sam9/at91sam9g45.h u-boot-1.3.4/include/asm-arm/arch-at91sam9/at91sam9g45.h +--- u-boot-1.3.4-vanilla/include/asm-arm/arch-at91sam9/at91sam9g45.h 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/include/asm-arm/arch-at91sam9/at91sam9g45.h 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,135 @@ ++/* ++ * Chip-specific header file for the AT91SAM9M1x family ++ * ++ * Copyright (C) 2008 Atmel Corporation. ++ * ++ * Common definitions. ++ * Based on AT91SAM9G45 preliminary datasheet. ++ * ++ * 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 option) any later version. ++ */ ++ ++#ifndef AT91SAM9G45_H ++#define AT91SAM9G45_H ++ ++/* ++ * Peripheral identifiers/interrupts. ++ */ ++#define AT91_ID_FIQ 0 /* Advanced Interrupt Controller (FIQ) */ ++#define AT91_ID_SYS 1 /* System Controller Interrupt */ ++#define AT91SAM9G45_ID_PIOA 2 /* Parallel I/O Controller A */ ++#define AT91SAM9G45_ID_PIOB 3 /* Parallel I/O Controller B */ ++#define AT91SAM9G45_ID_PIOC 4 /* Parallel I/O Controller C */ ++#define AT91SAM9G45_ID_PIODE 5 /* Parallel I/O Controller D and E */ ++#define AT91SAM9G45_ID_TRNG 6 /* True Random Number Generator */ ++#define AT91SAM9G45_ID_US0 7 /* USART 0 */ ++#define AT91SAM9G45_ID_US1 8 /* USART 1 */ ++#define AT91SAM9G45_ID_US2 9 /* USART 2 */ ++#define AT91SAM9G45_ID_US3 10 /* USART 3 */ ++#define AT91SAM9G45_ID_MCI0 11 /* High Speed Multimedia Card Interface 0 */ ++#define AT91SAM9G45_ID_TWI0 12 /* Two-Wire Interface 0 */ ++#define AT91SAM9G45_ID_TWI1 13 /* Two-Wire Interface 1 */ ++#define AT91SAM9G45_ID_SPI0 14 /* Serial Peripheral Interface 0 */ ++#define AT91SAM9G45_ID_SPI1 15 /* Serial Peripheral Interface 1 */ ++#define AT91SAM9G45_ID_SSC0 16 /* Synchronous Serial Controller 0 */ ++#define AT91SAM9G45_ID_SSC1 17 /* Synchronous Serial Controller 1 */ ++#define AT91SAM9G45_ID_TCB 18 /* Timer Counter 0, 1, 2, 3, 4 and 5 */ ++#define AT91SAM9G45_ID_PWMC 19 /* Pulse Width Modulation Controller */ ++#define AT91SAM9G45_ID_TSC 20 /* Touch Screen ADC Controller */ ++#define AT91SAM9G45_ID_DMA 21 /* DMA Controller */ ++#define AT91SAM9G45_ID_UHPHS 22 /* USB Host High Speed */ ++#define AT91SAM9G45_ID_LCDC 23 /* LCD Controller */ ++#define AT91SAM9G45_ID_AC97C 24 /* AC97 Controller */ ++#define AT91SAM9G45_ID_EMAC 25 /* Ethernet MAC */ ++#define AT91SAM9G45_ID_ISI 26 /* Image Sensor Interface */ ++#define AT91SAM9G45_ID_UDPHS 27 /* USB Device High Speed */ ++#define AT91SAM9G45_ID_AESTDESSHA 28 /* AES + T-DES + SHA */ ++#define AT91SAM9G45_ID_MCI1 29 /* High Speed Multimedia Card Interface 1 */ ++#define AT91SAM9G45_ID_VDEC 30 /* Video Decoder */ ++#define AT91SAM9G45_ID_IRQ0 31 /* Advanced Interrupt Controller */ ++ ++/* ++ * User Peripheral physical base addresses. ++ */ ++#define AT91SAM9G45_BASE_UDPHS 0xfff78000 ++#define AT91SAM9G45_BASE_TC0 0xfff7c000 ++#define AT91SAM9G45_BASE_TC1 0xfff7c040 ++#define AT91SAM9G45_BASE_TC2 0xfff7c080 ++#define AT91SAM9G45_BASE_MCI0 0xfff80000 ++#define AT91SAM9G45_BASE_TWI0 0xfff84000 ++#define AT91SAM9G45_BASE_TWI1 0xfff88000 ++#define AT91SAM9G45_BASE_US0 0xfff8c000 ++#define AT91SAM9G45_BASE_US1 0xfff90000 ++#define AT91SAM9G45_BASE_US2 0xfff94000 ++#define AT91SAM9G45_BASE_US3 0xfff98000 ++#define AT91SAM9G45_BASE_SSC0 0xfff9c000 ++#define AT91SAM9G45_BASE_SSC1 0xfffa0000 ++#define AT91SAM9G45_BASE_SPI0 0xfffa4000 ++#define AT91SAM9G45_BASE_SPI1 0xfffa8000 ++#define AT91SAM9G45_BASE_AC97C 0xfffac000 ++#define AT91SAM9G45_BASE_TSC 0xfffb0000 ++#define AT91SAM9G45_BASE_ISI 0xfffb4000 ++#define AT91SAM9G45_BASE_PWMC 0xfffb8000 ++#define AT91SAM9G45_BASE_EMAC 0xfffbc000 ++#define AT91SAM9G45_BASE_AES 0xfffc0000 ++#define AT91SAM9G45_BASE_TDES 0xfffc4000 ++#define AT91SAM9G45_BASE_SHA 0xfffc8000 ++#define AT91SAM9G45_BASE_TRNG 0xfffcc000 ++#define AT91SAM9G45_BASE_MCI1 0xfffd0000 ++#define AT91SAM9G45_BASE_TC3 0xfffd4000 ++#define AT91SAM9G45_BASE_TC4 0xfffd4040 ++#define AT91SAM9G45_BASE_TC5 0xfffd4080 ++#define AT91_BASE_SYS 0xffffe200 ++ ++/* ++ * System Peripherals (offset from AT91_BASE_SYS) ++ */ ++#define AT91_ECC (0xffffe200 - AT91_BASE_SYS) ++#define AT91_DDRSDRC1 (0xffffe400 - AT91_BASE_SYS) ++#define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS) ++#define AT91_SMC (0xffffe800 - AT91_BASE_SYS) ++#define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS) ++#define AT91_DMA (0xffffec00 - AT91_BASE_SYS) ++#define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) ++#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) ++#define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) ++#define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) ++#define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) ++#define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) ++#define AT91_PIOE (0xfffffa00 - AT91_BASE_SYS) ++#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) ++#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) ++#define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) ++#define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) ++#define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) ++#define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) ++#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) ++#define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS) ++ ++#define AT91_USART0 AT91SAM9G45_BASE_US0 ++#define AT91_USART1 AT91SAM9G45_BASE_US1 ++#define AT91_USART2 AT91SAM9G45_BASE_US2 ++#define AT91_USART3 AT91SAM9G45_BASE_US3 ++ ++/* ++ * Internal Memory. ++ */ ++#define AT91SAM9G45_SRAM_BASE 0x00300000 /* Internal SRAM base address */ ++#define AT91SAM9G45_SRAM_SIZE SZ_64K /* Internal SRAM size (64Kb) */ ++ ++#define AT91SAM9G45_ROM_BASE 0x00400000 /* Internal ROM base address */ ++#define AT91SAM9G45_ROM_SIZE SZ_64K /* Internal ROM size (64Kb) */ ++ ++#define AT91SAM9G45_LCDC_BASE 0x00500000 /* LCD Controller */ ++#define AT91SAM9G45_UDPHS_FIFO 0x00600000 /* USB Device HS controller */ ++#define AT91SAM9G45_HCI_BASE 0x00700000 /* USB Host controller (OHCI) */ ++#define AT91SAM9G45_EHCI_BASE 0x00800000 /* USB Host controller (EHCI) */ ++#define AT91SAM9G45_VDEC_BASE 0x00900000 /* Video Decoder Controller */ ++ ++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6 ++ ++ ++#endif +diff -uprN u-boot-1.3.4-vanilla/include/asm-arm/arch-at91sam9/at91sam9g45_matrix.h u-boot-1.3.4/include/asm-arm/arch-at91sam9/at91sam9g45_matrix.h +--- u-boot-1.3.4-vanilla/include/asm-arm/arch-at91sam9/at91sam9g45_matrix.h 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/include/asm-arm/arch-at91sam9/at91sam9g45_matrix.h 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,153 @@ ++/* ++ * Matrix-centric header file for the AT91SAM9M1x family ++ * ++ * Copyright (C) 2008 Atmel Corporation. ++ * ++ * Memory Controllers (MATRIX, EBI) - System peripherals registers. ++ * Based on AT91SAM9G45 preliminary datasheet. ++ * ++ * 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 option) any later version. ++ */ ++ ++#ifndef AT91SAM9G45_MATRIX_H ++#define AT91SAM9G45_MATRIX_H ++ ++#define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ ++#define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ ++#define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ ++#define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ ++#define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ ++#define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ ++#define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */ ++#define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */ ++#define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */ ++#define AT91_MATRIX_MCFG9 (AT91_MATRIX + 0x24) /* Master Configuration Register 9 */ ++#define AT91_MATRIX_MCFG10 (AT91_MATRIX + 0x28) /* Master Configuration Register 10 */ ++#define AT91_MATRIX_MCFG11 (AT91_MATRIX + 0x2C) /* Master Configuration Register 11 */ ++#define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ ++#define AT91_MATRIX_ULBT_INFINITE (0 << 0) ++#define AT91_MATRIX_ULBT_SINGLE (1 << 0) ++#define AT91_MATRIX_ULBT_FOUR (2 << 0) ++#define AT91_MATRIX_ULBT_EIGHT (3 << 0) ++#define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) ++#define AT91_MATRIX_ULBT_THIRTYTWO (5 << 0) ++#define AT91_MATRIX_ULBT_SIXTYFOUR (6 << 0) ++#define AT91_MATRIX_ULBT_128 (7 << 0) ++ ++#define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ ++#define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ ++#define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ ++#define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ ++#define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ ++#define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ ++#define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */ ++#define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */ ++#define AT91_MATRIX_SLOT_CYCLE (0x1ff << 0) /* Maximum Number of Allowed Cycles for a Burst */ ++#define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ ++#define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) ++#define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) ++#define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) ++#define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ ++ ++#define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ ++#define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */ ++#define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ ++#define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */ ++#define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ ++#define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */ ++#define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ ++#define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */ ++#define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ ++#define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */ ++#define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ ++#define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */ ++#define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */ ++#define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */ ++#define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */ ++#define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */ ++#define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ ++#define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ ++#define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ ++#define AT91_MATRIX_M3PR (3 << 12) /* Master 3 Priority */ ++#define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ ++#define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ ++#define AT91_MATRIX_M6PR (3 << 24) /* Master 6 Priority */ ++#define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */ ++#define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */ ++#define AT91_MATRIX_M9PR (3 << 4) /* Master 9 Priority (in Register B) */ ++#define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */ ++#define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */ ++ ++#define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ ++#define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ ++#define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ ++#define AT91_MATRIX_RCB2 (1 << 2) ++#define AT91_MATRIX_RCB3 (1 << 3) ++#define AT91_MATRIX_RCB4 (1 << 4) ++#define AT91_MATRIX_RCB5 (1 << 5) ++#define AT91_MATRIX_RCB6 (1 << 6) ++#define AT91_MATRIX_RCB7 (1 << 7) ++#define AT91_MATRIX_RCB8 (1 << 8) ++#define AT91_MATRIX_RCB9 (1 << 9) ++#define AT91_MATRIX_RCB10 (1 << 10) ++#define AT91_MATRIX_RCB11 (1 << 11) ++ ++#define AT91_MATRIX_TCMR (AT91_MATRIX + 0x110) /* TCM Configuration Register */ ++#define AT91_MATRIX_ITCM_SIZE (0xf << 0) /* Size of ITCM enabled memory block */ ++#define AT91_MATRIX_ITCM_0 (0 << 0) ++#define AT91_MATRIX_ITCM_32 (6 << 0) ++#define AT91_MATRIX_DTCM_SIZE (0xf << 4) /* Size of DTCM enabled memory block */ ++#define AT91_MATRIX_DTCM_0 (0 << 4) ++#define AT91_MATRIX_DTCM_32 (6 << 4) ++#define AT91_MATRIX_DTCM_64 (7 << 4) ++#define AT91_MATRIX_TCM_NWS (0x1 << 11) /* Wait state TCM register */ ++#define AT91_MATRIX_TCM_NO_WS (0x0 << 11) ++#define AT91_MATRIX_TCM_ONE_WS (0x1 << 11) ++ ++#define AT91_MATRIX_VIDEO (AT91_MATRIX + 0x118) /* Video Mode Configuration Register */ ++#define AT91C_VDEC_SEL (0x1 << 0) /* Video Mode Selection */ ++#define AT91C_VDEC_SEL_OFF (0 << 0) ++#define AT91C_VDEC_SEL_ON (1 << 0) ++ ++#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x128) /* EBI Chip Select Assignment Register */ ++#define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ ++#define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) ++#define AT91_MATRIX_EBI_CS1A_SDRAMC (1 << 1) ++#define AT91_MATRIX_EBI_CS3A (1 << 3) /* Chip Select 3 Assignment */ ++#define AT91_MATRIX_EBI_CS3A_SMC (0 << 3) ++#define AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA (1 << 3) ++#define AT91_MATRIX_EBI_CS4A (1 << 4) /* Chip Select 4 Assignment */ ++#define AT91_MATRIX_EBI_CS4A_SMC (0 << 4) ++#define AT91_MATRIX_EBI_CS4A_SMC_CF0 (1 << 4) ++#define AT91_MATRIX_EBI_CS5A (1 << 5) /* Chip Select 5 Assignment */ ++#define AT91_MATRIX_EBI_CS5A_SMC (0 << 5) ++#define AT91_MATRIX_EBI_CS5A_SMC_CF1 (1 << 5) ++#define AT91_MATRIX_EBI_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ ++#define AT91_MATRIX_EBI_DBPU_ON (0 << 8) ++#define AT91_MATRIX_EBI_DBPU_OFF (1 << 8) ++#define AT91_MATRIX_EBI_VDDIOMSEL (1 << 16) /* Memory voltage selection */ ++#define AT91_MATRIX_EBI_VDDIOMSEL_1_8V (0 << 16) ++#define AT91_MATRIX_EBI_VDDIOMSEL_3_3V (1 << 16) ++#define AT91_MATRIX_EBI_EBI_IOSR (1 << 17) /* EBI I/O slew rate selection */ ++#define AT91_MATRIX_EBI_EBI_IOSR_REDUCED (0 << 17) ++#define AT91_MATRIX_EBI_EBI_IOSR_NORMAL (1 << 17) ++#define AT91_MATRIX_EBI_DDR_IOSR (1 << 18) /* DDR2 dedicated port I/O slew rate selection */ ++#define AT91_MATRIX_EBI_DDR_IOSR_REDUCED (0 << 18) ++#define AT91_MATRIX_EBI_DDR_IOSR_NORMAL (1 << 18) ++ ++#define AT91_MATRIX_WPMR (AT91_MATRIX + 0x1E4) /* Write Protect Mode Register */ ++#define AT91_MATRIX_WPMR_WPEN (1 << 0) /* Write Protect ENable */ ++#define AT91_MATRIX_WPMR_WP_WPDIS (0 << 0) ++#define AT91_MATRIX_WPMR_WP_WPEN (1 << 0) ++#define AT91_MATRIX_WPMR_WPKEY (0xFFFFFF << 8) /* Write Protect KEY */ ++ ++#define AT91_MATRIX_WPSR (AT91_MATRIX + 0x1E8) /* Write Protect Status Register */ ++#define AT91_MATRIX_WPSR_WPVS (1 << 0) /* Write Protect Violation Status */ ++#define AT91_MATRIX_WPSR_NO_WPV (0 << 0) ++#define AT91_MATRIX_WPSR_WPV (1 << 0) ++#define AT91_MATRIX_WPSR_WPVSRC (0xFFFF << 8) /* Write Protect Violation Source */ ++ ++#endif +diff -uprN u-boot-1.3.4-vanilla/include/asm-arm/arch-at91sam9/hardware.h u-boot-1.3.4/include/asm-arm/arch-at91sam9/hardware.h +--- u-boot-1.3.4-vanilla/include/asm-arm/arch-at91sam9/hardware.h 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/include/asm-arm/arch-at91sam9/hardware.h 2010-03-25 16:45:59.000000000 -0500 +@@ -18,13 +18,13 @@ + + #if defined(CONFIG_AT91RM9200) + #include +-#elif defined(CONFIG_AT91SAM9260) ++#elif defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9G20) + #include + #define AT91_BASE_EMAC AT91SAM9260_BASE_EMAC + #define AT91_BASE_SPI AT91SAM9260_BASE_SPI0 + #define AT91_ID_UHP AT91SAM9260_ID_UHP + #define AT91_PMC_UHP AT91SAM926x_PMC_UHP +-#elif defined(CONFIG_AT91SAM9261) ++#elif defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10) + #include + #define AT91_BASE_SPI AT91SAM9261_BASE_SPI0 + #define AT91_ID_UHP AT91SAM9261_ID_UHP +@@ -39,6 +39,12 @@ + #include + #define AT91_BASE_SPI AT91SAM9RL_BASE_SPI + #define AT91_ID_UHP AT91SAM9RL_ID_UHP ++#elif defined(CONFIG_AT91SAM9G45) ++#include ++#define AT91_BASE_EMAC AT91SAM9G45_BASE_EMAC ++#define AT91_BASE_SPI AT91SAM9G45_BASE_SPI0 ++#define AT91_ID_UHP AT91SAM9G45_ID_UHPHS ++#define AT91_PMC_UHP AT91SAM926x_PMC_UHP + #elif defined(CONFIG_AT91CAP9) + #include + #define AT91_BASE_EMAC AT91CAP9_BASE_EMAC +diff -uprN u-boot-1.3.4-vanilla/include/asm-arm/mach-types.h u-boot-1.3.4/include/asm-arm/mach-types.h +--- u-boot-1.3.4-vanilla/include/asm-arm/mach-types.h 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/include/asm-arm/mach-types.h 2010-03-25 16:45:59.000000000 -0500 +@@ -1595,7 +1595,13 @@ extern unsigned int __machine_arch_type; + #define MACH_TYPE_P300 1602 + #define MACH_TYPE_XDACOMET 1603 + #define MACH_TYPE_DEXFLEX2 1604 ++#define MACH_TYPE_AT91SAM9G20EK 1624 + #define MACH_TYPE_SFFSDR 1657 ++#define MACH_TYPE_AT91SAM9M10G45EK 1830 ++#define MACH_TYPE_AT91SAM9G10EK 2159 ++#define MACH_TYPE_AT91SAM9G45EKES 2212 ++#define MACH_TYPE_AT91SAM9G20EK_2MMC 2288 ++#define MACH_TYPE_AT91SAM9M10EKES 2509 + + #ifdef CONFIG_ARCH_EBSA110 + # ifdef machine_arch_type +@@ -11701,6 +11707,18 @@ extern unsigned int __machine_arch_type; + # define machine_is_at91sam9261ek() (0) + #endif + ++#ifdef CONFIG_MACH_AT91SAM9G10EK ++# ifdef machine_arch_type ++# undef machine_arch_type ++# define machine_arch_type __machine_arch_type ++# else ++# define machine_arch_type MACH_TYPE_AT91SAM9G10EK ++# endif ++# define machine_is_at91sam9g10ek() (machine_arch_type == MACH_TYPE_AT91SAM9G10EK) ++#else ++# define machine_is_at91sam9g10ek() (0) ++#endif ++ + #ifdef CONFIG_MACH_LOFT + # ifdef machine_arch_type + # undef machine_arch_type +@@ -20605,6 +20623,69 @@ extern unsigned int __machine_arch_type; + # define machine_is_dexflex2() (0) + #endif + ++#ifdef CONFIG_MACH_AT91SAM9G20EK ++# ifdef machine_arch_type ++# undef machine_arch_type ++# define machine_arch_type __machine_arch_type ++# else ++# define machine_arch_type MACH_TYPE_AT91SAM9G20EK ++# endif ++# define machine_is_at91sam9g20ek() (machine_arch_type == MACH_TYPE_AT91SAM9G20EK) ++#else ++# define machine_is_at91sam9g20ek() (0) ++#endif ++ ++ ++#ifdef CONFIG_MACH_AT91SAM9M10G45EK ++# ifdef machine_arch_type ++# undef machine_arch_type ++# define machine_arch_type __machine_arch_type ++# else ++# define machine_arch_type MACH_TYPE_AT91SAM9M10G45EK ++# endif ++# define machine_is_at91sam9m10g45ek() (machine_arch_type == MACH_TYPE_AT91SAM9M10G45EK) ++#else ++# define machine_is_at91sam9m10g45ek() (0) ++#endif ++ ++#ifdef CONFIG_MACH_AT91SAM9G45EKES ++# ifdef machine_arch_type ++# undef machine_arch_type ++# define machine_arch_type __machine_arch_type ++# else ++# define machine_arch_type MACH_TYPE_AT91SAM9G45EKES ++# endif ++# define machine_is_at91sam9g45ekes() (machine_arch_type == MACH_TYPE_AT91SAM9G45EKES) ++#else ++# define machine_is_at91sam9g45ekes() (0) ++#endif ++ ++#ifdef CONFIG_MACH_AT91SAM9G20EK_2MMC ++# ifdef machine_arch_type ++# undef machine_arch_type ++# define machine_arch_type __machine_arch_type ++# else ++# define machine_arch_type MACH_TYPE_AT91SAM9G20EK_2MMC ++# endif ++# define machine_is_at91sam9g20ek_2mmc() (machine_arch_type == MACH_TYPE_AT91SAM9G20EK_2MMC) ++#else ++# define machine_is_at91sam9g20ek_2mmc() (0) ++#endif ++ ++#ifdef CONFIG_MACH_AT91SAM9M10EKES ++# ifdef machine_arch_type ++# undef machine_arch_type ++# define machine_arch_type __machine_arch_type ++# else ++# define machine_arch_type MACH_TYPE_AT91SAM9M10EKES ++# endif ++# define machine_is_at91sam9m10ekes() (machine_arch_type == MACH_TYPE_AT91SAM9M10EKES) ++#else ++# define machine_is_at91sam9m10ekes() (0) ++#endif ++ ++ ++ + /* + * These have not yet been registered + */ +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9260ek.h u-boot-1.3.4/include/configs/at91sam9260ek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9260ek.h 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/include/configs/at91sam9260ek.h 2010-03-25 16:45:59.000000000 -0500 +@@ -127,10 +127,6 @@ + #define CFG_MEMTEST_START PHYS_SDRAM + #define CFG_MEMTEST_END 0x23e00000 + +-#undef CFG_USE_DATAFLASH_CS0 +-#define CFG_USE_DATAFLASH_CS1 1 +-#undef CFG_USE_NANDFLASH +- + #ifdef CFG_USE_DATAFLASH_CS0 + + /* bootstrap + u-boot + env + linux in dataflash on CS0 */ +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9261ek.h u-boot-1.3.4/include/configs/at91sam9261ek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9261ek.h 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/include/configs/at91sam9261ek.h 2010-03-25 16:45:59.000000000 -0500 +@@ -142,9 +142,6 @@ + #define CFG_MEMTEST_START PHYS_SDRAM + #define CFG_MEMTEST_END 0x23e00000 + +-#define CFG_USE_DATAFLASH_CS0 1 +-#undef CFG_USE_NANDFLASH +- + #ifdef CFG_USE_DATAFLASH_CS0 + + /* bootstrap + u-boot + env + linux in dataflash on CS0 */ +@@ -159,6 +156,20 @@ + "mtdparts=at91_nand:-(root) " \ + "rw rootfstype=jffs2" + ++#elif CFG_USE_DATAFLASH_CS3 ++ ++/* bootstrap + u-boot + env + linux in dataflash on CS3 */ ++#define CFG_ENV_IS_IN_DATAFLASH 1 ++#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS3 + 0x8400) ++#define CFG_ENV_OFFSET 0x4200 ++#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS3 + CFG_ENV_OFFSET) ++#define CFG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "cp.b 0xD0042000 0x22000000 0x210000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock0 " \ ++ "mtdparts=at91_nand:-(root) " \ ++ "rw rootfstype=jffs2" ++ + #else /* CFG_USE_NANDFLASH */ + + /* bootstrap + u-boot + env + linux in nandflash */ +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9263ek.h u-boot-1.3.4/include/configs/at91sam9263ek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9263ek.h 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/include/configs/at91sam9263ek.h 2010-03-25 16:45:59.000000000 -0500 +@@ -148,9 +148,6 @@ + #define CFG_MEMTEST_START PHYS_SDRAM + #define CFG_MEMTEST_END 0x23e00000 + +-#define CFG_USE_DATAFLASH 1 +-#undef CFG_USE_NANDFLASH +- + #ifdef CFG_USE_DATAFLASH + + /* bootstrap + u-boot + env + linux in dataflash on CS0 */ +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9g10ek.h u-boot-1.3.4/include/configs/at91sam9g10ek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9g10ek.h 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/include/configs/at91sam9g10ek.h 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,213 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * Configuation settings for the AT91SAM9G10EK board. ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#ifndef __CONFIG_H ++#define __CONFIG_H ++ ++/* ARM asynchronous clock */ ++#define AT91_CPU_NAME "AT91SAM9G10" ++#define AT91_MAIN_CLOCK 266000000 /* from 18.432 MHz crystal */ ++#define AT91_MASTER_CLOCK 133000000 /* peripheral = main / 2 */ ++#define CFG_HZ 1000000 /* 1us resolution */ ++ ++#define AT91_SLOW_CLOCK 32768 /* slow clock */ ++ ++#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */ ++#define CONFIG_AT91SAM9G10 1 /* It's an Atmel AT91SAM9G10 SoC*/ ++#define CONFIG_AT91SAM9G10EK 1 /* on an AT91SAM9G10EK Board */ ++#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ ++ ++#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ ++#define CONFIG_SETUP_MEMORY_TAGS 1 ++#define CONFIG_INITRD_TAG 1 ++ ++#define CONFIG_SKIP_LOWLEVEL_INIT ++#define CONFIG_SKIP_RELOCATE_UBOOT ++ ++/* ++ * Hardware drivers ++ */ ++#define CONFIG_ATMEL_USART 1 ++#undef CONFIG_USART0 ++#undef CONFIG_USART1 ++#undef CONFIG_USART2 ++#define CONFIG_USART3 1 /* USART 3 is DBGU */ ++ ++/* LCD */ ++#define CONFIG_LCD 1 ++#define LCD_BPP LCD_COLOR8 ++#define CONFIG_LCD_LOGO 1 ++#undef LCD_TEST_PATTERN ++#define CONFIG_LCD_INFO 1 ++#define CONFIG_LCD_INFO_BELOW_LOGO 1 ++#define CFG_WHITE_ON_BLACK 1 ++#define CONFIG_ATMEL_LCD 1 ++/* #define CONFIG_ATMEL_LCD_BGR555 1 */ ++#define CFG_CONSOLE_IS_IN_ENV 1 ++ ++#define CONFIG_BOOTDELAY 3 ++ ++/* ++ * BOOTP options ++ */ ++#define CONFIG_BOOTP_BOOTFILESIZE 1 ++#define CONFIG_BOOTP_BOOTPATH 1 ++#define CONFIG_BOOTP_GATEWAY 1 ++#define CONFIG_BOOTP_HOSTNAME 1 ++ ++/* ++ * Command line configuration. ++ */ ++#include ++#undef CONFIG_CMD_BDI ++#undef CONFIG_CMD_IMI ++#undef CONFIG_CMD_AUTOSCRIPT ++#undef CONFIG_CMD_FPGA ++#undef CONFIG_CMD_LOADS ++#undef CONFIG_CMD_IMLS ++ ++#define CONFIG_CMD_PING 1 ++#define CONFIG_CMD_DHCP 1 ++#define CONFIG_CMD_NAND 1 ++#define CONFIG_CMD_USB 1 ++ ++/* SDRAM */ ++#define CONFIG_NR_DRAM_BANKS 1 ++#define PHYS_SDRAM 0x20000000 ++#define PHYS_SDRAM_SIZE 0x04000000 /* 64 megs */ ++ ++/* DataFlash */ ++#define CONFIG_HAS_DATAFLASH 1 ++#define CFG_SPI_WRITE_TOUT (5*CFG_HZ) ++#define CFG_MAX_DATAFLASH_BANKS 2 ++#define CFG_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */ ++#define CFG_DATAFLASH_LOGIC_ADDR_CS3 0xD0000000 /* CS3 */ ++#define AT91_SPI_CLK 15000000 ++#define DATAFLASH_TCSS (0x1a << 16) ++#define DATAFLASH_TCHS (0x1 << 24) ++ ++/* NAND flash */ ++#define NAND_MAX_CHIPS 1 ++#define CFG_MAX_NAND_DEVICE 1 ++#define CFG_NAND_BASE 0x40000000 ++#define CFG_NAND_DBW_8 1 ++ ++/* NOR flash - no real flash on this board */ ++#define CFG_NO_FLASH 1 ++ ++/* Ethernet */ ++#define CONFIG_DRIVER_DM9000 1 ++#define CONFIG_DM9000_BASE 0x30000000 ++#define DM9000_IO CONFIG_DM9000_BASE ++#define DM9000_DATA (CONFIG_DM9000_BASE + 4) ++#define CONFIG_DM9000_USE_16BIT 1 ++#define CONFIG_NET_RETRY_COUNT 20 ++#define CONFIG_RESET_PHY_R 1 ++ ++/* USB */ ++#define CONFIG_USB_OHCI_NEW 1 ++#define LITTLEENDIAN 1 ++#define CONFIG_DOS_PARTITION 1 ++#define CFG_USB_OHCI_CPU_INIT 1 ++#define CFG_USB_OHCI_REGS_BASE 0x00500000 /* AT91SAM9G10_UHP_BASE */ ++#define CFG_USB_OHCI_SLOT_NAME "at91sam9g10" ++#define CFG_USB_OHCI_MAX_ROOT_PORTS 2 ++#define CONFIG_USB_STORAGE 1 ++ ++#define CFG_LOAD_ADDR 0x22000000 /* load address */ ++ ++#define CFG_MEMTEST_START PHYS_SDRAM ++#define CFG_MEMTEST_END 0x23e00000 ++ ++#ifdef CFG_USE_DATAFLASH_CS0 ++ ++/* bootstrap + u-boot + env + linux in dataflash on CS0 */ ++#define CFG_ENV_IS_IN_DATAFLASH 1 ++#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400) ++#define CFG_ENV_OFFSET 0x4200 ++#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET) ++#define CFG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x22000000 0x210000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock0 " \ ++ "mtdparts=at91_nand:-(root) " \ ++ "rw rootfstype=jffs2" ++ ++#elif CFG_USE_DATAFLASH_CS3 ++ ++/* bootstrap + u-boot + env + linux in dataflash on CS3 */ ++#define CFG_ENV_IS_IN_DATAFLASH 1 ++#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS3 + 0x8400) ++#define CFG_ENV_OFFSET 0x4200 ++#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS3 + CFG_ENV_OFFSET) ++#define CFG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "cp.b 0xD0042000 0x22000000 0x210000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock0 " \ ++ "mtdparts=at91_nand:-(root) " \ ++ "rw rootfstype=jffs2" ++ ++#else /* CFG_USE_NANDFLASH */ ++ ++/* bootstrap + u-boot + env + linux in nandflash */ ++#define CFG_ENV_IS_IN_NAND 1 ++#define CFG_ENV_OFFSET 0x60000 ++#define CFG_ENV_OFFSET_REDUND 0x80000 ++#define CFG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */ ++#define CONFIG_BOOTCOMMAND "nand read 0x22000000 0xA0000 0x200000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock5 " \ ++ "mtdparts=at91_nand:128k(bootstrap)ro," \ ++ "256k(uboot)ro,128k(env1)ro," \ ++ "128k(env2)ro,2M(linux),-(root) " \ ++ "rw rootfstype=jffs2" ++ ++#endif ++ ++#define CONFIG_BAUDRATE 115200 ++#define CFG_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 } ++ ++#define CFG_PROMPT "U-Boot> " ++#define CFG_CBSIZE 256 ++#define CFG_MAXARGS 16 ++#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) ++#define CFG_LONGHELP 1 ++#define CONFIG_CMDLINE_EDITING 1 ++ ++#define ROUND(A, B) (((A) + (B)) & ~((B) - 1)) ++/* ++ * Size of malloc() pool ++ */ ++#define CFG_MALLOC_LEN ROUND(3 * CFG_ENV_SIZE + 128*1024, 0x1000) ++#define CFG_GBL_DATA_SIZE 128 /* 128 bytes for initial data */ ++ ++#define CONFIG_STACKSIZE (32*1024) /* regular stack */ ++ ++#ifdef CONFIG_USE_IRQ ++#error CONFIG_USE_IRQ not supported ++#endif ++ ++#endif +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9g20ek.h u-boot-1.3.4/include/configs/at91sam9g20ek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9g20ek.h 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/include/configs/at91sam9g20ek.h 2010-05-04 13:55:32.000000000 -0500 +@@ -0,0 +1,212 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * Configuation settings for the AT91SAM9G20EK board. ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#ifndef __CONFIG_H ++#define __CONFIG_H ++ ++/* ARM asynchronous clock */ ++#define AT91_MAIN_CLOCK 18432000 /* 18.432 MHz crystal */ ++#define AT91_MASTER_CLOCK 132096000 /* PLLA = main * 43 / 6 */ ++#define CFG_HZ 1000000 /* 1us resolution */ ++ ++#define AT91_SLOW_CLOCK 32768 /* slow clock */ ++ ++#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */ ++#define CONFIG_AT91SAM9G20 1 /* It's an Atmel AT91SAM9G20 SoC*/ ++#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ ++ ++#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ ++#define CONFIG_SETUP_MEMORY_TAGS 1 ++#define CONFIG_INITRD_TAG 1 ++ ++#define CONFIG_SKIP_LOWLEVEL_INIT ++#define CONFIG_SKIP_RELOCATE_UBOOT ++ ++/* ++ * Hardware drivers ++ */ ++#define CONFIG_ATMEL_USART 1 ++#undef CONFIG_USART0 ++#undef CONFIG_USART1 ++#undef CONFIG_USART2 ++#define CONFIG_USART3 1 /* USART 3 is DBGU */ ++ ++#define CONFIG_BOOTDELAY 1 ++ ++/* ++ * BOOTP options ++ */ ++#define CONFIG_BOOTP_BOOTFILESIZE 1 ++#define CONFIG_BOOTP_BOOTPATH 1 ++#define CONFIG_BOOTP_GATEWAY 1 ++#define CONFIG_BOOTP_HOSTNAME 1 ++ ++/* ++ * Command line configuration. ++ */ ++#include ++#undef CONFIG_CMD_BDI ++#undef CONFIG_CMD_IMI ++#undef CONFIG_CMD_AUTOSCRIPT ++#undef CONFIG_CMD_FPGA ++#undef CONFIG_CMD_LOADS ++#undef CONFIG_CMD_IMLS ++ ++#define CONFIG_CMD_PING 1 ++#define CONFIG_CMD_DHCP 1 ++#define CONFIG_CMD_NAND 1 ++#define CONFIG_CMD_USB 1 ++ ++/* SDRAM */ ++#define CONFIG_NR_DRAM_BANKS 1 ++#define PHYS_SDRAM 0x20000000 ++#define PHYS_SDRAM_SIZE 0x04000000 /* 64 megs */ ++ ++/* DataFlash */ ++#define CONFIG_HAS_DATAFLASH 1 ++#define CFG_SPI_WRITE_TOUT (5*CFG_HZ) ++#define CFG_MAX_DATAFLASH_BANKS 2 ++#define CFG_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */ ++#define CFG_DATAFLASH_LOGIC_ADDR_CS1 0xD0000000 /* CS1 */ ++#define AT91_SPI_CLK 15000000 ++#define DATAFLASH_TCSS (0x22 << 16) ++#define DATAFLASH_TCHS (0x1 << 24) ++ ++/* NAND flash */ ++#define NAND_MAX_CHIPS 1 ++#define CFG_MAX_NAND_DEVICE 1 ++#define CFG_NAND_BASE 0x40000000 ++#define CFG_NAND_DBW_8 1 ++ ++/* NOR flash - no real flash on this board */ ++#define CFG_NO_FLASH 1 ++ ++/* Ethernet */ ++#define CONFIG_NET 1 ++#define CONFIG_MACB 1 ++#define CONFIG_MII 1 ++#define CONFIG_NET_MULTI 1 ++#define CONFIG_NET_RETRY_COUNT 20 ++#define CONFIG_RESET_PHY_R 1 ++ ++/* USB */ ++#define CONFIG_USB_OHCI_NEW 1 ++#define LITTLEENDIAN 1 ++#define CONFIG_DOS_PARTITION 1 ++#define CFG_USB_OHCI_CPU_INIT 1 ++#define CFG_USB_OHCI_REGS_BASE 0x00500000 /* AT91SAM9G20_UHP_BASE */ ++#define CFG_USB_OHCI_SLOT_NAME "at91sam9g20" ++#define CFG_USB_OHCI_MAX_ROOT_PORTS 2 ++#define CONFIG_USB_STORAGE 1 ++ ++#define CFG_LOAD_ADDR 0x22000000 /* load address */ ++ ++#define CFG_MEMTEST_START PHYS_SDRAM ++#define CFG_MEMTEST_END 0x23e00000 ++ ++#ifdef CFG_USE_DATAFLASH_CS0 ++ ++/* bootstrap + u-boot + env + linux in dataflash on CS0 */ ++#define CFG_ENV_IS_IN_DATAFLASH 1 ++#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400) ++#define CFG_ENV_OFFSET 0x4200 ++#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET) ++#define CFG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x22000000 0x210000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock0 " \ ++ "mtdparts=at91_nand:-(root) " \ ++ "rw rootfstype=jffs2" ++ ++#elif CFG_USE_DATAFLASH_CS1 ++ ++/* bootstrap + u-boot + env + linux in dataflash on CS1 */ ++#define CFG_ENV_IS_IN_DATAFLASH 1 ++#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400) ++#define CFG_ENV_OFFSET 0x4200 ++#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS1 + CFG_ENV_OFFSET) ++#define CFG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "cp.b 0xD0042000 0x22000000 0x210000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock0 " \ ++ "mtdparts=at91_nand:-(root) " \ ++ "rw rootfstype=jffs2" ++ ++#else /* CFG_USE_NANDFLASH */ ++ ++/* bootstrap + u-boot + env + linux in nandflash */ ++#define CFG_ENV_IS_IN_NAND 1 ++#define CFG_ENV_OFFSET 0x60000 ++#define CFG_ENV_OFFSET_REDUND 0x80000 ++#define CFG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */ ++#define CONFIG_BOOTCOMMAND "nboot.jffs2 ${loadaddr} 0 ${kernel_addr}; bootm ${loadaddr}" ++#define CONFIG_BOOTARGS "mem=64M " \ ++ "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock8 " \ ++ "ro rootfstype=jffs2" ++ ++#endif ++ ++#define CONFIG_BAUDRATE 115200 ++#define CFG_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 } ++ ++#define CFG_PROMPT "U-Boot> " ++#define CFG_CBSIZE 256 ++#define CFG_MAXARGS 16 ++#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) ++#define CFG_LONGHELP 1 ++#define CONFIG_CMDLINE_EDITING 1 ++ ++#define ROUND(A, B) (((A) + (B)) & ~((B) - 1)) ++/* ++ * Size of malloc() pool ++ */ ++#define CFG_MALLOC_LEN ROUND(3 * CFG_ENV_SIZE + 128*1024, 0x1000) ++#define CFG_GBL_DATA_SIZE 128 /* 128 bytes for initial data */ ++ ++#define CONFIG_STACKSIZE (32*1024) /* regular stack */ ++ ++#ifdef CONFIG_USE_IRQ ++#error CONFIG_USE_IRQ not supported ++#endif ++ ++#define CONFIG_AUTO_COMPLETE 1 ++ ++#define CONFIG_ENV_OVERWRITE 1 ++#define CONFIG_ETHADDR 00:08:00:87:00:02 ++#define CONFIG_IPADDR 192.168.2.1 ++#define CONFIG_NETMASK 255.255.255.0 ++#define CONFIG_SERVERIP 192.168.2.2 ++#define CONFIG_HOSTNAME AT91SAM9G20 ++#define CONFIG_LOADADDR 0x21400000 ++ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ "kernel_addr=0x000A0000\0" \ ++ "" ++ ++#define CONFIG_ZERO_BOOTDELAY_CHECK 1 ++ ++#endif +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9m10g45ek.h u-boot-1.3.4/include/configs/at91sam9m10g45ek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9m10g45ek.h 1969-12-31 17:00:00.000000000 -0700 ++++ u-boot-1.3.4/include/configs/at91sam9m10g45ek.h 2010-03-25 16:45:59.000000000 -0500 +@@ -0,0 +1,217 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * Configuation settings for the AT91SAM9M10G45EK board(and AT91SAM9G45EKES). ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#ifndef __CONFIG_H ++#define __CONFIG_H ++ ++/* ARM asynchronous clock */ ++#define AT91_CPU_NAME "AT91SAM9G45" ++#define AT91_MAIN_CLOCK 400000000 /* from 12 MHz crystal */ ++#define AT91_MASTER_CLOCK 133000000 /* peripheral = main / 3 */ ++#define CFG_HZ 1000000 /* 1us resolution */ ++ ++#define AT91_SLOW_CLOCK 32768 /* slow clock */ ++ ++#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */ ++#define CONFIG_AT91SAM9G45 1 /* It's an Atmel AT91SAM9G45 SoC*/ ++ ++#ifdef CFG_USE_AT91SAM9M10G45EK ++#define CONFIG_AT91SAM9M10G45EK 1 /* on an AT91SAM9M10G45EK Board */ ++#endif ++ ++#ifdef CFG_USE_AT91SAM9G45EKES ++#define CONFIG_AT91SAM9G45EKES 1 /* on an AT91SAM9G45EKES Board */ ++#endif ++ ++#ifdef CFG_USE_AT91SAM9M10EKES ++#define CONFIG_AT91SAM9M10EKES 1 /* on an AT91SAM9M10EKES Board */ ++#endif ++ ++#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ ++ ++#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ ++#define CONFIG_SETUP_MEMORY_TAGS 1 ++#define CONFIG_INITRD_TAG 1 ++ ++#define CONFIG_SKIP_LOWLEVEL_INIT ++#define CONFIG_SKIP_RELOCATE_UBOOT ++ ++/* ++ * Hardware drivers ++ */ ++#define CONFIG_ATMEL_USART 1 ++#undef CONFIG_USART0 ++#undef CONFIG_USART1 ++#undef CONFIG_USART2 ++#define CONFIG_USART3 1 /* USART 3 is DBGU */ ++ ++/* LCD */ ++//#define CONFIG_LCD 1 ++#undef CONFIG_LCD ++#define LCD_BPP LCD_COLOR8 ++#define CONFIG_LCD_LOGO 1 ++#undef LCD_TEST_PATTERN ++#define CONFIG_LCD_INFO 1 ++#define CONFIG_LCD_INFO_BELOW_LOGO 1 ++#define CFG_WHITE_ON_BLACK 1 ++#define CONFIG_ATMEL_LCD 1 ++#define CONFIG_ATMEL_LCD_BGR555 1 ++#define CFG_CONSOLE_IS_IN_ENV 1 ++ ++#define CONFIG_BOOTDELAY 3 ++ ++/* ++ * BOOTP options ++ */ ++#define CONFIG_BOOTP_BOOTFILESIZE 1 ++#define CONFIG_BOOTP_BOOTPATH 1 ++#define CONFIG_BOOTP_GATEWAY 1 ++#define CONFIG_BOOTP_HOSTNAME 1 ++ ++/* ++ * Command line configuration. ++ */ ++#include ++#undef CONFIG_CMD_BDI ++#undef CONFIG_CMD_IMI ++#undef CONFIG_CMD_AUTOSCRIPT ++#undef CONFIG_CMD_FPGA ++#undef CONFIG_CMD_LOADS ++#undef CONFIG_CMD_IMLS ++ ++#define CONFIG_CMD_PING 1 ++#define CONFIG_CMD_DHCP 1 ++#define CONFIG_CMD_NAND 1 ++#define CONFIG_CMD_USB 1 ++ ++/* SDRAM */ ++#define CONFIG_NR_DRAM_BANKS 1 ++#define PHYS_SDRAM 0x70000000 ++#define PHYS_SDRAM_SIZE 0x08000000 /* 128 megs */ ++ ++/* DataFlash */ ++#define CONFIG_HAS_DATAFLASH 1 ++#define CFG_SPI_WRITE_TOUT (5*CFG_HZ) ++#define CFG_MAX_DATAFLASH_BANKS 1 ++#define CFG_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */ ++#define AT91_SPI_CLK 15000000 ++#define DATAFLASH_TCSS (0x1a << 16) ++#define DATAFLASH_TCHS (0x1 << 24) ++ ++/* NOR flash, if populated */ ++#if 1 ++#define CFG_NO_FLASH 1 ++#else ++#define CFG_FLASH_CFI 1 ++#define CONFIG_FLASH_CFI_DRIVER 1 ++#define PHYS_FLASH_1 0x10000000 ++#define CFG_FLASH_BASE PHYS_FLASH_1 ++#define CFG_MAX_FLASH_SECT 256 ++#define CFG_MAX_FLASH_BANKS 1 ++#endif ++ ++/* NAND flash */ ++#define NAND_MAX_CHIPS 1 ++#define CFG_MAX_NAND_DEVICE 1 ++#define CFG_NAND_BASE 0x40000000 ++#define CFG_NAND_DBW_8 1 ++ ++/* Ethernet */ ++#define CONFIG_MACB 1 ++/* #define CONFIG_MII 1 */ ++#define CONFIG_RMII 1 ++#define CONFIG_NET_MULTI 1 ++#define CONFIG_NET_RETRY_COUNT 20 ++#define CONFIG_RESET_PHY_R 1 ++ ++/* USB */ ++#define CONFIG_USB_OHCI_NEW 1 ++#define LITTLEENDIAN 1 ++#define CONFIG_DOS_PARTITION 1 ++#define CFG_USB_OHCI_CPU_INIT 1 ++#define CFG_USB_OHCI_REGS_BASE 0x00700000 /* AT91SAM9G45_UHP_OHCI_BASE */ ++#define CFG_USB_OHCI_SLOT_NAME "at91sam9g45" ++#define CFG_USB_OHCI_MAX_ROOT_PORTS 2 ++#define CONFIG_USB_STORAGE 1 ++ ++#define CFG_LOAD_ADDR 0x22000000 /* load address */ ++ ++#define CFG_MEMTEST_START PHYS_SDRAM ++#define CFG_MEMTEST_END 0x23e00000 ++ ++#ifdef CFG_USE_DATAFLASH ++ ++/* bootstrap + u-boot + env + linux in dataflash on CS0 */ ++#define CFG_ENV_IS_IN_DATAFLASH 1 ++#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400) ++#define CFG_ENV_OFFSET 0x4200 ++#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET) ++#define CFG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x22000000 0x210000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock0 " \ ++ "mtdparts=at91_nand:-(root) "\ ++ "rw rootfstype=jffs2" ++ ++#else /* CFG_USE_NANDFLASH */ ++ ++/* bootstrap + u-boot + env + linux in nandflash */ ++#define CFG_ENV_IS_IN_NAND 1 ++#define CFG_ENV_OFFSET 0x60000 ++#define CFG_ENV_OFFSET_REDUND 0x80000 ++#define CFG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */ ++#define CONFIG_BOOTCOMMAND "nand read 0x22000000 0xA0000 0x200000; bootm" ++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \ ++ "root=/dev/mtdblock5 " \ ++ "mtdparts=at91_nand:128k(bootstrap)ro,256k(uboot)ro,128k(env1)ro,128k(env2)ro,2M(linux),-(root) " \ ++ "rw rootfstype=jffs2" ++ ++#endif ++ ++#define CONFIG_BAUDRATE 115200 ++#define CFG_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 } ++ ++#define CFG_PROMPT "U-Boot> " ++#define CFG_CBSIZE 256 ++#define CFG_MAXARGS 16 ++#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) ++#define CFG_LONGHELP 1 ++#define CONFIG_CMDLINE_EDITING 1 ++ ++#define ROUND(A, B) (((A) + (B)) & ~((B) - 1)) ++/* ++ * Size of malloc() pool ++ */ ++#define CFG_MALLOC_LEN ROUND(3 * CFG_ENV_SIZE + 128*1024, 0x1000) ++#define CFG_GBL_DATA_SIZE 128 /* 128 bytes for initial data */ ++ ++#define CONFIG_STACKSIZE (32*1024) /* regular stack */ ++ ++#ifdef CONFIG_USE_IRQ ++#error CONFIG_USE_IRQ not supported ++#endif ++ ++#endif +diff -uprN u-boot-1.3.4-vanilla/include/configs/at91sam9rlek.h u-boot-1.3.4/include/configs/at91sam9rlek.h +--- u-boot-1.3.4-vanilla/include/configs/at91sam9rlek.h 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/include/configs/at91sam9rlek.h 2010-03-25 16:45:59.000000000 -0500 +@@ -117,9 +117,6 @@ + #define CFG_MEMTEST_START PHYS_SDRAM + #define CFG_MEMTEST_END 0x23e00000 + +-#define CFG_USE_DATAFLASH 1 +-#undef CFG_USE_NANDFLASH +- + #ifdef CFG_USE_DATAFLASH + + /* bootstrap + u-boot + env + linux in dataflash on CS0 */ +diff -uprN u-boot-1.3.4-vanilla/Makefile u-boot-1.3.4/Makefile +--- u-boot-1.3.4-vanilla/Makefile 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/Makefile 2010-05-13 14:00:22.000000000 -0500 +@@ -2353,15 +2353,6 @@ shannon_config : unconfig + at91rm9200dk_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200dk atmel at91rm9200 + +-at91sam9261ek_config : unconfig +- @$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9261ek atmel at91sam9 +- +-at91sam9263ek_config : unconfig +- @$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9263ek atmel at91sam9 +- +-at91sam9rlek_config : unconfig +- @$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9rlek atmel at91sam9 +- + cmc_pu2_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm920t cmc_pu2 NULL at91rm9200 + +@@ -2384,8 +2375,175 @@ mp2usb_config : unconfig + at91cap9adk_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm926ejs at91cap9adk atmel at91sam9 + ++at91sam9260ek_nandflash_config \ ++at91sam9260ek_dataflash_cs0_config \ ++at91sam9260ek_dataflash_cs1_config \ + at91sam9260ek_config : unconfig +- @$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9260ek atmel at91sam9 ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \ ++ echo "#define CFG_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH_CS1 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9260ek arm arm926ejs at91sam9260ek atmel at91sam9 ++ ++at91sam9xeek_nandflash_config \ ++at91sam9xeek_dataflash_cs0_config \ ++at91sam9xeek_dataflash_cs1_config \ ++at91sam9xeek_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \ ++ echo "#define CFG_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH_CS1 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \ ++ fi; ++ @$(MKCONFIG) -n at91sam9xeek -a at91sam9260ek arm arm926ejs at91sam9260ek atmel at91sam9 ++ ++at91sam9g20ek_nandflash_config \ ++at91sam9g20ek_dataflash_cs0_config \ ++at91sam9g20ek_dataflash_cs1_config \ ++at91sam9g20ek_2mmc_nandflash_config \ ++at91sam9g20ek_2mmc_dataflash_cs0_config \ ++at91sam9g20ek_2mmc_dataflash_cs1_config \ ++at91sam9g20ek_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \ ++ echo "#define CFG_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH_CS1 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \ ++ fi; ++ @if [ "$(findstring _2mmc_,$@)" ] ; then \ ++ echo "#define CONFIG_AT91SAM9G20EK_2MMC 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... AT91SAM9G20EK board with two SD/MMC slots" ; \ ++ else \ ++ echo "#define CONFIG_AT91SAM9G20EK 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... AT91SAM9G20EK Board" ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9g20ek arm arm926ejs at91sam9g20ek atmel at91sam9 ++ ++at91sam9261ek_nandflash_config \ ++at91sam9261ek_dataflash_cs0_config \ ++at91sam9261ek_dataflash_cs3_config \ ++at91sam9261ek_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ elif [ "$(findstring dataflash_cs3,$@)" ] ; then \ ++ echo "#define CFG_USE_DATAFLASH_CS3 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS3" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9261ek arm arm926ejs at91sam9261ek atmel at91sam9 ++ ++at91sam9g10ek_nandflash_config \ ++at91sam9g10ek_dataflash_cs0_config \ ++at91sam9g10ek_dataflash_cs3_config \ ++at91sam9g10ek_config : unconfig ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \ ++ echo "#define CFG_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH_CS3 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS3" ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9g10ek arm arm926ejs at91sam9g10ek atmel at91sam9 ++ ++at91sam9263ek_nandflash_config \ ++at91sam9263ek_dataflash_config \ ++at91sam9263ek_dataflash_cs0_config \ ++at91sam9263ek_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9263ek arm arm926ejs at91sam9263ek atmel at91sam9 ++ ++at91sam9rlek_nandflash_config \ ++at91sam9rlek_dataflash_config \ ++at91sam9rlek_dataflash_cs0_config \ ++at91sam9rlek_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9rlek arm arm926ejs at91sam9rlek atmel at91sam9 ++ ++at91sam9m10g45ek_nandflash_config \ ++at91sam9m10g45ek_dataflash_config \ ++at91sam9m10g45ek_dataflash_cs0_config \ ++at91sam9m10g45ek_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ echo "#define CFG_USE_AT91SAM9M10G45EK 1" >>$(obj)include/config.h ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ echo "#define CFG_USE_AT91SAM9M10G45EK 1" >>$(obj)include/config.h ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek atmel at91sam9 ++ ++at91sam9g45ekes_nandflash_config \ ++at91sam9g45ekes_dataflash_config \ ++at91sam9g45ekes_dataflash_cs0_config \ ++at91sam9g45ekes_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ echo "#define CFG_USE_AT91SAM9G45EKES 1" >>$(obj)include/config.h ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ echo "#define CFG_USE_AT91SAM9G45EKES 1" >>$(obj)include/config.h ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek atmel at91sam9 ++ ++at91sam9m10ekes_nandflash_config \ ++at91sam9m10ekes_dataflash_config \ ++at91sam9m10ekes_dataflash_cs0_config \ ++at91sam9m10ekes_config : unconfig ++ @mkdir -p $(obj)include ++ @if [ "$(findstring _nandflash,$@)" ] ; then \ ++ echo "#define CFG_USE_NANDFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in NAND FLASH" ; \ ++ echo "#define CFG_USE_AT91SAM9M10EKES 1" >>$(obj)include/config.h ; \ ++ else \ ++ echo "#define CFG_USE_DATAFLASH 1" >>$(obj)include/config.h ; \ ++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \ ++ echo "#define CFG_USE_AT91SAM9M10EKES 1" >>$(obj)include/config.h ; \ ++ fi; ++ @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek atmel at91sam9 + + ######################################################################## + ## ARM Integrator boards - see doc/README-integrator for more info. +diff -uprN u-boot-1.3.4-vanilla/net/eth.c u-boot-1.3.4/net/eth.c +--- u-boot-1.3.4-vanilla/net/eth.c 2008-08-12 09:08:38.000000000 -0500 ++++ u-boot-1.3.4/net/eth.c 2010-03-25 16:45:59.000000000 -0500 +@@ -287,7 +287,7 @@ int eth_initialize(bd_t *bis) + mcdmafec_initialize(bis); + #endif + #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ +- defined(CONFIG_AT91SAM9263) ++ defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) + at91sam9_eth_initialize(bis); + #endif + diff --git a/multitech/recipes/u-boot/u-boot_1.3.4.bb b/multitech/recipes/u-boot/u-boot_1.3.4.bb index 3ffcdb1..4179176 100644 --- a/multitech/recipes/u-boot/u-boot_1.3.4.bb +++ b/multitech/recipes/u-boot/u-boot_1.3.4.bb @@ -1,6 +1,6 @@ require recipes/u-boot/u-boot.inc -PR = "r9" +PR = "r10" ALLOW_EMPTY = 1 SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \ @@ -9,12 +9,7 @@ SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 \ SRC_URI[md5sum] = "ca12b805b4f2bdcf15733be3fe22e896" SRC_URI[sha256sum] = "096aa286d923b7cc356bbe0dda0a29a701369deeb27ada1a2f053155aa403c31" -SRC_URI_append_mtcdp = "\ - file://u-boot-${PV}-mts.patch \ - file://fw_env.config \ -" - -SRC_URI_append_mt100eocg = "\ +SRC_URI_append = "\ file://u-boot-${PV}-mts.patch \ file://fw_env.config \ " @@ -28,8 +23,7 @@ FILES_${PN} = " \ ${base_sbindir}/fw_printenv \ " -FILES_${PN}_append_mtcdp = "${sysconfdir}/fw_env.config" -FILES_${PN}_append_mt100eocg = "${sysconfdir}/fw_env.config" +FILES_${PN}_append = "${sysconfdir}/fw_env.config" do_configure_prepend() { mv -f tools/setlocalversion tools/setlocalversion.old -- cgit v1.2.3 From edb40dd443950086addfb469ae850a07524a571d Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:02:25 -0500 Subject: hostap: add hostap-daemon-1.0 --- multitech/recipes/hostap/hostap-daemon-1.0.inc | 26 ++++ .../recipes/hostap/hostap-daemon-1.0/defconfig | 145 +++++++++++++++++++++ multitech/recipes/hostap/hostap-daemon-1.0/init | 37 ++++++ multitech/recipes/hostap/hostap-daemon_1.0.bb | 17 +++ 4 files changed, 225 insertions(+) create mode 100644 multitech/recipes/hostap/hostap-daemon-1.0.inc create mode 100644 multitech/recipes/hostap/hostap-daemon-1.0/defconfig create mode 100644 multitech/recipes/hostap/hostap-daemon-1.0/init create mode 100644 multitech/recipes/hostap/hostap-daemon_1.0.bb (limited to 'multitech') diff --git a/multitech/recipes/hostap/hostap-daemon-1.0.inc b/multitech/recipes/hostap/hostap-daemon-1.0.inc new file mode 100644 index 0000000..49f2650 --- /dev/null +++ b/multitech/recipes/hostap/hostap-daemon-1.0.inc @@ -0,0 +1,26 @@ +HOMEPAGE = "http://hostap.epitest.fi" +SECTION = "kernel/userland" +PRIORITY = "optional" +LICENSE = "GPL" +DEPENDS = "libnl openssl" + +inherit update-rc.d +INITSCRIPT_NAME=hostapd + +do_configure() { + install -m 0644 ${WORKDIR}/defconfig ${S}/.config +} + +do_compile() { + make +} + +do_install() { + install -d ${D}${sbindir} ${D}${sysconfdir}/init.d + install -m 0644 ${S}/hostapd.conf ${D}${sysconfdir} + install -m 0755 ${S}/hostapd ${D}${sbindir} + install -m 0755 ${S}/hostapd_cli ${D}${sbindir} + install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd +} + +CONFFILES_${PN} += "${sysconfdir}/hostapd.conf" diff --git a/multitech/recipes/hostap/hostap-daemon-1.0/defconfig b/multitech/recipes/hostap/hostap-daemon-1.0/defconfig new file mode 100644 index 0000000..1f3c6f4 --- /dev/null +++ b/multitech/recipes/hostap/hostap-daemon-1.0/defconfig @@ -0,0 +1,145 @@ +# Example hostapd build time configuration +# +# This file lists the configuration options that are used when building the +# hostapd binary. All lines starting with # are ignored. Configuration option +# lines must be commented out complete, if they are not to be included, i.e., +# just setting VARIABLE=n is not disabling that variable. +# +# This file is included in Makefile, so variables like CFLAGS and LIBS can also +# be modified from here. In most cass, these lines should use += in order not +# to override previous values of the variables. + +# Driver interface for Host AP driver +CONFIG_DRIVER_HOSTAP=y + +# Driver interface for wired authenticator +CONFIG_DRIVER_WIRED=y + +# Driver interface for madwifi driver +#CONFIG_DRIVER_MADWIFI=y +#CFLAGS += -I../../madwifi # change to the madwifi source directory + +# Driver interface for Prism54 driver +CONFIG_DRIVER_PRISM54=y + +# Driver interface for drivers using the nl80211 kernel interface +CONFIG_DRIVER_NL80211=y +CONFIG_LIBNL20=y +# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be +# shipped with your distribution yet. If that is the case, you need to build +# newer libnl version and point the hostapd build to use it. +#LIBNL=/usr/src/libnl +#CFLAGS += -I$(LIBNL)/include +#LIBS += -L$(LIBNL)/lib + +# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) +#CONFIG_DRIVER_BSD=y +#CFLAGS += -I/usr/local/include +#LIBS += -L/usr/local/lib + +# Driver interface for no driver (e.g., RADIUS server only) +#CONFIG_DRIVER_NONE=y + +# IEEE 802.11F/IAPP +CONFIG_IAPP=y + +# WPA2/IEEE 802.11i RSN pre-authentication +CONFIG_RSN_PREAUTH=y + +# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) +CONFIG_PEERKEY=y + +# IEEE 802.11w (management frame protection) +# This version is an experimental implementation based on IEEE 802.11w/D1.0 +# draft and is subject to change since the standard has not yet been finalized. +# Driver support is also needed for IEEE 802.11w. +#CONFIG_IEEE80211W=y + +# Integrated EAP server +CONFIG_EAP=y + +# EAP-MD5 for the integrated EAP server +CONFIG_EAP_MD5=y + +# EAP-TLS for the integrated EAP server +CONFIG_EAP_TLS=y + +# EAP-MSCHAPv2 for the integrated EAP server +CONFIG_EAP_MSCHAPV2=y + +# EAP-PEAP for the integrated EAP server +CONFIG_EAP_PEAP=y + +# EAP-GTC for the integrated EAP server +CONFIG_EAP_GTC=y + +# EAP-TTLS for the integrated EAP server +CONFIG_EAP_TTLS=y + +# EAP-SIM for the integrated EAP server +#CONFIG_EAP_SIM=y + +# EAP-AKA for the integrated EAP server +#CONFIG_EAP_AKA=y + +# EAP-AKA' for the integrated EAP server +# This requires CONFIG_EAP_AKA to be enabled, too. +#CONFIG_EAP_AKA_PRIME=y + +# EAP-PAX for the integrated EAP server +#CONFIG_EAP_PAX=y + +# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK) +#CONFIG_EAP_PSK=y + +# EAP-SAKE for the integrated EAP server +#CONFIG_EAP_SAKE=y + +# EAP-GPSK for the integrated EAP server +#CONFIG_EAP_GPSK=y +# Include support for optional SHA256 cipher suite in EAP-GPSK +#CONFIG_EAP_GPSK_SHA256=y + +# EAP-FAST for the integrated EAP server +# Note: Default OpenSSL package does not include support for all the +# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, +# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch) +# to add the needed functions. +#CONFIG_EAP_FAST=y + +# Wi-Fi Protected Setup (WPS) +CONFIG_WPS=y +# Enable UPnP support for external WPS Registrars +#CONFIG_WPS_UPNP=y + +# EAP-IKEv2 +#CONFIG_EAP_IKEV2=y + +# Trusted Network Connect (EAP-TNC) +#CONFIG_EAP_TNC=y + +# PKCS#12 (PFX) support (used to read private key and certificate file from +# a file that usually has extension .p12 or .pfx) +CONFIG_PKCS12=y + +# RADIUS authentication server. This provides access to the integrated EAP +# server from external hosts using RADIUS. +CONFIG_RADIUS_SERVER=y + +# Build IPv6 support for RADIUS operations +CONFIG_IPV6=y + +# IEEE Std 802.11r-2008 (Fast BSS Transition) +#CONFIG_IEEE80211R=y + +# Use the hostapd's IEEE 802.11 authentication (ACL), but without +# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211) +CONFIG_DRIVER_RADIUS_ACL=y + +# IEEE 802.11n (High Throughput) support +CONFIG_IEEE80211N=y + +# Remove debugging code that is printing out debug messages to stdout. +# This can be used to reduce the size of the hostapd considerably if debugging +# code is not needed. +#CONFIG_NO_STDOUT_DEBUG=y diff --git a/multitech/recipes/hostap/hostap-daemon-1.0/init b/multitech/recipes/hostap/hostap-daemon-1.0/init new file mode 100644 index 0000000..79f74b6 --- /dev/null +++ b/multitech/recipes/hostap/hostap-daemon-1.0/init @@ -0,0 +1,37 @@ +#!/bin/sh +DAEMON=/usr/sbin/hostapd +NAME=hostapd +DESC="HOSTAP Daemon" +ARGS="/etc/hostapd.conf -B" + +test -f $DAEMON || exit 0 + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon -S -x $DAEMON -- $ARGS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon -K -x $DAEMON + echo "$NAME." + ;; + restart) + $0 stop + $0 start + ;; + reload) + echo -n "Reloading $DESC: " + killall -HUP $(basename ${DAEMON}) + echo "$NAME." + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/multitech/recipes/hostap/hostap-daemon_1.0.bb b/multitech/recipes/hostap/hostap-daemon_1.0.bb new file mode 100644 index 0000000..863c7ed --- /dev/null +++ b/multitech/recipes/hostap/hostap-daemon_1.0.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "User space daemon for extended IEEE 802.11 management" + +require hostap-daemon-1.0.inc + +PR = "r0" + +#DEFAULT_PREFERENCE = "-1" + +SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \ + file://defconfig \ + file://init" +SRC_URI[md5sum] = "236247a7bbd4f60d5fa3e99849d1ffc9" +SRC_URI[sha256sum] = "002e9dcb7e46cf82b5900a2fcf92b30fc8cdfd32a72d7fd4488588f1c013dfcc" + +S = "${WORKDIR}/hostapd-${PV}/hostapd" + + -- cgit v1.2.3 From 9499096898a3ff01b5d5589770d537c75b73c591 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:02:48 -0500 Subject: wpa-supplicant: add 1.0 --- .../recipes/wpa-supplicant/wpa-supplicant-1.0.inc | 94 +++ .../wpa-supplicant-1.0/99_wpa_supplicant | 1 + .../wpa-supplicant-1.0/defaults-sane | 8 + .../wpa-supplicant/wpa-supplicant-1.0/defconfig | 409 ++++++++++++ .../wpa-supplicant-1.0/wpa-supplicant.sh | 85 +++ .../wpa-supplicant-1.0/wpa_supplicant.conf | 690 +++++++++++++++++++++ .../wpa-supplicant-1.0/wpa_supplicant.conf-sane | 7 + .../recipes/wpa-supplicant/wpa-supplicant_1.0.bb | 6 + 8 files changed, 1300 insertions(+) create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/99_wpa_supplicant create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defaults-sane create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defconfig create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa-supplicant.sh create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf-sane create mode 100644 multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb (limited to 'multitech') diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc new file mode 100644 index 0000000..7ca4cc3 --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0.inc @@ -0,0 +1,94 @@ +DESCRIPTION = "A Client for Wi-Fi Protected Access (WPA)." +HOMEPAGE = "http://hostap.epitest.fi/wpa_supplicant/" +BUGTRACKER = "http://hostap.epitest.fi/bugz/" +SECTION = "network" +LICENSE = "GPLv2 | BSD" +LIC_FILES_CHKSUM = "file://../COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ + file://../README;md5=54cfc88015d3ce83f7156e63c6bb1738 \ + file://wpa_supplicant.c;beginline=1;endline=17;md5=acdc5a4b0d6345f21f136eace747260e" +DEPENDS = "gnutls dbus libnl openssl ${@base_contains("COMBINED_FEATURES", "madwifi", "madwifi-ng", "",d)}" +RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli" +INC_PR = "r0" + +SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \ + file://defconfig \ + file://defaults-sane \ + file://wpa-supplicant.sh \ + file://wpa_supplicant.conf \ + file://wpa_supplicant.conf-sane \ + file://99_wpa_supplicant" + +S = "${WORKDIR}/wpa_supplicant-${PV}/wpa_supplicant" + +PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli " +FILES_wpa-supplicant-passphrase = "/usr/sbin/wpa_passphrase" +FILES_wpa-supplicant-cli = "/usr/sbin/wpa_cli" +FILES_${PN} += " /usr/share/dbus-1/system-services/*" + +do_configure () { + install -m 0755 ${WORKDIR}/defconfig .config + if [ "${@base_contains('COMBINED_FEATURES', 'madwifi', 1, 0, d)}" = "1" ]; then + echo "CONFIG_DRIVER_MADWIFI=y" >> .config + echo "CFLAGS += -I${STAGING_INCDIR}/madwifi-ng" >> .config + fi +} + +do_compile () { + make +} + +do_install () { + install -d ${D}${sbindir} + install -m 755 wpa_supplicant ${D}${sbindir} + install -m 755 wpa_passphrase ${D}${sbindir} + install -m 755 wpa_cli ${D}${sbindir} + + install -d ${D}${docdir}/wpa_supplicant + install -m 644 README ${WORKDIR}/wpa_supplicant.conf ${D}${docdir}/wpa_supplicant + + install -d ${D}${sysconfdir}/default + install -m 600 ${WORKDIR}/defaults-sane ${D}${sysconfdir}/default/wpa + install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf + + if grep -q ^CONFIG_CTRL_IFACE_DBUS=y .config || grep -q ^CONFIG_CTRL_IFACE_DBUS_NEW=y .config; then + install -d ${D}/${sysconfdir}/dbus-1/system.d + install -m 644 ${S}/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d + install -d ${D}/${datadir}/dbus-1/system-services + if grep -q ^CONFIG_CTRL_IFACE_DBUS=y .config; then + sed -i -e s:/sbin:${sbindir}:g ${S}/dbus/fi.epitest.hostap.WPASupplicant.service + install -m 644 ${S}/dbus/fi.epitest.hostap.WPASupplicant.service ${D}/${datadir}/dbus-1/system-services + fi + if grep -q ^CONFIG_CTRL_IFACE_DBUS_NEW=y .config; then + sed -i -e s:/sbin:${sbindir}:g ${S}/dbus/fi.w1.wpa_supplicant1.service + install -m 644 ${S}/dbus/fi.w1.wpa_supplicant1.service ${D}/${datadir}/dbus-1/system-services + fi + fi + + install -d ${D}${sysconfdir}/network/if-pre-up.d/ + install -d ${D}${sysconfdir}/network/if-post-down.d/ + install -d ${D}${sysconfdir}/network/if-down.d/ + install -m 644 ${WORKDIR}/wpa_supplicant.conf ${D}${sysconfdir} + install -m 755 ${WORKDIR}/wpa-supplicant.sh ${D}${sysconfdir}/network/if-pre-up.d/wpa-supplicant + cd ${D}${sysconfdir}/network/ && \ + ln -sf ../if-pre-up.d/wpa-supplicant if-post-down.d/wpa-supplicant + + install -d ${D}/etc/default/volatiles + install -m 0644 ${WORKDIR}/99_wpa_supplicant ${D}/etc/default/volatiles +} + +#we introduce MY_ARCH to get 'armv5te' as arch instead of the misleading 'arm' on armv5te builds +MY_ARCH := "${PACKAGE_ARCH}" +PACKAGE_ARCH = "${@base_contains('COMBINED_FEATURES', 'madwifi', '${MACHINE_ARCH}', '${MY_ARCH}', d)}" + +pkg_postinst_wpa-supplicant () { + # can't do this offline + if [ "x$D" != "x" ]; then + exit 1 + fi + + DBUSPID=`pidof dbus-daemon` + + if [ "x$DBUSPID" != "x" ]; then + /etc/init.d/dbus-1 reload + fi +} diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/99_wpa_supplicant b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/99_wpa_supplicant new file mode 100644 index 0000000..6ff4dd8 --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/99_wpa_supplicant @@ -0,0 +1 @@ +d root root 0700 /var/run/wpa_supplicant none diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defaults-sane b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defaults-sane new file mode 100644 index 0000000..67c4cbd --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defaults-sane @@ -0,0 +1,8 @@ +# Useful flags: +# -i Interface (required, unless specified in config) +# -D Wireless Driver +# -d Debugging (-dd for more) +# -q Quiet (-qq for more) + +CONFIG="/etc/wpa_supplicant.conf" +OPTIONS="-i eth1 -D wext" diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defconfig b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defconfig new file mode 100644 index 0000000..4136225 --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/defconfig @@ -0,0 +1,409 @@ +# Example wpa_supplicant build time configuration +# +# This file lists the configuration options that are used when building the +# hostapd binary. All lines starting with # are ignored. Configuration option +# lines must be commented out complete, if they are not to be included, i.e., +# just setting VARIABLE=n is not disabling that variable. +# +# This file is included in Makefile, so variables like CFLAGS and LIBS can also +# be modified from here. In most cases, these lines should use += in order not +# to override previous values of the variables. + + +# Uncomment following two lines and fix the paths if you have installed OpenSSL +# or GnuTLS in non-default location +#CFLAGS += -I/usr/local/openssl/include +#LIBS += -L/usr/local/openssl/lib + +# Some Red Hat versions seem to include kerberos header files from OpenSSL, but +# the kerberos files are not in the default include path. Following line can be +# used to fix build issues on such systems (krb5.h not found). +#CFLAGS += -I/usr/include/kerberos + +# Example configuration for various cross-compilation platforms + +#### sveasoft (e.g., for Linksys WRT54G) ###################################### +#CC=mipsel-uclibc-gcc +#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc +#CFLAGS += -Os +#CPPFLAGS += -I../src/include -I../../src/router/openssl/include +#LIBS += -L/opt/brcm/hndtools-mipsel-uclibc-0.9.19/lib -lssl +############################################################################### + +#### openwrt (e.g., for Linksys WRT54G) ####################################### +#CC=mipsel-uclibc-gcc +#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc +#CFLAGS += -Os +#CPPFLAGS=-I../src/include -I../openssl-0.9.7d/include \ +# -I../WRT54GS/release/src/include +#LIBS = -lssl +############################################################################### + + +# Driver interface for Host AP driver +CONFIG_DRIVER_HOSTAP=y + +# Driver interface for Agere driver +#CONFIG_DRIVER_HERMES=y +# Change include directories to match with the local setup +#CFLAGS += -I../../hcf -I../../include -I../../include/hcf +#CFLAGS += -I../../include/wireless + +# Driver interface for madwifi driver +# Deprecated; use CONFIG_DRIVER_WEXT=y instead. +#CONFIG_DRIVER_MADWIFI=y +# Set include directory to the madwifi source tree +#CFLAGS += -I../../madwifi + +# Driver interface for ndiswrapper +# Deprecated; use CONFIG_DRIVER_WEXT=y instead. +#CONFIG_DRIVER_NDISWRAPPER=y + +# Driver interface for Atmel driver +# CONFIG_DRIVER_ATMEL=y + +# Driver interface for old Broadcom driver +# Please note that the newer Broadcom driver ("hybrid Linux driver") supports +# Linux wireless extensions and does not need (or even work) with the old +# driver wrapper. Use CONFIG_DRIVER_WEXT=y with that driver. +#CONFIG_DRIVER_BROADCOM=y +# Example path for wlioctl.h; change to match your configuration +#CFLAGS += -I/opt/WRT54GS/release/src/include + +# Driver interface for Intel ipw2100/2200 driver +# Deprecated; use CONFIG_DRIVER_WEXT=y instead. +#CONFIG_DRIVER_IPW=y + +# Driver interface for Ralink driver +#CONFIG_DRIVER_RALINK=y + +# Driver interface for generic Linux wireless extensions +CONFIG_DRIVER_WEXT=y + +# Driver interface for Linux drivers using the nl80211 kernel interface +CONFIG_DRIVER_NL80211=y +CONFIG_LIBNL20=y + +# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) +#CONFIG_DRIVER_BSD=y +#CFLAGS += -I/usr/local/include +#LIBS += -L/usr/local/lib +#LIBS_p += -L/usr/local/lib +#LIBS_c += -L/usr/local/lib + +# Driver interface for Windows NDIS +#CONFIG_DRIVER_NDIS=y +#CFLAGS += -I/usr/include/w32api/ddk +#LIBS += -L/usr/local/lib +# For native build using mingw +#CONFIG_NATIVE_WINDOWS=y +# Additional directories for cross-compilation on Linux host for mingw target +#CFLAGS += -I/opt/mingw/mingw32/include/ddk +#LIBS += -L/opt/mingw/mingw32/lib +#CC=mingw32-gcc +# By default, driver_ndis uses WinPcap for low-level operations. This can be +# replaced with the following option which replaces WinPcap calls with NDISUIO. +# However, this requires that WZC is disabled (net stop wzcsvc) before starting +# wpa_supplicant. +# CONFIG_USE_NDISUIO=y + +# Driver interface for development testing +#CONFIG_DRIVER_TEST=y + +# Include client MLME (management frame processing) for test driver +# This can be used to test MLME operations in hostapd with the test interface. +# space. +#CONFIG_CLIENT_MLME=y + +# Driver interface for wired Ethernet drivers +CONFIG_DRIVER_WIRED=y + +# Driver interface for the Broadcom RoboSwitch family +#CONFIG_DRIVER_ROBOSWITCH=y + +# Driver interface for no driver (e.g., WPS ER only) +#CONFIG_DRIVER_NONE=y + +# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is +# included) +CONFIG_IEEE8021X_EAPOL=y + +# EAP-MD5 +CONFIG_EAP_MD5=y + +# EAP-MSCHAPv2 +CONFIG_EAP_MSCHAPV2=y + +# EAP-TLS +CONFIG_EAP_TLS=y + +# EAL-PEAP +CONFIG_EAP_PEAP=y + +# EAP-TTLS +CONFIG_EAP_TTLS=y + +# EAP-FAST +# Note: Default OpenSSL package does not include support for all the +# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, +# the OpenSSL library must be patched (openssl-0.9.8d-tls-extensions.patch) +# to add the needed functions. +#CONFIG_EAP_FAST=y + +# EAP-GTC +CONFIG_EAP_GTC=y + +# EAP-OTP +CONFIG_EAP_OTP=y + +# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used) +#CONFIG_EAP_SIM=y + +# EAP-PSK (experimental; this is _not_ needed for WPA-PSK) +#CONFIG_EAP_PSK=y + +# EAP-PAX +#CONFIG_EAP_PAX=y + +# LEAP +CONFIG_EAP_LEAP=y + +# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used) +#CONFIG_EAP_AKA=y + +# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used). +# This requires CONFIG_EAP_AKA to be enabled, too. +#CONFIG_EAP_AKA_PRIME=y + +# Enable USIM simulator (Milenage) for EAP-AKA +#CONFIG_USIM_SIMULATOR=y + +# EAP-SAKE +#CONFIG_EAP_SAKE=y + +# EAP-GPSK +#CONFIG_EAP_GPSK=y +# Include support for optional SHA256 cipher suite in EAP-GPSK +#CONFIG_EAP_GPSK_SHA256=y + +# EAP-TNC and related Trusted Network Connect support (experimental) +#CONFIG_EAP_TNC=y + +# Wi-Fi Protected Setup (WPS) +#CONFIG_WPS=y + +# EAP-IKEv2 +#CONFIG_EAP_IKEV2=y + +# PKCS#12 (PFX) support (used to read private key and certificate file from +# a file that usually has extension .p12 or .pfx) +CONFIG_PKCS12=y + +# Smartcard support (i.e., private key on a smartcard), e.g., with openssl +# engine. +CONFIG_SMARTCARD=y + +# PC/SC interface for smartcards (USIM, GSM SIM) +# Enable this if EAP-SIM or EAP-AKA is included +#CONFIG_PCSC=y + +# Development testing +#CONFIG_EAPOL_TEST=y + +# Select control interface backend for external programs, e.g, wpa_cli: +# unix = UNIX domain sockets (default for Linux/*BSD) +# udp = UDP sockets using localhost (127.0.0.1) +# named_pipe = Windows Named Pipe (default for Windows) +# y = use default (backwards compatibility) +# If this option is commented out, control interface is not included in the +# build. +CONFIG_CTRL_IFACE=y + +# Include support for GNU Readline and History Libraries in wpa_cli. +# When building a wpa_cli binary for distribution, please note that these +# libraries are licensed under GPL and as such, BSD license may not apply for +# the resulting binary. +#CONFIG_READLINE=y + +# Remove debugging code that is printing out debug message to stdout. +# This can be used to reduce the size of the wpa_supplicant considerably +# if debugging code is not needed. The size reduction can be around 35% +# (e.g., 90 kB). +#CONFIG_NO_STDOUT_DEBUG=y + +# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save +# 35-50 kB in code size. +#CONFIG_NO_WPA=y + +# Remove WPA2 support. This allows WPA to be used, but removes WPA2 code to +# save about 1 kB in code size when building only WPA-Personal (no EAP support) +# or 6 kB if building for WPA-Enterprise. +#CONFIG_NO_WPA2=y + +# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support +# This option can be used to reduce code size by removing support for +# converting ASCII passphrases into PSK. If this functionality is removed, the +# PSK can only be configured as the 64-octet hexstring (e.g., from +# wpa_passphrase). This saves about 0.5 kB in code size. +#CONFIG_NO_WPA_PASSPHRASE=y + +# Disable scan result processing (ap_mode=1) to save code size by about 1 kB. +# This can be used if ap_scan=1 mode is never enabled. +#CONFIG_NO_SCAN_PROCESSING=y + +# Select configuration backend: +# file = text file (e.g., wpa_supplicant.conf; note: the configuration file +# path is given on command line, not here; this option is just used to +# select the backend that allows configuration files to be used) +# winreg = Windows registry (see win_example.reg for an example) +CONFIG_BACKEND=file + +# Remove configuration write functionality (i.e., to allow the configuration +# file to be updated based on runtime configuration changes). The runtime +# configuration can still be changed, the changes are just not going to be +# persistent over restarts. This option can be used to reduce code size by +# about 3.5 kB. +#CONFIG_NO_CONFIG_WRITE=y + +# Remove support for configuration blobs to reduce code size by about 1.5 kB. +#CONFIG_NO_CONFIG_BLOBS=y + +# Select program entry point implementation: +# main = UNIX/POSIX like main() function (default) +# main_winsvc = Windows service (read parameters from registry) +# main_none = Very basic example (development use only) +#CONFIG_MAIN=main + +# Select wrapper for operatins system and C library specific functions +# unix = UNIX/POSIX like systems (default) +# win32 = Windows systems +# none = Empty template +#CONFIG_OS=unix + +# Select event loop implementation +# eloop = select() loop (default) +# eloop_win = Windows events and WaitForMultipleObject() loop +# eloop_none = Empty template +#CONFIG_ELOOP=eloop + +# Select layer 2 packet implementation +# linux = Linux packet socket (default) +# pcap = libpcap/libdnet/WinPcap +# freebsd = FreeBSD libpcap +# winpcap = WinPcap with receive thread +# ndis = Windows NDISUIO (note: requires CONFIG_USE_NDISUIO=y) +# none = Empty template +#CONFIG_L2_PACKET=linux + +# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) +CONFIG_PEERKEY=y + +# IEEE 802.11w (management frame protection) +# This version is an experimental implementation based on IEEE 802.11w/D1.0 +# draft and is subject to change since the standard has not yet been finalized. +# Driver support is also needed for IEEE 802.11w. +#CONFIG_IEEE80211W=y + +# Select TLS implementation +# openssl = OpenSSL (default) +# gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA) +# internal = Internal TLSv1 implementation (experimental) +# none = Empty template +#CONFIG_TLS=openssl + +# Whether to enable TLS/IA support, which is required for EAP-TTLSv1. +# You need CONFIG_TLS=gnutls for this to have any effect. Please note that +# even though the core GnuTLS library is released under LGPL, this extra +# library uses GPL and as such, the terms of GPL apply to the combination +# of wpa_supplicant and GnuTLS if this option is enabled. BSD license may not +# apply for distribution of the resulting binary. +#CONFIG_GNUTLS_EXTRA=y + +# If CONFIG_TLS=internal is used, additional library and include paths are +# needed for LibTomMath. Alternatively, an integrated, minimal version of +# LibTomMath can be used. See beginning of libtommath.c for details on benefits +# and drawbacks of this option. +#CONFIG_INTERNAL_LIBTOMMATH=y +#ifndef CONFIG_INTERNAL_LIBTOMMATH +#LTM_PATH=/usr/src/libtommath-0.39 +#CFLAGS += -I$(LTM_PATH) +#LIBS += -L$(LTM_PATH) +#LIBS_p += -L$(LTM_PATH) +#endif +# At the cost of about 4 kB of additional binary size, the internal LibTomMath +# can be configured to include faster routines for exptmod, sqr, and div to +# speed up DH and RSA calculation considerably +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y + +# Include NDIS event processing through WMI into wpa_supplicant/wpasvc. +# This is only for Windows builds and requires WMI-related header files and +# WbemUuid.Lib from Platform SDK even when building with MinGW. +#CONFIG_NDIS_EVENTS_INTEGRATED=y +#PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib" + +# Add support for old DBus control interface +# (fi.epitest.hostap.WPASupplicant) +CONFIG_CTRL_IFACE_DBUS=y + +# Add support for new DBus control interface +# (fi.w1.hostap.wpa_supplicant1) +CONFIG_CTRL_IFACE_DBUS_NEW=y + +# Add introspection support for new DBus control interface +#CONFIG_CTRL_IFACE_DBUS_INTRO=y + +# Add support for loading EAP methods dynamically as shared libraries. +# When this option is enabled, each EAP method can be either included +# statically (CONFIG_EAP_=y) or dynamically (CONFIG_EAP_=dyn). +# Dynamic EAP methods are build as shared objects (eap_*.so) and they need to +# be loaded in the beginning of the wpa_supplicant configuration file +# (see load_dynamic_eap parameter in the example file) before being used in +# the network blocks. +# +# Note that some shared parts of EAP methods are included in the main program +# and in order to be able to use dynamic EAP methods using these parts, the +# main program must have been build with the EAP method enabled (=y or =dyn). +# This means that EAP-TLS/PEAP/TTLS/FAST cannot be added as dynamic libraries +# unless at least one of them was included in the main build to force inclusion +# of the shared code. Similarly, at least one of EAP-SIM/AKA must be included +# in the main build to be able to load these methods dynamically. +# +# Please also note that using dynamic libraries will increase the total binary +# size. Thus, it may not be the best option for targets that have limited +# amount of memory/flash. +#CONFIG_DYNAMIC_EAP_METHODS=y + +# IEEE Std 802.11r-2008 (Fast BSS Transition) +#CONFIG_IEEE80211R=y + +# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt) +#CONFIG_DEBUG_FILE=y + +# Enable privilege separation (see README 'Privilege separation' for details) +#CONFIG_PRIVSEP=y + +# Enable mitigation against certain attacks against TKIP by delaying Michael +# MIC error reports by a random amount of time between 0 and 60 seconds +#CONFIG_DELAYED_MIC_ERROR_REPORT=y + +# Enable tracing code for developer debugging +# This tracks use of memory allocations and other registrations and reports +# incorrect use with a backtrace of call (or allocation) location. +#CONFIG_WPA_TRACE=y +# For BSD, comment out these. +#LIBS += -lexecinfo +#LIBS_p += -lexecinfo +#LIBS_c += -lexecinfo + +# Use libbfd to get more details for developer debugging +# This enables use of libbfd to get more detailed symbols for the backtraces +# generated by CONFIG_WPA_TRACE=y. +#CONFIG_WPA_TRACE_BFD=y +# For BSD, comment out these. +#LIBS += -lbfd -liberty -lz +#LIBS_p += -lbfd -liberty -lz +#LIBS_c += -lbfd -liberty -lz +CONFIG_TLS = gnutls +CONFIG_GNUTLS_EXTRA=y +CONFIG_CTRL_IFACE_DBUS=y +CONFIG_CTRL_IFACE_DBUS_NEW=y diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa-supplicant.sh b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa-supplicant.sh new file mode 100644 index 0000000..5c9e5d3 --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa-supplicant.sh @@ -0,0 +1,85 @@ +#!/bin/sh + + +WPA_SUP_BIN="/usr/sbin/wpa_supplicant" +WPA_SUP_PNAME="wpa_supplicant" +WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$IFACE.pid" +WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $IFACE" + +VERBOSITY=0 + + +if [ -s "$IF_WPA_CONF" ]; then + WPA_SUP_CONF="-c $IF_WPA_CONF" +else + exit 0 +fi + +if [ ! -x "$WPA_SUP_BIN" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN" + fi + + exit 1 +fi + +if [ "$MODE" = "start" ] ; then + # driver type of interface, defaults to wext when undefined + if [ -s "/etc/wpa_supplicant/driver.$IFACE" ]; then + IF_WPA_DRIVER=$(cat "/etc/wpa_supplicant/driver.$IFACE") + elif [ -z "$IF_WPA_DRIVER" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\"" + fi + + IF_WPA_DRIVER="wext" + fi + + # if we have passed the criteria, start wpa_supplicant + if [ -n "$WPA_SUP_CONF" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER" + fi + + start-stop-daemon --start --quiet \ + --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \ + -- $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER + fi + + # if the interface socket exists, then wpa_supplicant was invoked successfully + if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: ctrl_interface socket located at $WPA_COMMON_CTRL_IFACE/$IFACE" + fi + + exit 0 + + fi + +elif [ "$MODE" = "stop" ]; then + + if [ -f "$WPA_SUP_PIDFILE" ]; then + + if [ "$VERBOSITY" = "1" ]; then + echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon" + fi + + start-stop-daemon --stop --quiet \ + --name $WPA_SUP_PNAME --pidfile $WPA_SUP_PIDFILE + + if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then + rm -f $WPA_COMMON_CTRL_IFACE/$IFACE + fi + + if [ -f "$WPA_SUP_PIDFILE" ]; then + rm -f $WPA_SUP_PIDFILE + fi + fi + +fi + +exit 0 diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf new file mode 100644 index 0000000..f0c993d --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf @@ -0,0 +1,690 @@ +##### Example wpa_supplicant configuration file ############################### +# +# This file describes configuration file format and lists all available option. +# Please also take a look at simpler configuration examples in 'examples' +# subdirectory. +# +# Empty lines and lines starting with # are ignored + +# NOTE! This file may contain password information and should probably be made +# readable only by root user on multiuser systems. + +# Note: All file paths in this configuration file should use full (absolute, +# not relative to working directory) path in order to allow working directory +# to be changed. This can happen if wpa_supplicant is run in the background. + +# Whether to allow wpa_supplicant to update (overwrite) configuration +# +# This option can be used to allow wpa_supplicant to overwrite configuration +# file whenever configuration is changed (e.g., new network block is added with +# wpa_cli or wpa_gui, or a password is changed). This is required for +# wpa_cli/wpa_gui to be able to store the configuration changes permanently. +# Please note that overwriting configuration file will remove the comments from +# it. +#update_config=1 + +# global configuration (shared by all network blocks) +# +# Parameters for the control interface. If this is specified, wpa_supplicant +# will open a control interface that is available for external programs to +# manage wpa_supplicant. The meaning of this string depends on which control +# interface mechanism is used. For all cases, the existance of this parameter +# in configuration is used to determine whether the control interface is +# enabled. +# +# For UNIX domain sockets (default on Linux and BSD): This is a directory that +# will be created for UNIX domain sockets for listening to requests from +# external programs (CLI/GUI, etc.) for status information and configuration. +# The socket file will be named based on the interface name, so multiple +# wpa_supplicant processes can be run at the same time if more than one +# interface is used. +# /var/run/wpa_supplicant is the recommended directory for sockets and by +# default, wpa_cli will use it when trying to connect with wpa_supplicant. +# +# Access control for the control interface can be configured by setting the +# directory to allow only members of a group to use sockets. This way, it is +# possible to run wpa_supplicant as root (since it needs to change network +# configuration and open raw sockets) and still allow GUI/CLI components to be +# run as non-root users. However, since the control interface can be used to +# change the network configuration, this access needs to be protected in many +# cases. By default, wpa_supplicant is configured to use gid 0 (root). If you +# want to allow non-root users to use the control interface, add a new group +# and change this value to match with that group. Add users that should have +# control interface access to this group. If this variable is commented out or +# not included in the configuration file, group will not be changed from the +# value it got by default when the directory or socket was created. +# +# When configuring both the directory and group, use following format: +# DIR=/var/run/wpa_supplicant GROUP=wheel +# DIR=/var/run/wpa_supplicant GROUP=0 +# (group can be either group name or gid) +# +# For UDP connections (default on Windows): The value will be ignored. This +# variable is just used to select that the control interface is to be created. +# The value can be set to, e.g., udp (ctrl_interface=udp) +# +# For Windows Named Pipe: This value can be used to set the security descriptor +# for controlling access to the control interface. Security descriptor can be +# set using Security Descriptor String Format (see http://msdn.microsoft.com/ +# library/default.asp?url=/library/en-us/secauthz/security/ +# security_descriptor_string_format.asp). The descriptor string needs to be +# prefixed with SDDL=. For example, ctrl_interface=SDDL=D: would set an empty +# DACL (which will reject all connections). See README-Windows.txt for more +# information about SDDL string format. +# +ctrl_interface=/var/run/wpa_supplicant + +# IEEE 802.1X/EAPOL version +# wpa_supplicant is implemented based on IEEE Std 802.1X-2004 which defines +# EAPOL version 2. However, there are many APs that do not handle the new +# version number correctly (they seem to drop the frames completely). In order +# to make wpa_supplicant interoperate with these APs, the version number is set +# to 1 by default. This configuration value can be used to set it to the new +# version (2). +eapol_version=1 + +# AP scanning/selection +# By default, wpa_supplicant requests driver to perform AP scanning and then +# uses the scan results to select a suitable AP. Another alternative is to +# allow the driver to take care of AP scanning and selection and use +# wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association +# information from the driver. +# 1: wpa_supplicant initiates scanning and AP selection +# 0: driver takes care of scanning, AP selection, and IEEE 802.11 association +# parameters (e.g., WPA IE generation); this mode can also be used with +# non-WPA drivers when using IEEE 802.1X mode; do not try to associate with +# APs (i.e., external program needs to control association). This mode must +# also be used when using wired Ethernet drivers. +# 2: like 0, but associate with APs using security policy and SSID (but not +# BSSID); this can be used, e.g., with ndiswrapper and NDIS drivers to +# enable operation with hidden SSIDs and optimized roaming; in this mode, +# the network blocks in the configuration file are tried one by one until +# the driver reports successful association; each network block should have +# explicit security policy (i.e., only one option in the lists) for +# key_mgmt, pairwise, group, proto variables +ap_scan=1 + +# EAP fast re-authentication +# By default, fast re-authentication is enabled for all EAP methods that +# support it. This variable can be used to disable fast re-authentication. +# Normally, there is no need to disable this. +fast_reauth=1 + +# OpenSSL Engine support +# These options can be used to load OpenSSL engines. +# The two engines that are supported currently are shown below: +# They are both from the opensc project (http://www.opensc.org/) +# By default no engines are loaded. +# make the opensc engine available +#opensc_engine_path=/usr/lib/opensc/engine_opensc.so +# make the pkcs11 engine available +#pkcs11_engine_path=/usr/lib/opensc/engine_pkcs11.so +# configure the path to the pkcs11 module required by the pkcs11 engine +#pkcs11_module_path=/usr/lib/pkcs11/opensc-pkcs11.so + +# Dynamic EAP methods +# If EAP methods were built dynamically as shared object files, they need to be +# loaded here before being used in the network blocks. By default, EAP methods +# are included statically in the build, so these lines are not needed +#load_dynamic_eap=/usr/lib/wpa_supplicant/eap_tls.so +#load_dynamic_eap=/usr/lib/wpa_supplicant/eap_md5.so + +# Driver interface parameters +# This field can be used to configure arbitrary driver interace parameters. The +# format is specific to the selected driver interface. This field is not used +# in most cases. +#driver_param="field=value" + +# Maximum lifetime for PMKSA in seconds; default 43200 +#dot11RSNAConfigPMKLifetime=43200 +# Threshold for reauthentication (percentage of PMK lifetime); default 70 +#dot11RSNAConfigPMKReauthThreshold=70 +# Timeout for security association negotiation in seconds; default 60 +#dot11RSNAConfigSATimeout=60 + +# network block +# +# Each network (usually AP's sharing the same SSID) is configured as a separate +# block in this configuration file. The network blocks are in preference order +# (the first match is used). +# +# network block fields: +# +# disabled: +# 0 = this network can be used (default) +# 1 = this network block is disabled (can be enabled through ctrl_iface, +# e.g., with wpa_cli or wpa_gui) +# +# id_str: Network identifier string for external scripts. This value is passed +# to external action script through wpa_cli as WPA_ID_STR environment +# variable to make it easier to do network specific configuration. +# +# ssid: SSID (mandatory); either as an ASCII string with double quotation or +# as hex string; network name +# +# scan_ssid: +# 0 = do not scan this SSID with specific Probe Request frames (default) +# 1 = scan with SSID-specific Probe Request frames (this can be used to +# find APs that do not accept broadcast SSID or use multiple SSIDs; +# this will add latency to scanning, so enable this only when needed) +# +# bssid: BSSID (optional); if set, this network block is used only when +# associating with the AP using the configured BSSID +# +# priority: priority group (integer) +# By default, all networks will get same priority group (0). If some of the +# networks are more desirable, this field can be used to change the order in +# which wpa_supplicant goes through the networks when selecting a BSS. The +# priority groups will be iterated in decreasing priority (i.e., the larger the +# priority value, the sooner the network is matched against the scan results). +# Within each priority group, networks will be selected based on security +# policy, signal strength, etc. +# Please note that AP scanning with scan_ssid=1 and ap_scan=2 mode are not +# using this priority to select the order for scanning. Instead, they try the +# networks in the order that used in the configuration file. +# +# mode: IEEE 802.11 operation mode +# 0 = infrastructure (Managed) mode, i.e., associate with an AP (default) +# 1 = IBSS (ad-hoc, peer-to-peer) +# Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) +# and key_mgmt=WPA-NONE (fixed group key TKIP/CCMP). In addition, ap_scan has +# to be set to 2 for IBSS. WPA-None requires following network block options: +# proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP (or CCMP, but not +# both), and psk must also be set. +# +# proto: list of accepted protocols +# WPA = WPA/IEEE 802.11i/D3.0 +# RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN) +# If not set, this defaults to: WPA RSN +# +# key_mgmt: list of accepted authenticated key management protocols +# WPA-PSK = WPA pre-shared key (this requires 'psk' field) +# WPA-EAP = WPA using EAP authentication (this can use an external +# program, e.g., Xsupplicant, for IEEE 802.1X EAP Authentication +# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically +# generated WEP keys +# NONE = WPA is not used; plaintext or static WEP could be used +# If not set, this defaults to: WPA-PSK WPA-EAP +# +# auth_alg: list of allowed IEEE 802.11 authentication algorithms +# OPEN = Open System authentication (required for WPA/WPA2) +# SHARED = Shared Key authentication (requires static WEP keys) +# LEAP = LEAP/Network EAP (only used with LEAP) +# If not set, automatic selection is used (Open System with LEAP enabled if +# LEAP is allowed as one of the EAP methods). +# +# pairwise: list of accepted pairwise (unicast) ciphers for WPA +# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] +# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] +# NONE = Use only Group Keys (deprecated, should not be included if APs support +# pairwise keys) +# If not set, this defaults to: CCMP TKIP +# +# group: list of accepted group (broadcast/multicast) ciphers for WPA +# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] +# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] +# WEP104 = WEP (Wired Equivalent Privacy) with 104-bit key +# WEP40 = WEP (Wired Equivalent Privacy) with 40-bit key [IEEE 802.11] +# If not set, this defaults to: CCMP TKIP WEP104 WEP40 +# +# psk: WPA preshared key; 256-bit pre-shared key +# The key used in WPA-PSK mode can be entered either as 64 hex-digits, i.e., +# 32 bytes or as an ASCII passphrase (in which case, the real PSK will be +# generated using the passphrase and SSID). ASCII passphrase must be between +# 8 and 63 characters (inclusive). +# This field is not needed, if WPA-EAP is used. +# Note: Separate tool, wpa_passphrase, can be used to generate 256-bit keys +# from ASCII passphrase. This process uses lot of CPU and wpa_supplicant +# startup and reconfiguration time can be optimized by generating the PSK only +# only when the passphrase or SSID has actually changed. +# +# eapol_flags: IEEE 802.1X/EAPOL options (bit field) +# Dynamic WEP key required for non-WPA mode +# bit0 (1): require dynamically generated unicast WEP key +# bit1 (2): require dynamically generated broadcast WEP key +# (3 = require both keys; default) +# Note: When using wired authentication, eapol_flags must be set to 0 for the +# authentication to be completed successfully. +# +# proactive_key_caching: +# Enable/disable opportunistic PMKSA caching for WPA2. +# 0 = disabled (default) +# 1 = enabled +# +# wep_key0..3: Static WEP key (ASCII in double quotation, e.g. "abcde" or +# hex without quotation, e.g., 0102030405) +# wep_tx_keyidx: Default WEP key index (TX) (0..3) +# +# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e DLS) is +# allowed. This is only used with RSN/WPA2. +# 0 = disabled (default) +# 1 = enabled +#peerkey=1 +# +# Following fields are only used with internal EAP implementation. +# eap: space-separated list of accepted EAP methods +# MD5 = EAP-MD5 (unsecure and does not generate keying material -> +# cannot be used with WPA; to be used as a Phase 2 method +# with EAP-PEAP or EAP-TTLS) +# MSCHAPV2 = EAP-MSCHAPv2 (cannot be used separately with WPA; to be used +# as a Phase 2 method with EAP-PEAP or EAP-TTLS) +# OTP = EAP-OTP (cannot be used separately with WPA; to be used +# as a Phase 2 method with EAP-PEAP or EAP-TTLS) +# GTC = EAP-GTC (cannot be used separately with WPA; to be used +# as a Phase 2 method with EAP-PEAP or EAP-TTLS) +# TLS = EAP-TLS (client and server certificate) +# PEAP = EAP-PEAP (with tunnelled EAP authentication) +# TTLS = EAP-TTLS (with tunnelled EAP or PAP/CHAP/MSCHAP/MSCHAPV2 +# authentication) +# If not set, all compiled in methods are allowed. +# +# identity: Identity string for EAP +# anonymous_identity: Anonymous identity string for EAP (to be used as the +# unencrypted identity with EAP types that support different tunnelled +# identity, e.g., EAP-TTLS) +# password: Password string for EAP +# ca_cert: File path to CA certificate file (PEM/DER). This file can have one +# or more trusted CA certificates. If ca_cert and ca_path are not +# included, server certificate will not be verified. This is insecure and +# a trusted CA certificate should always be configured when using +# EAP-TLS/TTLS/PEAP. Full path should be used since working directory may +# change when wpa_supplicant is run in the background. +# On Windows, trusted CA certificates can be loaded from the system +# certificate store by setting this to cert_store://, e.g., +# ca_cert="cert_store://CA" or ca_cert="cert_store://ROOT". +# Note that when running wpa_supplicant as an application, the user +# certificate store (My user account) is used, whereas computer store +# (Computer account) is used when running wpasvc as a service. +# ca_path: Directory path for CA certificate files (PEM). This path may +# contain multiple CA certificates in OpenSSL format. Common use for this +# is to point to system trusted CA list which is often installed into +# directory like /etc/ssl/certs. If configured, these certificates are +# added to the list of trusted CAs. ca_cert may also be included in that +# case, but it is not required. +# client_cert: File path to client certificate file (PEM/DER) +# Full path should be used since working directory may change when +# wpa_supplicant is run in the background. +# Alternatively, a named configuration blob can be used by setting this +# to blob://. +# private_key: File path to client private key file (PEM/DER/PFX) +# When PKCS#12/PFX file (.p12/.pfx) is used, client_cert should be +# commented out. Both the private key and certificate will be read from +# the PKCS#12 file in this case. Full path should be used since working +# directory may change when wpa_supplicant is run in the background. +# Windows certificate store can be used by leaving client_cert out and +# configuring private_key in one of the following formats: +# cert://substring_to_match +# hash://certificate_thumbprint_in_hex +# for example: private_key="hash://63093aa9c47f56ae88334c7b65a4" +# Note that when running wpa_supplicant as an application, the user +# certificate store (My user account) is used, whereas computer store +# (Computer account) is used when running wpasvc as a service. +# Alternatively, a named configuration blob can be used by setting this +# to blob://. +# private_key_passwd: Password for private key file (if left out, this will be +# asked through control interface) +# dh_file: File path to DH/DSA parameters file (in PEM format) +# This is an optional configuration file for setting parameters for an +# ephemeral DH key exchange. In most cases, the default RSA +# authentication does not use this configuration. However, it is possible +# setup RSA to use ephemeral DH key exchange. In addition, ciphers with +# DSA keys always use ephemeral DH keys. This can be used to achieve +# forward secrecy. If the file is in DSA parameters format, it will be +# automatically converted into DH params. +# subject_match: Substring to be matched against the subject of the +# authentication server certificate. If this string is set, the server +# sertificate is only accepted if it contains this string in the subject. +# The subject string is in following format: +# /C=US/ST=CA/L=San Francisco/CN=Test AS/emailAddress=as@example.com +# altsubject_match: Semicolon separated string of entries to be matched against +# the alternative subject name of the authentication server certificate. +# If this string is set, the server sertificate is only accepted if it +# contains one of the entries in an alternative subject name extension. +# altSubjectName string is in following format: TYPE:VALUE +# Example: EMAIL:server@example.com +# Example: DNS:server.example.com;DNS:server2.example.com +# Following types are supported: EMAIL, DNS, URI +# phase1: Phase1 (outer authentication, i.e., TLS tunnel) parameters +# (string with field-value pairs, e.g., "peapver=0" or +# "peapver=1 peaplabel=1") +# 'peapver' can be used to force which PEAP version (0 or 1) is used. +# 'peaplabel=1' can be used to force new label, "client PEAP encryption", +# to be used during key derivation when PEAPv1 or newer. Most existing +# PEAPv1 implementation seem to be using the old label, "client EAP +# encryption", and wpa_supplicant is now using that as the default value. +# Some servers, e.g., Radiator, may require peaplabel=1 configuration to +# interoperate with PEAPv1; see eap_testing.txt for more details. +# 'peap_outer_success=0' can be used to terminate PEAP authentication on +# tunneled EAP-Success. This is required with some RADIUS servers that +# implement draft-josefsson-pppext-eap-tls-eap-05.txt (e.g., +# Lucent NavisRadius v4.4.0 with PEAP in "IETF Draft 5" mode) +# include_tls_length=1 can be used to force wpa_supplicant to include +# TLS Message Length field in all TLS messages even if they are not +# fragmented. +# sim_min_num_chal=3 can be used to configure EAP-SIM to require three +# challenges (by default, it accepts 2 or 3) +# phase2: Phase2 (inner authentication with TLS tunnel) parameters +# (string with field-value pairs, e.g., "auth=MSCHAPV2" for EAP-PEAP or +# "autheap=MSCHAPV2 autheap=MD5" for EAP-TTLS) +# Following certificate/private key fields are used in inner Phase2 +# authentication when using EAP-TTLS or EAP-PEAP. +# ca_cert2: File path to CA certificate file. This file can have one or more +# trusted CA certificates. If ca_cert2 and ca_path2 are not included, +# server certificate will not be verified. This is insecure and a trusted +# CA certificate should always be configured. +# ca_path2: Directory path for CA certificate files (PEM) +# client_cert2: File path to client certificate file +# private_key2: File path to client private key file +# private_key2_passwd: Password for private key file +# dh_file2: File path to DH/DSA parameters file (in PEM format) +# subject_match2: Substring to be matched against the subject of the +# authentication server certificate. +# altsubject_match2: Substring to be matched against the alternative subject +# name of the authentication server certificate. +# +# fragment_size: Maximum EAP fragment size in bytes (default 1398). +# This value limits the fragment size for EAP methods that support +# fragmentation (e.g., EAP-TLS and EAP-PEAP). This value should be set +# small enough to make the EAP messages fit in MTU of the network +# interface used for EAPOL. The default value is suitable for most +# cases. +# +# EAP-PSK variables: +# eappsk: 16-byte (128-bit, 32 hex digits) pre-shared key in hex format +# nai: user NAI +# +# EAP-PAX variables: +# eappsk: 16-byte (128-bit, 32 hex digits) pre-shared key in hex format +# +# EAP-SAKE variables: +# eappsk: 32-byte (256-bit, 64 hex digits) pre-shared key in hex format +# (this is concatenation of Root-Secret-A and Root-Secret-B) +# nai: user NAI (PEERID) +# +# EAP-GPSK variables: +# eappsk: Pre-shared key in hex format (at least 128 bits, i.e., 32 hex digits) +# nai: user NAI (ID_Client) +# +# EAP-FAST variables: +# pac_file: File path for the PAC entries. wpa_supplicant will need to be able +# to create this file and write updates to it when PAC is being +# provisioned or refreshed. Full path to the file should be used since +# working directory may change when wpa_supplicant is run in the +# background. Alternatively, a named configuration blob can be used by +# setting this to blob:// +# phase1: fast_provisioning=1 option enables in-line provisioning of EAP-FAST +# credentials (PAC) +# +# wpa_supplicant supports number of "EAP workarounds" to work around +# interoperability issues with incorrectly behaving authentication servers. +# These are enabled by default because some of the issues are present in large +# number of authentication servers. Strict EAP conformance mode can be +# configured by disabling workarounds with eap_workaround=0. + +# Example blocks: + +# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers +network={ + ssid="simple" + psk="very secret passphrase" + priority=5 +} + +# Same as previous, but request SSID-specific scanning (for APs that reject +# broadcast SSID) +network={ + ssid="second ssid" + scan_ssid=1 + psk="very secret passphrase" + priority=2 +} + +# Only WPA-PSK is used. Any valid cipher combination is accepted. +network={ + ssid="example" + proto=WPA + key_mgmt=WPA-PSK + pairwise=CCMP TKIP + group=CCMP TKIP WEP104 WEP40 + psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb + priority=2 +} + +# Only WPA-EAP is used. Both CCMP and TKIP is accepted. An AP that used WEP104 +# or WEP40 as the group cipher will not be accepted. +network={ + ssid="example" + proto=RSN + key_mgmt=WPA-EAP + pairwise=CCMP TKIP + group=CCMP TKIP + eap=TLS + identity="user@example.com" + ca_cert="/etc/cert/ca.pem" + client_cert="/etc/cert/user.pem" + private_key="/etc/cert/user.prv" + private_key_passwd="password" + priority=1 +} + +# EAP-PEAP/MSCHAPv2 configuration for RADIUS servers that use the new peaplabel +# (e.g., Radiator) +network={ + ssid="example" + key_mgmt=WPA-EAP + eap=PEAP + identity="user@example.com" + password="foobar" + ca_cert="/etc/cert/ca.pem" + phase1="peaplabel=1" + phase2="auth=MSCHAPV2" + priority=10 +} + +# EAP-TTLS/EAP-MD5-Challenge configuration with anonymous identity for the +# unencrypted use. Real identity is sent only within an encrypted TLS tunnel. +network={ + ssid="example" + key_mgmt=WPA-EAP + eap=TTLS + identity="user@example.com" + anonymous_identity="anonymous@example.com" + password="foobar" + ca_cert="/etc/cert/ca.pem" + priority=2 +} + +# EAP-TTLS/MSCHAPv2 configuration with anonymous identity for the unencrypted +# use. Real identity is sent only within an encrypted TLS tunnel. +network={ + ssid="example" + key_mgmt=WPA-EAP + eap=TTLS + identity="user@example.com" + anonymous_identity="anonymous@example.com" + password="foobar" + ca_cert="/etc/cert/ca.pem" + phase2="auth=MSCHAPV2" +} + +# WPA-EAP, EAP-TTLS with different CA certificate used for outer and inner +# authentication. +network={ + ssid="example" + key_mgmt=WPA-EAP + eap=TTLS + # Phase1 / outer authentication + anonymous_identity="anonymous@example.com" + ca_cert="/etc/cert/ca.pem" + # Phase 2 / inner authentication + phase2="autheap=TLS" + ca_cert2="/etc/cert/ca2.pem" + client_cert2="/etc/cer/user.pem" + private_key2="/etc/cer/user.prv" + private_key2_passwd="password" + priority=2 +} + +# Both WPA-PSK and WPA-EAP is accepted. Only CCMP is accepted as pairwise and +# group cipher. +network={ + ssid="example" + bssid=00:11:22:33:44:55 + proto=WPA RSN + key_mgmt=WPA-PSK WPA-EAP + pairwise=CCMP + group=CCMP + psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb +} + +# Special characters in SSID, so use hex string. Default to WPA-PSK, WPA-EAP +# and all valid ciphers. +network={ + ssid=00010203 + psk=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +} + + +# IEEE 802.1X/EAPOL with dynamically generated WEP keys (i.e., no WPA) using +# EAP-TLS for authentication and key generation; require both unicast and +# broadcast WEP keys. +network={ + ssid="1x-test" + key_mgmt=IEEE8021X + eap=TLS + identity="user@example.com" + ca_cert="/etc/cert/ca.pem" + client_cert="/etc/cert/user.pem" + private_key="/etc/cert/user.prv" + private_key_passwd="password" + eapol_flags=3 +} + + +# LEAP with dynamic WEP keys +network={ + ssid="leap-example" + key_mgmt=IEEE8021X + eap=LEAP + identity="user" + password="foobar" +} + +# Plaintext connection (no WPA, no IEEE 802.1X) +network={ + ssid="plaintext-test" + key_mgmt=NONE +} + + +# Shared WEP key connection (no WPA, no IEEE 802.1X) +network={ + ssid="static-wep-test" + key_mgmt=NONE + wep_key0="abcde" + wep_key1=0102030405 + wep_key2="1234567890123" + wep_tx_keyidx=0 + priority=5 +} + + +# Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key +# IEEE 802.11 authentication +network={ + ssid="static-wep-test2" + key_mgmt=NONE + wep_key0="abcde" + wep_key1=0102030405 + wep_key2="1234567890123" + wep_tx_keyidx=0 + priority=5 + auth_alg=SHARED +} + + +# IBSS/ad-hoc network with WPA-None/TKIP. +network={ + ssid="test adhoc" + mode=1 + proto=WPA + key_mgmt=WPA-NONE + pairwise=NONE + group=TKIP + psk="secret passphrase" +} + + +# Catch all example that allows more or less all configuration modes +network={ + ssid="example" + scan_ssid=1 + key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE + pairwise=CCMP TKIP + group=CCMP TKIP WEP104 WEP40 + psk="very secret passphrase" + eap=TTLS PEAP TLS + identity="user@example.com" + password="foobar" + ca_cert="/etc/cert/ca.pem" + client_cert="/etc/cert/user.pem" + private_key="/etc/cert/user.prv" + private_key_passwd="password" + phase1="peaplabel=0" +} + +# Example of EAP-TLS with smartcard (openssl engine) +network={ + ssid="example" + key_mgmt=WPA-EAP + eap=TLS + proto=RSN + pairwise=CCMP TKIP + group=CCMP TKIP + identity="user@example.com" + ca_cert="/etc/cert/ca.pem" + client_cert="/etc/cert/user.pem" + + engine=1 + + # The engine configured here must be available. Look at + # OpenSSL engine support in the global section. + # The key available through the engine must be the private key + # matching the client certificate configured above. + + # use the opensc engine + #engine_id="opensc" + #key_id="45" + + # use the pkcs11 engine + engine_id="pkcs11" + key_id="id_45" + + # Optional PIN configuration; this can be left out and PIN will be + # asked through the control interface + pin="1234" +} + +# Example configuration showing how to use an inlined blob as a CA certificate +# data instead of using external file +network={ + ssid="example" + key_mgmt=WPA-EAP + eap=TTLS + identity="user@example.com" + anonymous_identity="anonymous@example.com" + password="foobar" + ca_cert="blob://exampleblob" + priority=20 +} + +blob-base64-exampleblob={ +SGVsbG8gV29ybGQhCg== +} + + +# Wildcard match for SSID (plaintext APs only). This example select any +# open AP regardless of its SSID. +network={ + key_mgmt=NONE +} diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf-sane b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf-sane new file mode 100644 index 0000000..c91ffe0 --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant-1.0/wpa_supplicant.conf-sane @@ -0,0 +1,7 @@ +ctrl_interface=/var/run/wpa_supplicant +ctrl_interface_group=0 +update_config=1 + +network={ + key_mgmt=NONE +} diff --git a/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb b/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb new file mode 100644 index 0000000..32fc4dd --- /dev/null +++ b/multitech/recipes/wpa-supplicant/wpa-supplicant_1.0.bb @@ -0,0 +1,6 @@ +require wpa-supplicant-1.0.inc + +PR = "${INC_PR}.0" + +SRC_URI[md5sum] = "8650f6aa23646ef634402552d0669640" +SRC_URI[sha256sum] = "91d41d473a5aafa2e25dd6577ebda975c4d4a3188850a53e31feaf7c04482b9c" -- cgit v1.2.3 From 078d4c46e66df2d53c22ab61bc1d24f3543f2b3a Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:03:16 -0500 Subject: bluez4: add 4.98 --- multitech/recipes/bluez/bluez4.inc | 72 ++++++++++++++++++++++++++++++++++ multitech/recipes/bluez/bluez4_4.98.bb | 20 ++++++++++ 2 files changed, 92 insertions(+) create mode 100644 multitech/recipes/bluez/bluez4.inc create mode 100644 multitech/recipes/bluez/bluez4_4.98.bb (limited to 'multitech') diff --git a/multitech/recipes/bluez/bluez4.inc b/multitech/recipes/bluez/bluez4.inc new file mode 100644 index 0000000..a59145b --- /dev/null +++ b/multitech/recipes/bluez/bluez4.inc @@ -0,0 +1,72 @@ +DESCRIPTION = "Linux Bluetooth Stack Userland V4" +HOMEPAGE = "http://www.bluez.org" +SECTION = "libs" +PRIORITY = "optional" +LICENSE = "GPLv2/LGPLv2.1" +#DEPENDS = "gst-plugins-base alsa-lib virtual/libusb0 dbus-glib" +DEPENDS = "virtual/libusb0 dbus-glib" +INC_PR = "r8" + +FILESPATHBASE .= ":${OETREE}/openembedded/recipes/bluez" + +# temporary solution until bug 5176 is properly fixed +PROVIDES += "bluez-utils bluez-libs bluez-utils-dbus" +RPROVIDES_bluez4 += "bluez-utils bluez-libs bluez-utils-dbus" +RPROVIDES_bluez4-dev = "bluez-libs-dev" + +SRC_URI = "\ + http://www.kernel.org/pub/linux/bluetooth/bluez-${PV}.tar.gz \ + file://fix-dfutool-usb-declaration-mismatch.patch \ + file://bluetooth.conf \ +" +S = "${WORKDIR}/bluez-${PV}" + +inherit autotools update-rc.d + +EXTRA_OECONF = "\ + --enable-debug \ + --disable-gstreamer \ + --disable-alsa \ + --enable-usb \ + --enable-netlink \ + --enable-tools \ + --enable-bccmd \ + --disable-hid2hci \ + --enable-dfutool \ + --enable-hidd \ + --enable-pand \ + --enable-dund \ + --disable-cups \ + --enable-test \ + --enable-manpages \ + --enable-configfiles \ + --enable-initscripts \ + --disable-pcmciarules \ +" + +do_install_append() { + install -m 0644 ${S}/audio/audio.conf ${D}/${sysconfdir}/bluetooth/ + install -m 0644 ${S}/network/network.conf ${D}/${sysconfdir}/bluetooth/ + install -m 0644 ${S}/input/input.conf ${D}/${sysconfdir}/bluetooth/ + # at_console doesn't really work with the current state of OE, so punch some more holes so people can actually use BT + install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/ +} + +INITSCRIPT_NAME = "bluetooth" +INITSCRIPT_PARAMS = "defaults 23 19" + +#PACKAGES =+ "gst-plugin-bluez libasound-module-bluez" + +#FILES_gst-plugin-bluez = "${libdir}/gstreamer-0.10/lib*.so" +#FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so ${datadir}/alsa/bluetooth.conf" +FILES_${PN} += "${libdir}/bluetooth/plugins/*.so ${base_libdir}/udev" +FILES_${PN}-dev += "\ + ${libdir}/bluetooth/plugins/*.la \ + ${libdir}/alsa-lib/*.la \ + ${libdir}/gstreamer-0.10/*.la \ +" + +FILES_${PN}-dbg += "\ + ${libdir}/bluetooth/plugins/.debug \ + ${libdir}/*/.debug \ +" diff --git a/multitech/recipes/bluez/bluez4_4.98.bb b/multitech/recipes/bluez/bluez4_4.98.bb new file mode 100644 index 0000000..6d1b4df --- /dev/null +++ b/multitech/recipes/bluez/bluez4_4.98.bb @@ -0,0 +1,20 @@ +require bluez4.inc + +SRC_URI[md5sum] = "362864b716950baa04797de735fc237b" +SRC_URI[sha256sum] = "9a5b655bada7c7a1921cb3bac83b8a32bbe49893e4c7a1377cdc1b0d35f7d233" + +#DEPENDS += "libsndfile1" + +PR = "${INC_PR}.0" + +# Not all distros have a recent enough udev +BTUDEV = " --disable-udevrules" +BTUDEV_angstrom = " --enable-udevrules" +BTUDEV_corecdp = " --enable-udevrules" +BTUDEV_shr = " --enable-udevrules" + +EXTRA_OECONF += "${BTUDEV}" + +FILES_${PN}-dbg += "\ + ${base_libdir}/*/.debug \ +" -- cgit v1.2.3 From a8b1af30d1c163f882caf9e9ea01d6fd17229695 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:04:33 -0500 Subject: corecdp: use wpa-supplicant, hostap-daemon 1.0 --- multitech/conf/distro/corecdp.conf | 3 +++ 1 file changed, 3 insertions(+) (limited to 'multitech') diff --git a/multitech/conf/distro/corecdp.conf b/multitech/conf/distro/corecdp.conf index b81d4d5..1694a23 100644 --- a/multitech/conf/distro/corecdp.conf +++ b/multitech/conf/distro/corecdp.conf @@ -44,3 +44,6 @@ PREFERRED_VERSION_lighttpd = "1.4.28" # don't build bluez4 and the large amount of deps just for libpcap PREFERRED_PROVIDER_libpcap = "libpcap-nobluetooth" + +PREFERRED_VERSION_wpa-supplicant = "1.0" +PREFERRED_VERSION_hostap-daemon = "1.0" -- cgit v1.2.3 From aece4cf1cd701a70819a537bee63a34193da4519 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:06:56 -0500 Subject: linux: add 2.6.39.4 for mt100eocg-pcie-dk --- .../linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch | 37 + .../linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch | 12 + .../linux-2.6.32.3-option-telit.patch | 23 + .../linux-2.6.35.14-at91-gpio-pullup.patch | 43 + .../linux-2.6.35.14-option-zte.patch | 12 + .../linux-2.6.38-sierra-1.7.40.patch | 1556 +++++++++++++ .../linux-2.6.39.4-mmc-core-maxclock.patch | 27 + .../linux-2.6.39.4/mt100eocg-pcie-dk/defconfig | 2295 ++++++++++++++++++++ ...inux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch | 406 ++++ multitech/recipes/linux/linux_2.6.39.4.bb | 27 + 10 files changed, 4438 insertions(+) create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch create mode 100644 multitech/recipes/linux/linux_2.6.39.4.bb (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch new file mode 100644 index 0000000..3aa9096 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-at25.patch @@ -0,0 +1,37 @@ +diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/drivers/misc/eeprom/at25.c linux-2.6.32.3/drivers/misc/eeprom/at25.c +--- linux-2.6.32.3-vanilla/drivers/misc/eeprom/at25.c 2010-01-06 17:07:45.000000000 -0600 ++++ linux-2.6.32.3/drivers/misc/eeprom/at25.c 2010-10-27 11:05:36.000000000 -0500 +@@ -147,6 +147,7 @@ at25_ee_write(struct at25_data *at25, co + unsigned written = 0; + unsigned buf_size; + u8 *bounce; ++ int a8; + + if (unlikely(off >= at25->bin.size)) + return -EFBIG; +@@ -163,6 +164,11 @@ at25_ee_write(struct at25_data *at25, co + if (!bounce) + return -ENOMEM; + ++ if (!strcmp(at25->chip.name, "at25040b")) ++ a8 = 1; ++ else ++ a8 = 0; ++ + /* For write, rollover is within the page ... so we write at + * most one page, then manually roll over to the next page. + */ +@@ -183,6 +189,13 @@ at25_ee_write(struct at25_data *at25, co + break; + } + ++ if (a8) { ++ if (offset & BIT(8)) ++ bounce[0] |= BIT(3); ++ else ++ bounce[0] &= ~BIT(3); ++ } ++ + /* 8/16/24-bit address is written MSB first */ + switch (at25->addrlen) { + default: /* case 3 */ diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch new file mode 100644 index 0000000..a7b87b3 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-atmel_spi.patch @@ -0,0 +1,12 @@ +diff -uprN -X linux-2.6.32.3/Documentation/dontdiff linux-2.6.32.3-vanilla/drivers/spi/atmel_spi.c linux-2.6.32.3/drivers/spi/atmel_spi.c +--- linux-2.6.32.3-vanilla/drivers/spi/atmel_spi.c 2010-01-06 17:07:45.000000000 -0600 ++++ linux-2.6.32.3/drivers/spi/atmel_spi.c 2010-09-08 13:38:52.000000000 -0500 +@@ -768,7 +768,7 @@ static int __init atmel_spi_probe(struct + master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; + + master->bus_num = pdev->id; +- master->num_chipselect = 4; ++ master->num_chipselect = 7; + master->setup = atmel_spi_setup; + master->transfer = atmel_spi_transfer; + master->cleanup = atmel_spi_cleanup; diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch new file mode 100644 index 0000000..db0283d --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.32.3-option-telit.patch @@ -0,0 +1,23 @@ +diff linux-2.6.32.3.orig/drivers/usb/serial/option.c linux-2.6.32.3/drivers/usb/serial/option.c +--- linux-2.6.32.3.orig/drivers/usb/serial/option.c ++++ linux-2.6.32.3/drivers/usb/serial/option.c +@@ -293,6 +293,9 @@ static int option_resume(struct usb_serial *serial); + #define TELIT_VENDOR_ID 0x1bc7 + #define TELIT_PRODUCT_UC864E 0x1003 + #define TELIT_PRODUCT_UC864G 0x1004 ++#define TELIT_PRODUCT_CC864_DUAL 0x1005 ++#define TELIT_PRODUCT_CC864_SINGLE 0x1006 ++#define TELIT_PRODUCT_DE910_DUAL 0x1010 + + /* ZTE PRODUCTS */ + #define ZTE_VENDOR_ID 0x19d2 +@@ -523,6 +526,9 @@ static struct usb_device_id option_ids[] = { + { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, ++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0003, 0xff, 0xff, 0xff) }, diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch new file mode 100644 index 0000000..d967838 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-at91-gpio-pullup.patch @@ -0,0 +1,43 @@ +Index: linux-2.6.35/arch/arm/mach-at91/gpio.c +=================================================================== +--- linux-2.6.35.orig/arch/arm/mach-at91/gpio.c 2011-09-27 14:36:06.587267689 -0500 ++++ linux-2.6.35/arch/arm/mach-at91/gpio.c 2011-09-27 14:42:50.997576753 -0500 +@@ -202,6 +202,26 @@ + } + EXPORT_SYMBOL(at91_set_gpio_output); + ++/* ++ * configure pin for output and enable/disable pullup ++ */ ++int __init_or_module at91_set_gpio_output_with_pullup(unsigned pin, int value, int use_pullup) ++{ ++ void __iomem *pio = pin_to_controller(pin); ++ unsigned mask = pin_to_mask(pin); ++ ++ if (!pio) ++ return -EINVAL; ++ ++ __raw_writel(mask, pio + PIO_IDR); ++ __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR)); ++ __raw_writel(mask, pio + (value ? PIO_SODR : PIO_CODR)); ++ __raw_writel(mask, pio + PIO_OER); ++ __raw_writel(mask, pio + PIO_PER); ++ return 0; ++} ++EXPORT_SYMBOL(at91_set_gpio_output_with_pullup); ++ + + /* + * enable/disable the glitch filter; mostly used with IRQ handling. +Index: linux-2.6.35/arch/arm/mach-at91/include/mach/gpio.h +=================================================================== +--- linux-2.6.35.orig/arch/arm/mach-at91/include/mach/gpio.h ++++ linux-2.6.35/arch/arm/mach-at91/include/mach/gpio.h +@@ -194,6 +194,7 @@ extern int __init_or_module at91_set_A_p + extern int __init_or_module at91_set_B_periph(unsigned pin, int use_pullup); + extern int __init_or_module at91_set_gpio_input(unsigned pin, int use_pullup); + extern int __init_or_module at91_set_gpio_output(unsigned pin, int value); ++extern int __init_or_module at91_set_gpio_output_with_pullup(unsigned pin, int value, int use_pullup); + extern int __init_or_module at91_set_deglitch(unsigned pin, int is_on); + extern int __init_or_module at91_set_multi_drive(unsigned pin, int is_on); + diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch new file mode 100644 index 0000000..776c7ee --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.35.14-option-zte.patch @@ -0,0 +1,12 @@ +Index: linux-2.6.35/drivers/usb/serial/option.c +=================================================================== +--- linux-2.6.35.orig/drivers/usb/serial/option.c ++++ linux-2.6.35/drivers/usb/serial/option.c +@@ -889,6 +889,7 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xffe8, 0xff, 0xff, 0xff) }, // MC2718 + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch new file mode 100644 index 0000000..6e55adf --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.38-sierra-1.7.40.patch @@ -0,0 +1,1556 @@ +Index: linux-2.6.39.4/drivers/net/usb/sierra_net.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/net/usb/sierra_net.c 2012-02-27 15:37:27.810465204 -0600 ++++ linux-2.6.39.4/drivers/net/usb/sierra_net.c 2011-09-22 17:05:46.000000000 -0500 +@@ -1,7 +1,7 @@ + /* + * USB-to-WWAN Driver for Sierra Wireless modems + * +- * Copyright (C) 2008, 2009, 2010 Paxton Smith, Matthew Safar, Rory Filer ++ * Copyright (C) 2008 - 2011 Paxton Smith, Matthew Safar, Rory Filer + * + * + * Portions of this based on the cdc_ether driver by David Brownell (2003-2005) +@@ -25,13 +25,17 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-#define DRIVER_VERSION "v.2.0" ++#define DRIVER_VERSION "v.3.2" + #define DRIVER_AUTHOR "Paxton Smith, Matthew Safar, Rory Filer" + #define DRIVER_DESC "USB-to-WWAN Driver for Sierra Wireless modems" + static const char driver_name[] = "sierra_net"; + + /* if defined debug messages enabled */ + /*#define DEBUG*/ ++/* more debug messages */ ++/*#define VERBOSE*/ ++/* Uncomment to force power level set to auto when attaching a device */ ++/*#define POWER_LEVEL_AUTO*/ + + #include + #include +@@ -48,6 +52,7 @@ + + #define SWI_USB_REQUEST_GET_FW_ATTR 0x06 + #define SWI_GET_FW_ATTR_MASK 0x08 ++#define SWI_GET_FW_ATTR_APM 0x2 + + /* atomic counter partially included in MAC address to make sure 2 devices + * do not end up with the same MAC - concept breaks in case of > 255 ifaces +@@ -68,6 +73,11 @@ + */ + #define SIERRA_NET_USBCTL_BUF_LEN 1024 + ++/* The SIERRA_NET_RX_URB_SZ defines the receive urb size ++ * for optimal throughput. ++ */ ++#define SIERRA_NET_RX_URB_SZ 1540 ++ + /* list of interface numbers - used for constructing interface lists */ + struct sierra_net_iface_info { + const u32 infolen; /* number of interface numbers on list */ +@@ -139,6 +149,7 @@ + #define SIERRA_NET_SESSION_IDLE 0x00 + /* LSI Link types */ + #define SIERRA_NET_AS_LINK_TYPE_IPv4 0x00 ++#define SIERRA_NET_AS_LINK_TYPE_IPv6 0x02 + + struct lsi_umts { + u8 protocol; +@@ -200,10 +211,11 @@ + dev->data[0] = (unsigned long)priv; + } + +-/* is packet IPv4 */ ++/* is packet IP */ + static inline int is_ip(struct sk_buff *skb) + { +- return skb->protocol == cpu_to_be16(ETH_P_IP); ++ return ((skb->protocol == cpu_to_be16(ETH_P_IP)) || ++ (skb->protocol == cpu_to_be16(ETH_P_IPV6))); + } + + /* +@@ -312,6 +324,24 @@ + /*----------------------------------------------------------------------------* + * END HIP * + *----------------------------------------------------------------------------*/ ++/* This should come out before going to kernel.org */ ++static void sierra_net_printk_buf(u8 *buf, u16 len) ++{ ++#ifdef VERBOSE ++ u16 i; ++ u16 k; ++ ++ for (i = k = 0; i < len / 4; i++, k += 4) { ++ printk(KERN_DEBUG "%02x%02x%02x%02x ", ++ buf[k+0], buf[k+1], buf[k+2], buf[k+3]); ++ } ++ ++ for (; k < len; k++) ++ printk(KERN_DEBUG "%02x", buf[k]); ++ ++ printk("\n"); ++#endif ++} + + static int sierra_net_send_cmd(struct usbnet *dev, + u8 *cmd, int cmdlen, const char * cmd_name) +@@ -319,10 +349,12 @@ + struct sierra_net_data *priv = sierra_net_get_private(dev); + int status; + ++ usb_autopm_get_interface(dev->intf); + status = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0), + USB_CDC_SEND_ENCAPSULATED_COMMAND, + USB_DIR_OUT|USB_TYPE_CLASS|USB_RECIP_INTERFACE, 0, + priv->ifnum, cmd, cmdlen, USB_CTRL_SET_TIMEOUT); ++ usb_autopm_put_interface(dev->intf); + + if (status != cmdlen && status != -ENODEV) + netdev_err(dev->net, "Submit %s failed %d\n", cmd_name, status); +@@ -339,8 +371,17 @@ + + status = sierra_net_send_cmd(dev, priv->sync_msg, + sizeof(priv->sync_msg), "SYNC"); ++ return status; ++} + +- return status; ++static void sierra_net_send_shutdown(struct usbnet *dev) ++{ ++ struct sierra_net_data *priv = sierra_net_get_private(dev); ++ ++ dev_dbg(&dev->udev->dev, "%s", __func__); ++ ++ sierra_net_send_cmd(dev, priv->shdwn_msg, ++ sizeof(priv->shdwn_msg), "Shutdown"); + } + + static void sierra_net_set_ctx_index(struct sierra_net_data *priv, u8 ctx_ix) +@@ -354,7 +395,7 @@ + + static inline int sierra_net_is_valid_addrlen(u8 len) + { +- return len == sizeof(struct in_addr); ++ return (len == sizeof(struct in_addr)); + } + + static int sierra_net_parse_lsi(struct usbnet *dev, char *data, int datalen) +@@ -383,10 +424,11 @@ + } + + /* Validate the link type */ +- if (lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv4) { +- netdev_err(dev->net, "Link type unsupported: 0x%02x\n", ++ if ((lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv4) && ++ (lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv6)) { ++ netdev_err(dev->net, "Link unavailable: 0x%02x", + lsi->link_type); +- return -1; ++ return 0; + } + + /* Validate the coverage */ +@@ -474,13 +516,15 @@ + return; + } + ifnum = priv->ifnum; ++ usb_autopm_get_interface(dev->intf); + len = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0), + USB_CDC_GET_ENCAPSULATED_RESPONSE, + USB_DIR_IN|USB_TYPE_CLASS|USB_RECIP_INTERFACE, + 0, ifnum, buf, SIERRA_NET_USBCTL_BUF_LEN, + USB_CTRL_SET_TIMEOUT); ++ usb_autopm_put_interface(dev->intf); + +- if (len < 0) { ++ if (unlikely(len < 0)) { + netdev_err(dev->net, + "usb_control_msg failed, status %d\n", len); + } else { +@@ -488,6 +532,7 @@ + + dev_dbg(&dev->udev->dev, "%s: Received status message," + " %04x bytes", __func__, len); ++ sierra_net_printk_buf(buf, len); + + err = parse_hip(buf, len, &hh); + if (err) { +@@ -534,7 +579,10 @@ + "extmsgid 0x%04x\n", hh.extmsgid.word); + break; + case SIERRA_NET_HIP_RCGI: +- /* Ignored */ ++ /* Ignored. It is a firmware ++ * workaround to solve a Windows driver bug and ++ * may be removed in the future. ++ */ + break; + default: + netdev_err(dev->net, "Unrecognized HIP msg, " +@@ -561,7 +609,10 @@ + struct sierra_net_data *priv = sierra_net_get_private(dev); + + set_bit(work, &priv->kevent_flags); +- schedule_work(&priv->sierra_net_kevent); ++ if (!schedule_work(&priv->sierra_net_kevent)) ++ dev_dbg(&dev->udev->dev, "sierra_net_kevent %d may have been dropped", work); ++ else ++ dev_dbg(&dev->udev->dev, "sierra_net_kevent %d scheduled", work); + } + + /* +@@ -581,6 +632,7 @@ + struct usb_cdc_notification *event; + + dev_dbg(&dev->udev->dev, "%s", __func__); ++ sierra_net_printk_buf(urb->transfer_buffer, urb->actual_length); + + if (urb->actual_length < sizeof *event) + return; +@@ -661,6 +713,7 @@ + if (!attrdata) + return -ENOMEM; + ++ usb_autopm_get_interface(dev->intf); + result = usb_control_msg( + dev->udev, + usb_rcvctrlpipe(dev->udev, 0), +@@ -672,6 +725,7 @@ + attrdata, /* char *data */ + sizeof(*attrdata), /* __u16 size */ + USB_CTRL_SET_TIMEOUT); /* int timeout */ ++ usb_autopm_put_interface(dev->intf); + + if (result < 0) { + kfree(attrdata); +@@ -684,6 +738,12 @@ + return result; + } + ++static int sierra_net_manage_power(struct usbnet *dev, int on) ++{ ++ dev->intf->needs_remote_wakeup = on; ++ return 0; ++} ++ + /* + * collects the bulk endpoints, the status endpoint. + */ +@@ -735,6 +795,10 @@ + + priv->usbnet = dev; + priv->ifnum = ifacenum; ++ /* override change_mtu with our own routine - need to bound check */ ++ /* replace structure to our own structure where we have our own ++ * routine - need to bound check ++ */ + dev->net->netdev_ops = &sierra_net_device_ops; + + /* change MAC addr to include, ifacenum, and to be unique */ +@@ -761,6 +825,7 @@ + + /* Set up the netdev */ + dev->net->flags |= IFF_NOARP; ++ dev->net->flags |= IFF_MULTICAST; + dev->net->ethtool_ops = &sierra_net_ethtool_ops; + netif_carrier_off(dev->net); + +@@ -773,11 +838,23 @@ + + /* Only need to do this once */ + init_timer(&priv->sync_timer); +- + /* verify fw attributes */ + status = sierra_net_get_fw_attr(dev, &fwattr); +- dev_dbg(&dev->udev->dev, "Fw attr: %x\n", fwattr); +- ++ dev_dbg(&dev->udev->dev, "Fw attr: %x\n", fwattr); ++ if (status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_APM)) { ++/******************************************************************************* ++ * If you want the default /sys/bus/usb/devices/.../.../power/level to be forced ++ * to auto, the following needs to be compiled in. ++ */ ++#ifdef POWER_LEVEL_AUTO ++ /* make power level default be 'auto' */ ++ dev_dbg(&dev->udev->dev, "Enabling APM"); ++ usb_enable_autosuspend(dev->udev); ++#endif ++ } else { ++ dev_info(&intf->dev, "Disabling APM - not supported"); ++ usb_disable_autosuspend(dev->udev); ++ } + /* test whether firmware supports DHCP */ + if (!(status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_MASK))) { + /* found incompatible firmware version */ +@@ -789,33 +866,45 @@ + /* prepare sync message from template */ + memcpy(priv->sync_msg, sync_tmplate, sizeof(priv->sync_msg)); + ++ return 0; ++} ++ ++static void sierra_net_unbind(struct usbnet *dev, struct usb_interface *intf) ++{ ++ struct sierra_net_data *priv = sierra_net_get_private(dev); ++ ++ dev_dbg(&dev->udev->dev, "%s", __func__); ++ ++ sierra_net_set_private(dev, NULL); ++ ++ kfree(priv); ++} ++ ++static int sierra_net_open(struct usbnet *dev) ++{ ++ dev_dbg(&dev->udev->dev, "%s", __func__); ++ + /* initiate the sync sequence */ + sierra_net_dosync(dev); + + return 0; + } + +-static void sierra_net_unbind(struct usbnet *dev, struct usb_interface *intf) ++static int sierra_net_stop(struct usbnet *dev) + { +- int status; + struct sierra_net_data *priv = sierra_net_get_private(dev); + + dev_dbg(&dev->udev->dev, "%s", __func__); + +- /* kill the timer and work */ ++ /* Kill the timer then flush the work queue */ + del_timer_sync(&priv->sync_timer); ++ + cancel_work_sync(&priv->sierra_net_kevent); + + /* tell modem we are going away */ +- status = sierra_net_send_cmd(dev, priv->shdwn_msg, +- sizeof(priv->shdwn_msg), "Shutdown"); +- if (status < 0) +- netdev_err(dev->net, +- "usb_control_msg failed, status %d\n", status); +- +- sierra_net_set_private(dev, NULL); ++ sierra_net_send_shutdown(dev); + +- kfree(priv); ++ return 0; + } + + static struct sk_buff *sierra_net_skb_clone(struct usbnet *dev, +@@ -847,9 +936,13 @@ + int err; + struct hip_hdr hh; + struct sk_buff *new_skb; ++ struct ethhdr *eth; ++ struct iphdr *ip; + + dev_dbg(&dev->udev->dev, "%s", __func__); + ++ sierra_net_printk_buf(skb->data, skb->len); ++ + /* could contain multiple packets */ + while (likely(skb->len)) { + err = parse_hip(skb->data, skb->len, &hh); +@@ -879,6 +972,12 @@ + memcpy(skb->data, sierra_net_get_private(dev)->ethr_hdr_tmpl, + ETH_HLEN); + ++ ip = (struct iphdr *)((char *)skb->data + ETH_HLEN); ++ if(ip->version == 6) { ++ eth = (struct ethhdr *)skb->data; ++ eth->h_proto = cpu_to_be16(ETH_P_IPV6); ++ } ++ + /* Last packet in batch handled by usbnet */ + if (hh.payload_len.word == skb->len) + return 1; +@@ -923,6 +1022,8 @@ + } + } + build_hip(skb->data, len, priv); ++ ++ sierra_net_printk_buf(skb->data, skb->len); + return skb; + } else { + /* +@@ -942,16 +1043,24 @@ + return NULL; + } + ++static int sierra_net_reset_resume(struct usb_interface *intf) ++{ ++ struct usbnet *dev = usb_get_intfdata(intf); ++ netdev_err(dev->net, "%s\n", __func__); ++ return usbnet_resume(intf); ++} ++ + static const u8 sierra_net_ifnum_list[] = { 7, 10, 11 }; +-static const struct sierra_net_info_data sierra_net_info_data_68A3 = { +- .rx_urb_size = 8 * 1024, ++static const struct sierra_net_info_data sierra_net_info_data_direct_ip = { ++ /* .rx_urb_size = 8 * 1024, */ ++ .rx_urb_size = SIERRA_NET_RX_URB_SZ, + .whitelist = { + .infolen = ARRAY_SIZE(sierra_net_ifnum_list), + .ifaceinfo = sierra_net_ifnum_list + } + }; + +-static const struct driver_info sierra_net_info_68A3 = { ++static const struct driver_info sierra_net_info_direct_ip = { + .description = "Sierra Wireless USB-to-WWAN Modem", + .flags = FLAG_WWAN | FLAG_SEND_ZLP, + .bind = sierra_net_bind, +@@ -959,12 +1068,21 @@ + .status = sierra_net_status, + .rx_fixup = sierra_net_rx_fixup, + .tx_fixup = sierra_net_tx_fixup, +- .data = (unsigned long)&sierra_net_info_data_68A3, ++ .manage_power = sierra_net_manage_power, ++ .stop = sierra_net_stop, ++ .check_connect = sierra_net_open, ++ .data = (unsigned long)&sierra_net_info_data_direct_ip, + }; + + static const struct usb_device_id products[] = { +- {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless USB-to-WWAN modem */ +- .driver_info = (unsigned long) &sierra_net_info_68A3}, ++ {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, ++ {USB_DEVICE(0xF3D, 0x68A3), /* AT&T Direct IP modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, ++ {USB_DEVICE(0x1199, 0x68AA), /* Sierra Wireless Direct IP LTE modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, ++ {USB_DEVICE(0xF3D, 0x68AA), /* AT&T Direct IP LTE modem */ ++ .driver_info = (unsigned long) &sierra_net_info_direct_ip}, + + {}, /* last item */ + }; +@@ -978,7 +1096,9 @@ + .disconnect = usbnet_disconnect, + .suspend = usbnet_suspend, + .resume = usbnet_resume, ++ .reset_resume = sierra_net_reset_resume, + .no_dynamic_id = 1, ++ .supports_autosuspend = 1, + }; + + static int __init sierra_net_init(void) +Index: linux-2.6.39.4/drivers/usb/serial/sierra.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/usb/serial/sierra.c 2012-02-27 15:38:01.519215085 -0600 ++++ linux-2.6.39.4/drivers/usb/serial/sierra.c 2011-09-22 17:05:46.000000000 -0500 +@@ -3,7 +3,7 @@ + + Copyright (C) 2006, 2007, 2008 Kevin Lloyd , + +- Copyright (C) 2008, 2009 Elina Pasheva, Matthew Safar, Rory Filer ++ Copyright (C) 2008 - 2011 Elina Pasheva, Matthew Safar, Rory Filer + + + IMPORTANT DISCLAIMER: This driver is not commercially supported by +@@ -17,8 +17,12 @@ + Whom based his on the Keyspan driver by Hugh Blemings + */ + /* Uncomment to log function calls */ +-/* #define DEBUG */ +-#define DRIVER_VERSION "v.1.7.16" ++/*#define DEBUG*/ ++/* Uncomment to force power level set to auto when attaching a device */ ++/*#define POWER_LEVEL_AUTO*/ ++ ++/* Sierra driver - kernel 2.6.38 */ ++#define DRIVER_VERSION "v.1.7.40" + #define DRIVER_AUTHOR "Kevin Lloyd, Elina Pasheva, Matthew Safar, Rory Filer" + #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" + +@@ -31,9 +35,13 @@ + #include + #include + #include ++#include + + #define SWIMS_USB_REQUEST_SetPower 0x00 ++#define SWIMS_USB_REQUEST_GetFwAttr 0x06 + #define SWIMS_USB_REQUEST_SetNmea 0x07 ++#define USB_REQUEST_TYPE_CLASS 0xA1 ++#define USB_REQUEST_IFACE 0x20 + + #define N_IN_URB_HM 8 + #define N_OUT_URB_HM 64 +@@ -46,19 +54,47 @@ + allocations > PAGE_SIZE and the number of packets in a page + is an integer 512 is the largest possible packet on EHCI */ + ++#define SWI_FW_ATTR_PM_MASK 0x02 ++/* PORTION_LEN defines the length of device attribute buffer */ ++#define PORTION_LEN 4096 ++ + static int debug; + static int nmea; + ++/* sysfs attributes */ ++static int sierra_create_sysfs_attrs(struct usb_serial_port *port); ++static int sierra_remove_sysfs_attrs(struct usb_serial_port *port); ++ + /* Used in interface blacklisting */ + struct sierra_iface_info { + const u32 infolen; /* number of interface numbers on blacklist */ + const u8 *ifaceinfo; /* pointer to the array holding the numbers */ + }; + ++/* per interface statistics */ ++struct sierra_intf_stats { ++ atomic_t rx_bytes; /* received bytes */ ++ atomic_t indat_cb_cnt; /* indat callback count */ ++ atomic_t indat_cb_fail; /* indat cb with error */ ++ ++ atomic_t tx_bytes; /* transmitted bytes */ ++ atomic_t write_cnt; /* no. of writes */ ++ atomic_t write_err; /* no. of failed writes */ ++ ++ atomic_t delayed_writes; /* no. of delayed writes */ ++ atomic_t delayed_write_err; /* no. of delayed write errs */ ++ ++ atomic_t outdat_cb_cnt; /* outdat callback count */ ++ atomic_t outdat_cb_fail; /* outdat cb with error */ ++ ++}; ++ + struct sierra_intf_private { + spinlock_t susp_lock; + unsigned int suspended:1; + int in_flight; ++ ++ struct sierra_intf_stats stats; + }; + + static int sierra_set_power_state(struct usb_device *udev, __u16 swiState) +@@ -91,6 +127,38 @@ + return result; + } + ++static int sierra_get_fw_attr(struct usb_device *udev, u16 *data) ++{ ++ int result; ++ u16 *attrdata; ++ ++ dev_dbg(&udev->dev, "%s\n", __func__); ++ ++ attrdata = kmalloc(sizeof(*attrdata), GFP_KERNEL); ++ if (!attrdata) ++ return -ENOMEM; ++ ++ result = usb_control_msg(udev, ++ usb_rcvctrlpipe(udev, 0), ++ SWIMS_USB_REQUEST_GetFwAttr, /* __u8 request*/ ++ USB_TYPE_VENDOR | USB_DIR_IN, /* request type*/ ++ 0x0000, /* __u16 value */ ++ 0x0000, /* __u16 index */ ++ attrdata, /* void *data */ ++ sizeof(*attrdata), /* _u16 size */ ++ USB_CTRL_SET_TIMEOUT); /* in timeout */ ++ ++ if (result < 0) { ++ kfree(attrdata); ++ return -EIO; ++ } ++ ++ *data = *attrdata; ++ ++ kfree(attrdata); ++ return result; ++} ++ + static int sierra_calc_num_ports(struct usb_serial *serial) + { + int num_ports = 0; +@@ -150,7 +218,6 @@ + int interface; + struct usb_interface *p_interface; + struct usb_host_interface *p_host_interface; +- dev_dbg(&serial->dev->dev, "%s\n", __func__); + + /* Get the interface structure pointer from the serial struct */ + p_interface = serial->interface; +@@ -159,8 +226,7 @@ + p_host_interface = p_interface->cur_altsetting; + + /* read the interface descriptor for this active altsetting +- * to find out the interface number we are on +- */ ++ * to find out the interface number we are on */ + interface = p_host_interface->desc.bInterfaceNumber; + + return interface; +@@ -171,7 +237,7 @@ + { + int result = 0; + struct usb_device *udev; +- struct sierra_intf_private *data; ++ struct sierra_intf_private *intfdata; + u8 ifnum; + + udev = serial->dev; +@@ -185,7 +251,9 @@ + if (serial->interface->num_altsetting == 2) { + dev_dbg(&udev->dev, "Selecting alt setting for interface %d\n", + ifnum); +- /* We know the alternate setting is 1 for the MC8785 */ ++ /* We know the alternate setting is for composite USB interface ++ * modems ++ */ + usb_set_interface(udev, ifnum, 1); + } + +@@ -199,10 +267,11 @@ + return -ENODEV; + } + +- data = serial->private = kzalloc(sizeof(struct sierra_intf_private), GFP_KERNEL); +- if (!data) ++ intfdata = serial->private = kzalloc(sizeof(struct sierra_intf_private), ++ GFP_KERNEL); ++ if (!intfdata) + return -ENOMEM; +- spin_lock_init(&data->susp_lock); ++ spin_lock_init(&intfdata->susp_lock); + + return result; + } +@@ -223,15 +292,15 @@ + /* 'blacklist' of interfaces not served by this driver */ + static const u8 direct_ip_non_serial_ifaces[] = { 7, 8, 9, 10, 11 }; + static const struct sierra_iface_info direct_ip_interface_blacklist = { +- .infolen = ARRAY_SIZE(direct_ip_non_serial_ifaces), ++ .infolen = ARRAY_SIZE( direct_ip_non_serial_ifaces ), + .ifaceinfo = direct_ip_non_serial_ifaces, + }; + +-static const struct usb_device_id id_table[] = { ++static const struct usb_device_id id_table [] = { + { USB_DEVICE(0x0F3D, 0x0112) }, /* Airprime/Sierra PC 5220 */ + { USB_DEVICE(0x03F0, 0x1B1D) }, /* HP ev2200 a.k.a MC5720 */ +- { USB_DEVICE(0x03F0, 0x211D) }, /* HP ev2210 a.k.a MC5725 */ + { USB_DEVICE(0x03F0, 0x1E1D) }, /* HP hs2300 a.k.a MC8775 */ ++ { USB_DEVICE(0x03F0, 0x211D) }, /* HP ev2210 a.k.a MC5725 */ + + { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */ + { USB_DEVICE(0x1199, 0x0018) }, /* Sierra Wireless MC5720 */ +@@ -245,7 +314,10 @@ + { USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */ + { USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */ + { USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U */ +- { USB_DEVICE(0x1199, 0x0301) }, /* Sierra Wireless USB Dongle 250U */ ++ { USB_DEVICE(0x1199, 0x0301) }, /* Sierra Wireless USB Dongle 250U/3G */ ++ /* Sierra Wireless MC5728 */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x0400, 0xFF, 0xFF, 0xFF) }, ++ + /* Sierra Wireless C597 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x0023, 0xFF, 0xFF, 0xFF) }, + /* Sierra Wireless T598 */ +@@ -253,7 +325,7 @@ + { USB_DEVICE(0x1199, 0x0026) }, /* Sierra Wireless T11 */ + { USB_DEVICE(0x1199, 0x0027) }, /* Sierra Wireless AC402 */ + { USB_DEVICE(0x1199, 0x0028) }, /* Sierra Wireless MC5728 */ +- { USB_DEVICE(0x1199, 0x0029) }, /* Sierra Wireless Device */ ++ { USB_DEVICE(0x114F, 0x6000) }, /* Sierra Wireless Q26 Elite */ + + { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */ + { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */ +@@ -277,7 +349,7 @@ + { USB_DEVICE(0x1199, 0x683A) }, /* Sierra Wireless MC8785 */ + { USB_DEVICE(0x1199, 0x683B) }, /* Sierra Wireless MC8785 Composite */ + /* Sierra Wireless MC8790, MC8791, MC8792 Composite */ +- { USB_DEVICE(0x1199, 0x683C) }, ++ { USB_DEVICE(0x1199, 0x683C) }, + { USB_DEVICE(0x1199, 0x683D) }, /* Sierra Wireless MC8791 Composite */ + /* Sierra Wireless MC8790, MC8791, MC8792 */ + { USB_DEVICE(0x1199, 0x683E) }, +@@ -298,22 +370,34 @@ + /* Sierra Wireless HSPA Non-Composite Device */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)}, + { USB_DEVICE(0x1199, 0x6893) }, /* Sierra Wireless Device */ +- { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */ +- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ /* Sierra Wireless Direct IP modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68A3, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist + }, +- { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ +- .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ /* AT&T Direct IP modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68A3, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist + }, +- { USB_DEVICE(0x413C, 0x08133) }, /* Dell Computer Corp. Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */ ++ /* Sierra Wireless Direct IP LTE modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x68AA, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ }, ++ /* AT&T Direct IP LTE modems */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF), ++ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist ++ }, ++ /* Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */ ++ { USB_DEVICE(0x413C, 0x8133) }, + + { } + }; + MODULE_DEVICE_TABLE(usb, id_table); + +- ++/* per port private data */ + struct sierra_port_private { + spinlock_t lock; /* lock the structure */ + int outstanding_urbs; /* number of out urbs in flight */ ++ + struct usb_anchor active; + struct usb_anchor delayed; + +@@ -335,7 +419,7 @@ + static int sierra_send_setup(struct usb_serial_port *port) + { + struct usb_serial *serial = port->serial; +- struct sierra_port_private *portdata; ++ struct sierra_port_private *portdata = usb_get_serial_port_data(port); + __u16 interface = 0; + int val = 0; + int do_send = 0; +@@ -343,8 +427,6 @@ + + dev_dbg(&port->dev, "%s\n", __func__); + +- portdata = usb_get_serial_port_data(port); +- + if (portdata->dtr_state) + val |= 0x01; + if (portdata->rts_state) +@@ -376,10 +458,7 @@ + if (!do_send) + return 0; + +- retval = usb_autopm_get_interface(serial->interface); +- if (retval < 0) +- return retval; +- ++ usb_autopm_get_interface(serial->interface); + retval = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), + 0x22, 0x21, val, interface, NULL, 0, USB_CTRL_SET_TIMEOUT); + usb_autopm_put_interface(serial->interface); +@@ -395,7 +474,7 @@ + sierra_send_setup(port); + } + +-static int sierra_tiocmget(struct tty_struct *tty) ++static int sierra_tiocmget(struct tty_struct *tty, struct file *file) + { + struct usb_serial_port *port = tty->driver_data; + unsigned int value; +@@ -414,7 +493,7 @@ + return value; + } + +-static int sierra_tiocmset(struct tty_struct *tty, ++static int sierra_tiocmset(struct tty_struct *tty, struct file *file, + unsigned int set, unsigned int clear) + { + struct usb_serial_port *port = tty->driver_data; +@@ -440,11 +519,77 @@ + if (urb) { + port = urb->context; + dev_dbg(&port->dev, "%s: %p\n", __func__, urb); +- kfree(urb->transfer_buffer); + usb_free_urb(urb); + } + } + ++/* Sysfs Attributes */ ++ ++static ssize_t show_suspend_status(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct usb_serial_port *port; ++ struct sierra_port_private *portdata; ++ struct sierra_intf_private *intfdata; ++ unsigned long flags; ++ unsigned int flag_suspended = 0; ++ ++ port = to_usb_serial_port(dev); ++ portdata = usb_get_serial_port_data(port); ++ intfdata = port->serial->private; ++ ++ spin_lock_irqsave(&intfdata->susp_lock, flags); ++ flag_suspended = intfdata->suspended; ++ spin_unlock_irqrestore(&intfdata->susp_lock, flags); ++ ++ return snprintf(buf, PORTION_LEN, "%i\n", flag_suspended); ++} ++ ++static ssize_t show_stats(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct usb_serial_port *port; ++ struct sierra_intf_private *intfdata; ++ ++ port = to_usb_serial_port(dev); ++ intfdata = port->serial->private; ++ ++ return snprintf(buf, PORTION_LEN, ++ "rx: %i B\tindat: %i\tindat err: %i\n" ++ "tx: %i B\toutdat: %i\toutdat err: %i\n" ++ "writes: %i\t\twrite err: %i\n" ++ "delayed writes: %i\tdelayed write err: %i\n", ++ atomic_read(&intfdata->stats.rx_bytes), atomic_read(&intfdata->stats.indat_cb_cnt), atomic_read(&intfdata->stats.indat_cb_fail), ++ atomic_read(&intfdata->stats.tx_bytes), atomic_read(&intfdata->stats.outdat_cb_cnt), atomic_read(&intfdata->stats.outdat_cb_fail), ++ atomic_read(&intfdata->stats.write_cnt), atomic_read(&intfdata->stats.write_err), ++ atomic_read(&intfdata->stats.delayed_writes), atomic_read(&intfdata->stats.delayed_write_err) ++ ); ++} ++ ++/* Read only suspend status */ ++static DEVICE_ATTR(suspend_status, S_IWUSR | S_IRUGO, show_suspend_status, ++ NULL); ++ ++/* Read only statistics */ ++static DEVICE_ATTR(stats, S_IWUSR | S_IRUGO, show_stats, NULL); ++ ++static int sierra_create_sysfs_attrs(struct usb_serial_port *port) ++{ ++ int result = 0; ++ ++ result = device_create_file(&port->dev, &dev_attr_stats); ++ if (unlikely (result < 0)) ++ return result; ++ return device_create_file(&port->dev, &dev_attr_suspend_status); ++} ++ ++static int sierra_remove_sysfs_attrs(struct usb_serial_port *port) ++{ ++ device_remove_file(&port->dev, &dev_attr_stats); ++ device_remove_file(&port->dev, &dev_attr_suspend_status); ++ return 0; ++} ++ + static void sierra_outdat_callback(struct urb *urb) + { + struct usb_serial_port *port = urb->context; +@@ -455,16 +600,20 @@ + dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number); + intfdata = port->serial->private; + +- /* free up the transfer buffer, as usb_free_urb() does not do this */ +- kfree(urb->transfer_buffer); + usb_autopm_put_interface_async(port->serial->interface); +- if (status) ++ ++ atomic_inc(&intfdata->stats.outdat_cb_cnt); ++ ++ if (status) { + dev_dbg(&port->dev, "%s - nonzero write bulk status " + "received: %d\n", __func__, status); ++ atomic_inc(&intfdata->stats.outdat_cb_fail); ++ } + + spin_lock(&portdata->lock); + --portdata->outstanding_urbs; + spin_unlock(&portdata->lock); ++ + spin_lock(&intfdata->susp_lock); + --intfdata->in_flight; + spin_unlock(&intfdata->susp_lock); +@@ -473,10 +622,11 @@ + } + + /* Write */ +-static int sierra_write(struct tty_struct *tty, struct usb_serial_port *port, +- const unsigned char *buf, int count) ++static int sierra_write(struct tty_struct *tty, ++ struct usb_serial_port *port, ++ const unsigned char *buf, int count) + { +- struct sierra_port_private *portdata; ++ struct sierra_port_private *portdata = usb_get_serial_port_data(port); + struct sierra_intf_private *intfdata; + struct usb_serial *serial = port->serial; + unsigned long flags; +@@ -489,46 +639,49 @@ + if (count == 0) + return 0; + +- portdata = usb_get_serial_port_data(port); ++ dev_dbg(&port->dev, "%s: write (%zu bytes)\n", __func__, writesize); ++ + intfdata = serial->private; + +- dev_dbg(&port->dev, "%s: write (%zd bytes)\n", __func__, writesize); + spin_lock_irqsave(&portdata->lock, flags); +- dev_dbg(&port->dev, "%s - outstanding_urbs: %d\n", __func__, +- portdata->outstanding_urbs); + if (portdata->outstanding_urbs > portdata->num_out_urbs) { + spin_unlock_irqrestore(&portdata->lock, flags); + dev_dbg(&port->dev, "%s - write limit hit\n", __func__); + return 0; + } + portdata->outstanding_urbs++; +- dev_dbg(&port->dev, "%s - 1, outstanding_urbs: %d\n", __func__, +- portdata->outstanding_urbs); + spin_unlock_irqrestore(&portdata->lock, flags); + + retval = usb_autopm_get_interface_async(serial->interface); +- if (retval < 0) { ++ if (unlikely(retval < 0)) { + spin_lock_irqsave(&portdata->lock, flags); + portdata->outstanding_urbs--; + spin_unlock_irqrestore(&portdata->lock, flags); +- goto error_simple; ++ return retval; + } + + buffer = kmalloc(writesize, GFP_ATOMIC); + if (!buffer) { + dev_err(&port->dev, "out of memory\n"); +- retval = -ENOMEM; +- goto error_no_buffer; ++ spin_lock_irqsave(&portdata->lock, flags); ++ --portdata->outstanding_urbs; ++ spin_unlock_irqrestore(&portdata->lock, flags); ++ usb_autopm_put_interface_async(serial->interface); ++ return -ENOMEM; + } + + urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!urb) { + dev_err(&port->dev, "no more free urbs\n"); +- retval = -ENOMEM; +- goto error_no_urb; ++ kfree(buffer); ++ spin_lock_irqsave(&portdata->lock, flags); ++ --portdata->outstanding_urbs; ++ spin_unlock_irqrestore(&portdata->lock, flags); ++ usb_autopm_put_interface_async(serial->interface); ++ return -ENOMEM; + } + +- memcpy(buffer, buf, writesize); ++ memcpy(buffer, buf, writesize); + + usb_serial_debug_data(debug, &port->dev, __func__, writesize, buffer); + +@@ -537,69 +690,73 @@ + port->bulk_out_endpointAddress), + buffer, writesize, sierra_outdat_callback, port); + +- /* Handle the need to send a zero length packet */ +- urb->transfer_flags |= URB_ZERO_PACKET; ++ /* Handle the need to send a zero length packet and release the ++ * transfer buffer ++ */ ++ urb->transfer_flags |= (URB_ZERO_PACKET | URB_FREE_BUFFER); + + spin_lock_irqsave(&intfdata->susp_lock, flags); + + if (intfdata->suspended) { + usb_anchor_urb(urb, &portdata->delayed); + spin_unlock_irqrestore(&intfdata->susp_lock, flags); +- goto skip_power; +- } else { +- usb_anchor_urb(urb, &portdata->active); ++ /* release our reference to this urb, the USB core will ++ * eventually free it entirely */ ++ usb_free_urb(urb); ++ return writesize; + } ++ usb_anchor_urb(urb, &portdata->active); ++ + /* send it down the pipe */ + retval = usb_submit_urb(urb, GFP_ATOMIC); + if (retval) { + usb_unanchor_urb(urb); + spin_unlock_irqrestore(&intfdata->susp_lock, flags); ++ + dev_err(&port->dev, "%s - usb_submit_urb(write bulk) failed " + "with status = %d\n", __func__, retval); +- goto error; ++ usb_free_urb(urb); ++ spin_lock_irqsave(&portdata->lock, flags); ++ --portdata->outstanding_urbs; ++ spin_unlock_irqrestore(&portdata->lock, flags); ++ usb_autopm_put_interface_async(serial->interface); ++ atomic_inc(&intfdata->stats.write_err); ++ return retval; + } else { + intfdata->in_flight++; + spin_unlock_irqrestore(&intfdata->susp_lock, flags); ++ atomic_inc(&intfdata->stats.write_cnt); ++ atomic_add(writesize, &intfdata->stats.tx_bytes); + } +- +-skip_power: +- /* we are done with this urb, so let the host driver +- * really free it when it is finished with it */ +- usb_free_urb(urb); ++ /* release our reference to this urb, the USB core will eventually ++ * free it entirely */ ++ usb_free_urb(urb); + + return writesize; +-error: +- usb_free_urb(urb); +-error_no_urb: +- kfree(buffer); +-error_no_buffer: +- spin_lock_irqsave(&portdata->lock, flags); +- --portdata->outstanding_urbs; +- dev_dbg(&port->dev, "%s - 2. outstanding_urbs: %d\n", __func__, +- portdata->outstanding_urbs); +- spin_unlock_irqrestore(&portdata->lock, flags); +- usb_autopm_put_interface_async(serial->interface); +-error_simple: +- return retval; + } + + static void sierra_indat_callback(struct urb *urb) + { + int err; + int endpoint; +- struct usb_serial_port *port; ++ struct usb_serial_port *port = urb->context; + struct tty_struct *tty; ++ struct sierra_intf_private *intfdata; + unsigned char *data = urb->transfer_buffer; + int status = urb->status; + + endpoint = usb_pipeendpoint(urb->pipe); +- port = urb->context; + + dev_dbg(&port->dev, "%s: %p\n", __func__, urb); + ++ intfdata = port->serial->private; ++ ++ atomic_inc(&intfdata->stats.indat_cb_cnt); /* indat calls */ ++ + if (status) { + dev_dbg(&port->dev, "%s: nonzero status: %d on" + " endpoint %02x\n", __func__, status, endpoint); ++ atomic_inc(&intfdata->stats.indat_cb_fail); /* indat fails */ + } else { + if (urb->actual_length) { + tty = tty_port_tty_get(&port->port); +@@ -609,6 +766,10 @@ + tty_flip_buffer_push(tty); + + tty_kref_put(tty); ++ /* tty invalid after this point */ ++ /* rx'd bytes */ ++ atomic_add(urb->actual_length, ++ &intfdata->stats.rx_bytes); + usb_serial_debug_data(debug, &port->dev, + __func__, urb->actual_length, data); + } +@@ -619,13 +780,15 @@ + } + + /* Resubmit urb so we continue receiving */ +- if (status != -ESHUTDOWN && status != -EPERM) { ++ if (status != -ESHUTDOWN && status != -ENOENT && status != -ENODEV) { + usb_mark_last_busy(port->serial->dev); + err = usb_submit_urb(urb, GFP_ATOMIC); +- if (err && err != -EPERM) ++ if (err && err != -ENODEV) + dev_err(&port->dev, "resubmit read urb failed." + "(%d)\n", err); + } ++ ++ return; + } + + static void sierra_instat_callback(struct urb *urb) +@@ -636,31 +799,29 @@ + struct sierra_port_private *portdata = usb_get_serial_port_data(port); + struct usb_serial *serial = port->serial; + +- dev_dbg(&port->dev, "%s: urb %p port %p has data %p\n", __func__, +- urb, port, portdata); ++ dev_dbg(&port->dev, "%s: %p\n", __func__, urb); + + if (status == 0) { + struct usb_ctrlrequest *req_pkt = + (struct usb_ctrlrequest *)urb->transfer_buffer; + +- if (!req_pkt) { +- dev_dbg(&port->dev, "%s: NULL req_pkt\n", +- __func__); +- return; +- } +- if ((req_pkt->bRequestType == 0xA1) && +- (req_pkt->bRequest == 0x20)) { ++ const u16 *sigp = (u16 *)(req_pkt + 1); ++ /* usb_ctrlrequest we parsed is followed by two bytes of data ++ * make sure we received that many bytes ++ */ ++ if (urb->actual_length >= sizeof(*req_pkt) + sizeof(*sigp) && ++ req_pkt->bRequestType == USB_REQUEST_TYPE_CLASS && ++ req_pkt->bRequest == USB_REQUEST_IFACE) { + int old_dcd_state; +- unsigned char signals = *((unsigned char *) +- urb->transfer_buffer + +- sizeof(struct usb_ctrlrequest)); ++ const u16 signals = get_unaligned_le16(sigp); + struct tty_struct *tty; + +- dev_dbg(&port->dev, "%s: signal x%x\n", __func__, ++ dev_dbg(&port->dev, "%s: signal 0x%x\n", __func__, + signals); + + old_dcd_state = portdata->dcd_state; +- portdata->cts_state = 1; ++ /* Note: CTS from modem is in reverse logic! */ ++ portdata->cts_state = ((signals & 0x100) ? 0 : 1); + portdata->dcd_state = ((signals & 0x01) ? 1 : 0); + portdata->dsr_state = ((signals & 0x02) ? 1 : 0); + portdata->ri_state = ((signals & 0x08) ? 1 : 0); +@@ -671,19 +832,19 @@ + tty_hangup(tty); + tty_kref_put(tty); + } else { +- dev_dbg(&port->dev, "%s: type %x req %x\n", +- __func__, req_pkt->bRequestType, +- req_pkt->bRequest); ++ /* dump the data we don't understand to log */ ++ usb_serial_debug_data(1, &port->dev, __func__, ++ urb->actual_length, urb->transfer_buffer); + } + } else + dev_dbg(&port->dev, "%s: error %d\n", __func__, status); + + /* Resubmit urb so we continue receiving IRQ data */ +- if (status != -ESHUTDOWN && status != -ENOENT) { ++ if (status != -ESHUTDOWN && status != -ENOENT && status != -ENODEV) { + usb_mark_last_busy(serial->dev); + urb->dev = serial->dev; + err = usb_submit_urb(urb, GFP_ATOMIC); +- if (err && err != -EPERM) ++ if (err && err != -ENODEV) + dev_err(&port->dev, "%s: resubmit intr urb " + "failed. (%d)\n", __func__, err); + } +@@ -694,20 +855,21 @@ + struct usb_serial_port *port = tty->driver_data; + struct sierra_port_private *portdata = usb_get_serial_port_data(port); + unsigned long flags; ++ int retval; + + dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number); + + /* try to give a good number back based on if we have any free urbs at + * this point in time */ ++ retval = MAX_TRANSFER; ++ + spin_lock_irqsave(&portdata->lock, flags); +- if (portdata->outstanding_urbs > (portdata->num_out_urbs * 2) / 3) { +- spin_unlock_irqrestore(&portdata->lock, flags); +- dev_dbg(&port->dev, "%s - write limit hit\n", __func__); +- return 0; ++ if (portdata->outstanding_urbs >= portdata->num_out_urbs) { ++ retval = 0; + } + spin_unlock_irqrestore(&portdata->lock, flags); + +- return 2048; ++ return retval; + } + + static void sierra_stop_rx_urbs(struct usb_serial_port *port) +@@ -734,6 +896,7 @@ + urb = portdata->in_urbs[i]; + if (!urb) + continue; ++ urb->transfer_flags |= URB_FREE_BUFFER; + err = usb_submit_urb(urb, mem_flags); + if (err) { + dev_err(&port->dev, "%s: submit urb failed: %d\n", +@@ -795,38 +958,31 @@ + + return urb; + } +- + static void sierra_close(struct usb_serial_port *port) + { + int i; ++ struct urb *urb; + struct usb_serial *serial = port->serial; + struct sierra_port_private *portdata; + struct sierra_intf_private *intfdata = port->serial->private; + +- + dev_dbg(&port->dev, "%s\n", __func__); + portdata = usb_get_serial_port_data(port); + + portdata->rts_state = 0; + portdata->dtr_state = 0; + ++ usb_autopm_get_interface(serial->interface); ++ + if (serial->dev) { + mutex_lock(&serial->disc_mutex); +- if (!serial->disconnected) { +- serial->interface->needs_remote_wakeup = 0; +- /* odd error handling due to pm counters */ +- if (!usb_autopm_get_interface(serial->interface)) +- sierra_send_setup(port); +- else +- usb_autopm_get_interface_no_resume(serial->interface); +- +- } ++ if (!serial->disconnected) ++ sierra_send_setup(port); + mutex_unlock(&serial->disc_mutex); + spin_lock_irq(&intfdata->susp_lock); + portdata->opened = 0; + spin_unlock_irq(&intfdata->susp_lock); + +- + /* Stop reading urbs */ + sierra_stop_rx_urbs(port); + /* .. and release them */ +@@ -834,6 +990,14 @@ + sierra_release_urb(portdata->in_urbs[i]); + portdata->in_urbs[i] = NULL; + } ++ while((urb = usb_get_from_anchor(&portdata->delayed))) { ++ sierra_release_urb(urb); ++ usb_autopm_put_interface(serial->interface); ++ } ++ /* wait for active to finish */ ++ usb_wait_anchor_empty_timeout(&portdata->active, 500); ++ usb_kill_anchored_urbs(&portdata->active); ++ + } + } + +@@ -867,18 +1031,41 @@ + usb_clear_halt(serial->dev, + usb_sndbulkpipe(serial->dev, endpoint) | USB_DIR_IN); + ++ /* reset outstanding out urbs counter */ ++ spin_lock_irq(&portdata->lock); ++ portdata->outstanding_urbs = 0; ++ spin_unlock_irq(&portdata->lock); ++ + err = sierra_submit_rx_urbs(port, GFP_KERNEL); + if (err) { +- /* get rid of everything as in close */ +- sierra_close(port); +- /* restore balance for autopm */ +- if (!serial->disconnected) ++ /* do everything as in close() but do not call close() because ++ * usbserial calls sierra_open() with mutex taken; ++ * then if we call sierra_close() inside sierra_open() we ++ * violate 'no nested mutexes' kernel condition ++ */ ++ portdata->rts_state = 0; ++ portdata->dtr_state = 0; ++ usb_autopm_get_interface(serial->interface); ++ /* Stop reading urbs */ ++ sierra_stop_rx_urbs(port); ++ /* .. and release them */ ++ for (i = 0; i < portdata->num_in_urbs; i++) { ++ sierra_release_urb(portdata->in_urbs[i]); ++ portdata->in_urbs[i] = NULL; ++ } ++ while((urb = usb_get_from_anchor(&portdata->delayed))) { ++ sierra_release_urb(urb); + usb_autopm_put_interface(serial->interface); ++ } ++ /* wait for active to finish */ ++ usb_wait_anchor_empty_timeout(&portdata->active, 500); ++ usb_kill_anchored_urbs(&portdata->active); ++ /* restore balance for autopm */ ++ usb_autopm_put_interface(serial->interface); + return err; + } + sierra_send_setup(port); + +- serial->interface->needs_remote_wakeup = 1; + spin_lock_irq(&intfdata->susp_lock); + portdata->opened = 1; + spin_unlock_irq(&intfdata->susp_lock); +@@ -887,7 +1074,6 @@ + return 0; + } + +- + static void sierra_dtr_rts(struct usb_serial_port *port, int on) + { + struct usb_serial *serial = port->serial; +@@ -907,11 +1093,13 @@ + + static int sierra_startup(struct usb_serial *serial) + { +- struct usb_serial_port *port; +- struct sierra_port_private *portdata; ++ struct usb_serial_port *port = NULL; ++ struct sierra_port_private *portdata = NULL; + struct sierra_iface_info *himemoryp = NULL; + int i; + u8 ifnum; ++ u16 fw_attr; ++ int result; + + dev_dbg(&serial->dev->dev, "%s\n", __func__); + +@@ -922,19 +1110,30 @@ + if (nmea) + sierra_vsc_set_nmea(serial->dev, 1); + +- /* Now setup per port private data */ +- for (i = 0; i < serial->num_ports; i++) { +- port = serial->port[i]; +- portdata = kzalloc(sizeof(*portdata), GFP_KERNEL); ++ if (serial->num_ports) { ++ /* Note: One big piece of memory is allocated for all ports ++ * private data in one shot. This memory is split into equal ++ * pieces for each port. ++ */ ++ portdata = (struct sierra_port_private *)kzalloc ++ (sizeof(*portdata) * serial->num_ports, GFP_KERNEL); + if (!portdata) { +- dev_dbg(&port->dev, "%s: kmalloc for " +- "sierra_port_private (%d) failed!\n", +- __func__, i); ++ dev_dbg(&serial->dev->dev, "%s: No memory!\n", __func__); + return -ENOMEM; + } ++ } ++ ++ /* Now setup per port private data */ ++ for (i = 0; i < serial->num_ports; i++, portdata++) { ++ port = serial->port[i]; ++ /* Initialize selected members of private data because these ++ * may be referred to right away */ + spin_lock_init(&portdata->lock); + init_usb_anchor(&portdata->active); + init_usb_anchor(&portdata->delayed); ++ ++ portdata->cts_state = 1; ++ + ifnum = i; + /* Assume low memory requirements */ + portdata->num_out_urbs = N_OUT_URB; +@@ -959,12 +1158,29 @@ + portdata->num_in_urbs = N_IN_URB_HM; + } + } +- dev_dbg(&serial->dev->dev, ++ dev_dbg(&serial->dev->dev, + "Memory usage (urbs) interface #%d, in=%d, out=%d\n", + ifnum,portdata->num_in_urbs, portdata->num_out_urbs ); + /* Set the port private data pointer */ + usb_set_serial_port_data(port, portdata); + } ++ serial->interface->needs_remote_wakeup = 1; ++ ++ result = sierra_get_fw_attr(serial->dev, &fw_attr); ++ if (result == sizeof(fw_attr) && (fw_attr & SWI_FW_ATTR_PM_MASK) ) { ++ dev_info(&serial->dev->dev, ++ "APM supported, enabling autosuspend.\n"); ++/******************************************************************************* ++ * If you want the default /sys/bus/usb/devices/.../.../power/level to be forced ++ * to auto, the following needs to be compiled in. ++ */ ++#ifdef POWER_LEVEL_AUTO ++ /* make power level default be 'auto' */ ++ usb_enable_autosuspend(serial->dev); ++#endif ++ } else { ++ usb_disable_autosuspend(serial->dev); ++ } + + return 0; + } +@@ -973,19 +1189,29 @@ + { + int i; + struct usb_serial_port *port; +- struct sierra_port_private *portdata; ++ struct sierra_intf_private *intfdata = serial->private; + + dev_dbg(&serial->dev->dev, "%s\n", __func__); + ++ if (serial->num_ports > 0) { ++ port = serial->port[0]; ++ if (port) ++ /* Note: The entire piece of memory that was allocated ++ * in the startup routine can be released by passing ++ * a pointer to the beginning of the piece. ++ * This address corresponds to the address of the chunk ++ * that was given to port 0. ++ */ ++ kfree(usb_get_serial_port_data(port)); ++ } ++ + for (i = 0; i < serial->num_ports; ++i) { + port = serial->port[i]; + if (!port) + continue; +- portdata = usb_get_serial_port_data(port); +- if (!portdata) +- continue; +- kfree(portdata); ++ usb_set_serial_port_data(port, NULL); + } ++ kfree(intfdata); + } + + #ifdef CONFIG_PM +@@ -1007,21 +1233,21 @@ + static int sierra_suspend(struct usb_serial *serial, pm_message_t message) + { + struct sierra_intf_private *intfdata; +- int b; + +- if (message.event & PM_EVENT_AUTO) { +- intfdata = serial->private; +- spin_lock_irq(&intfdata->susp_lock); +- b = intfdata->in_flight; ++ dev_dbg(&serial->dev->dev, "%s\n", __func__); ++ ++ intfdata = serial->private; ++ spin_lock_irq(&intfdata->susp_lock); + +- if (b) { ++ if (message.event & PM_EVENT_AUTO) { ++ if (intfdata->in_flight) { + spin_unlock_irq(&intfdata->susp_lock); + return -EBUSY; +- } else { +- intfdata->suspended = 1; +- spin_unlock_irq(&intfdata->susp_lock); + } + } ++ intfdata->suspended = 1; ++ spin_unlock_irq(&intfdata->susp_lock); ++ + stop_read_write_urbs(serial); + + return 0; +@@ -1035,22 +1261,35 @@ + struct urb *urb; + int ec = 0; + int i, err; ++ int len; ++ int failed_submits; + ++ dev_dbg(&serial->dev->dev, "%s\n", __func__); ++ + spin_lock_irq(&intfdata->susp_lock); + for (i = 0; i < serial->num_ports; i++) { + port = serial->port[i]; + portdata = usb_get_serial_port_data(port); +- ++ failed_submits = 0; + while ((urb = usb_get_from_anchor(&portdata->delayed))) { + usb_anchor_urb(urb, &portdata->active); + intfdata->in_flight++; ++ len = urb->transfer_buffer_length; + err = usb_submit_urb(urb, GFP_ATOMIC); + if (err < 0) { + intfdata->in_flight--; + usb_unanchor_urb(urb); +- usb_scuttle_anchored_urbs(&portdata->delayed); +- break; ++ failed_submits++; ++ atomic_inc(&intfdata->stats.delayed_write_err); ++ /* fix pm_usage_cnt */ ++ usb_autopm_put_interface_async( ++ port->serial->interface); ++ } else { ++ atomic_inc(&intfdata->stats.delayed_writes); ++ atomic_add(len, &intfdata->stats.tx_bytes); + } ++ /* release urb - usb_get_from_anchor increased kref */ ++ usb_free_urb(urb); + } + + if (portdata->opened) { +@@ -1058,12 +1297,24 @@ + if (err) + ec++; + } ++ if (failed_submits) { ++ /* fix outstanding_urbs counter */ ++ spin_lock(&portdata->lock); /* assuming irq disabled */ ++ portdata->outstanding_urbs -= failed_submits; ++ spin_unlock(&portdata->lock); ++ /* unblock a writer */ ++ usb_serial_port_softint(port); ++ } + } + intfdata->suspended = 0; + spin_unlock_irq(&intfdata->susp_lock); + + return ec ? -EIO : 0; + } ++#else ++#define sierra_suspend NULL ++#define sierra_resume NULL ++#endif + + static int sierra_reset_resume(struct usb_interface *intf) + { +@@ -1071,11 +1322,6 @@ + dev_err(&serial->dev->dev, "%s\n", __func__); + return usb_serial_resume(intf); + } +-#else +-#define sierra_suspend NULL +-#define sierra_resume NULL +-#define sierra_reset_resume NULL +-#endif + + static struct usb_driver sierra_driver = { + .name = "sierra", +@@ -1085,10 +1331,12 @@ + .resume = usb_serial_resume, + .reset_resume = sierra_reset_resume, + .id_table = id_table, +- .no_dynamic_id = 1, +- .supports_autosuspend = 1, ++ ++ .no_dynamic_id = 1, ++ .supports_autosuspend = 1, + }; + ++ + static struct usb_serial_driver sierra_device = { + .driver = { + .owner = THIS_MODULE, +@@ -1109,9 +1357,12 @@ + .tiocmset = sierra_tiocmset, + .attach = sierra_startup, + .release = sierra_release, +- .suspend = sierra_suspend, +- .resume = sierra_resume, ++ .port_probe = sierra_create_sysfs_attrs, ++ .port_remove = sierra_remove_sysfs_attrs, ++ .suspend = sierra_suspend, ++ .resume = sierra_resume, + .read_int_callback = sierra_instat_callback, ++ + }; + + /* Functions used by new usb-serial code. */ +@@ -1122,7 +1373,6 @@ + if (retval) + goto failed_device_register; + +- + retval = usb_register(&sierra_driver); + if (retval) + goto failed_driver_register; diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch new file mode 100644 index 0000000..9ffaa5a --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch @@ -0,0 +1,27 @@ +Index: linux-2.6.39.4/drivers/mmc/core/core.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/mmc/core/core.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/drivers/mmc/core/core.c 2012-06-15 15:37:50.263414987 -0500 +@@ -46,7 +46,9 @@ + * So we allow it it to be disabled. + */ + int use_spi_crc = 1; ++int max_clock = 0; + module_param(use_spi_crc, bool, 0); ++module_param(max_clock, int, 0); + + /* + * We normally treat cards as removed during suspend if they are not +@@ -628,6 +630,12 @@ + + if (ios->clock > 0) + mmc_set_ungated(host); ++ ++ if (max_clock > 0 && ios->clock > max_clock) { ++ ios->clock = max_clock; ++ printk("mmc: forcing clock to %u\n", ios->clock); ++ } ++ + host->ops->set_ios(host, ios); + } + diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig new file mode 100644 index 0000000..a3e1956 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/defconfig @@ -0,0 +1,2295 @@ +# +# Automatically generated make config: don't edit +# Linux/arm 2.6.39.4 Kernel Configuration +# Mon Sep 10 13:10:13 2012 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +# CONFIG_ARCH_USES_GETTIMEOFFSET is not set +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_KTIME_SCALAR=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_VECTORS_BASE=0xffff0000 +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y +CONFIG_HAVE_IRQ_WORK=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_FHANDLE is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_GENERIC_HARDIRQS=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_HARDIRQS=y +CONFIG_HAVE_SPARSE_IRQ=y +CONFIG_GENERIC_IRQ_SHOW=y +# CONFIG_SPARSE_IRQ is not set + +# +# RCU Subsystem +# +CONFIG_TREE_PREEMPT_RCU=y +# CONFIG_TINY_RCU is not set +# CONFIG_TINY_PREEMPT_RCU is not set +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_CGROUP_NS is not set +# CONFIG_CGROUP_FREEZER is not set +# CONFIG_CGROUP_DEVICE is not set +# CONFIG_CPUSETS is not set +# CONFIG_CGROUP_CPUACCT is not set +# CONFIG_RESOURCE_COUNTERS is not set +# CONFIG_CGROUP_SCHED is not set +CONFIG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +# CONFIG_PERF_EVENTS is not set +# CONFIG_PERF_COUNTERS is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_PROFILING is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_DMA_API_DEBUG=y + +# +# GCOV-based kernel profiling +# +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_THROTTLING is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_CFQ_GROUP_IOSCHED is not set +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +CONFIG_DEFAULT_NOOP=y +CONFIG_DEFAULT_IOSCHED="noop" +# CONFIG_INLINE_SPIN_TRYLOCK is not set +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK is not set +# CONFIG_INLINE_SPIN_LOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +# CONFIG_INLINE_SPIN_UNLOCK is not set +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_READ_TRYLOCK is not set +# CONFIG_INLINE_READ_LOCK is not set +# CONFIG_INLINE_READ_LOCK_BH is not set +# CONFIG_INLINE_READ_LOCK_IRQ is not set +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set +# CONFIG_INLINE_READ_UNLOCK is not set +# CONFIG_INLINE_READ_UNLOCK_BH is not set +# CONFIG_INLINE_READ_UNLOCK_IRQ is not set +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_WRITE_TRYLOCK is not set +# CONFIG_INLINE_WRITE_LOCK is not set +# CONFIG_INLINE_WRITE_LOCK_BH is not set +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set +# CONFIG_INLINE_WRITE_UNLOCK is not set +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +CONFIG_FREEZER=y + +# +# System Type +# +CONFIG_MMU=y +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_VEXPRESS is not set +CONFIG_ARCH_AT91=y +# CONFIG_ARCH_BCMRING is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MXS is not set +# CONFIG_ARCH_STMP3XXX is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_NUC93X is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_SHMOBILE is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5P64X0 is not set +# CONFIG_ARCH_S5P6442 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_EXYNOS4 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_TCC_926 is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_NOMADIK is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP is not set +# CONFIG_PLAT_SPEAR is not set +# CONFIG_ARCH_VT8500 is not set +CONFIG_HAVE_AT91_DATAFLASH_CARD=y +CONFIG_HAVE_NAND_ATMEL_BUSWIDTH_16=y +CONFIG_HAVE_AT91_USART3=y +CONFIG_HAVE_AT91_USART4=y +CONFIG_HAVE_AT91_USART5=y + +# +# Atmel AT91 System-on-Chip +# +# CONFIG_ARCH_AT91RM9200 is not set +# CONFIG_ARCH_AT91SAM9260 is not set +# CONFIG_ARCH_AT91SAM9261 is not set +# CONFIG_ARCH_AT91SAM9G10 is not set +# CONFIG_ARCH_AT91SAM9263 is not set +# CONFIG_ARCH_AT91SAM9RL is not set +CONFIG_ARCH_AT91SAM9G20=y +# CONFIG_ARCH_AT91SAM9G45 is not set +# CONFIG_ARCH_AT91CAP9 is not set +# CONFIG_ARCH_AT572D940HF is not set +# CONFIG_ARCH_AT91X40 is not set +CONFIG_AT91_PMC_UNIT=y + +# +# AT91SAM9G20 Board Type +# +CONFIG_MACH_AT91SAM9G20EK=y +# CONFIG_MACH_AT91SAM9G20EK_2MMC is not set +# CONFIG_MACH_CPU9G20 is not set +# CONFIG_MACH_ACMENETUSFOXG20 is not set +# CONFIG_MACH_PORTUXG20 is not set +# CONFIG_MACH_STAMP9G20 is not set +# CONFIG_MACH_PCONTROL_G20 is not set +# CONFIG_MACH_GSIA18S is not set + +# +# AT91SAM9260/AT91SAM9G20 boards +# +# CONFIG_MACH_SNAPPER_9260 is not set + +# +# AT91 Board Options +# +CONFIG_MTD_AT91_DATAFLASH_CARD=y +# CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16 is not set + +# +# AT91 Feature Selections +# +CONFIG_AT91_PROGRAMMABLE_CLOCKS=y +CONFIG_AT91_SLOW_CLOCK=y +CONFIG_AT91_TIMER_HZ=100 +CONFIG_AT91_EARLY_DBGU=y +# CONFIG_AT91_EARLY_USART0 is not set +# CONFIG_AT91_EARLY_USART1 is not set +# CONFIG_AT91_EARLY_USART2 is not set +# CONFIG_AT91_EARLY_USART3 is not set +# CONFIG_AT91_EARLY_USART4 is not set +# CONFIG_AT91_EARLY_USART5 is not set +# CONFIG_GPIO_PCA953X is not set + +# +# System MMU +# + +# +# Processor Type +# +CONFIG_CPU_ARM926T=y +CONFIG_CPU_32v5=y +CONFIG_CPU_ABRT_EV5TJ=y +CONFIG_CPU_PABRT_LEGACY=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_COPY_V4WB=y +CONFIG_CPU_TLB_V4WBI=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_USE_DOMAINS=y + +# +# Processor Features +# +# CONFIG_ARM_THUMB is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set +# CONFIG_CPU_CACHE_ROUND_ROBIN is not set +CONFIG_ARM_L1_CACHE_SHIFT=5 + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_HZ=100 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_HIGHMEM is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=999999 +# CONFIG_COMPACTION is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_NEED_PER_CPU_KM=y +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_DEPRECATED_PARAM_STRUCT is not set + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE=" quiet " +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_AUTO_ZRELADDR is not set + +# +# CPU Power Management +# +# CONFIG_CPU_IDLE is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +# CONFIG_VFP is not set + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_PM_SLEEP=y +# CONFIG_PM_RUNTIME is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_APM_EMULATION is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IPGRE=y +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +# CONFIG_DEFAULT_CUBIC is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=y +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_EVENTS=y +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_H323=y +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set +# CONFIG_NETFILTER_TPROXY is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +CONFIG_NETFILTER_XT_CONNMARK=y + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LED is not set +CONFIG_NETFILTER_XT_TARGET_MARK=y +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_CONNMARK=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +CONFIG_NETFILTER_XT_MATCH_HL=y +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +CONFIG_NETFILTER_XT_MATCH_STATE=y +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +CONFIG_IP_NF_MATCH_ECN=y +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_ULOG is not set +CONFIG_NF_NAT=y +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_NETMAP=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_NF_NAT_FTP=y +# CONFIG_NF_NAT_IRC is not set +# CONFIG_NF_NAT_TFTP is not set +# CONFIG_NF_NAT_AMANDA is not set +# CONFIG_NF_NAT_PPTP is not set +CONFIG_NF_NAT_H323=y +# CONFIG_NF_NAT_SIP is not set +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +# CONFIG_SCTP_HMAC_MD5 is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +# CONFIG_BT_BNEP_MC_FILTER is not set +# CONFIG_BT_BNEP_PROTO_FILTER is not set +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +# CONFIG_BT_HCIBTUSB is not set +# CONFIG_BT_HCIBTSDIO is not set +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_BCSP is not set +# CONFIG_BT_HCIUART_ATH3K is not set +CONFIG_BT_HCIUART_LL=y +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_MRVL is not set +# CONFIG_AF_RXRPC is not set +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +CONFIG_NL80211_TESTMODE=y +CONFIG_CFG80211_DEVELOPER_WARNINGS=y +CONFIG_CFG80211_REG_DEBUG=y +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +CONFIG_CFG80211_WEXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +# CONFIG_MAC80211_MESH is not set +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_DEVTMPFS is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_DATAFLASH=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DATAFLASH_OTP is not set +CONFIG_MTD_M25P80=y +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND_ECC=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_BCH is not set +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +CONFIG_MTD_NAND_ATMEL=y +CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y +# CONFIG_MTD_NAND_ATMEL_ECC_NONE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ALAUDA is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set + +# +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected +# +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=32768 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_SENSORS_LIS3LV02D is not set +CONFIG_MISC_DEVICES=y +# CONFIG_AD525X_DPOT is not set +CONFIG_ATMEL_TCLIB=y +CONFIG_ATMEL_TCB_CLKSRC=y +CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 +# CONFIG_ICS932S401 is not set +CONFIG_ATMEL_SSC=y +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1780 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_TI_DAC7512 is not set +# CONFIG_BMP085 is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +CONFIG_EEPROM_93CX6=m +# CONFIG_IWMC3200TOP is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_LIBFC is not set +# CONFIG_LIBFCOE is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +CONFIG_HAVE_NET_MACB=y +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +CONFIG_MII=y +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM63XX_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MACB=y +# CONFIG_AX88796 is not set +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set +# CONFIG_ENC28J60 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +# CONFIG_SMSC911X is not set +# CONFIG_DNET is not set +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +# CONFIG_B44 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_FTMAC100 is not set +CONFIG_NETDEV_1000=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NETDEV_10000=y +CONFIG_WLAN=y +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AT76C50X_USB=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +# CONFIG_MAC80211_HWSIM is not set +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_HTC=m +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +# CONFIG_CARL9170 is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_B43LEGACY_DMA_AND_PIO_MODE is not set +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +# CONFIG_HOSTAP is not set +# CONFIG_IWM is not set +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +# CONFIG_LIBERTAS_SDIO is not set +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_MESH is not set +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +# CONFIG_P54_SPI is not set +CONFIG_P54_LEDS=y +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +# CONFIG_RT2800USB_RT33XX is not set +# CONFIG_RT2800USB_RT35XX is not set +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2800_LIB=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_HT=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +# CONFIG_RTL8192CU is not set +# CONFIG_WL1251 is not set +CONFIG_WL12XX_MENU=m +CONFIG_WL12XX=m +# CONFIG_WL12XX_HT is not set +# CONFIG_WL12XX_SPI is not set +CONFIG_WL12XX_SDIO=m +# CONFIG_WL12XX_SDIO_TEST is not set +CONFIG_WL12XX_PLATFORM_DATA=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_NET1080=m +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +# CONFIG_USB_ALI_M5632 is not set +# CONFIG_USB_AN2720 is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_KC2190 is not set +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_IPHETH is not set +CONFIG_USB_SIERRA_NET=m +# CONFIG_USB_VL600 is not set +# CONFIG_WAN is not set + +# +# CAIF transport drivers +# +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_BSDCOMP=y +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set +# CONFIG_PPTP is not set +# CONFIG_SLIP is not set +CONFIG_SLHC=y +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +CONFIG_DEVKMEM=y + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_ATMEL=y +CONFIG_SERIAL_ATMEL_CONSOLE=y +CONFIG_SERIAL_ATMEL_PDC=y +# CONFIG_SERIAL_ATMEL_TTYAT is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX3107 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_HVC_DCC is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_RAMOOPS is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE is not set +CONFIG_I2C_GPIO=y +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +CONFIG_SPI_ATMEL=y +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_DESIGNWARE is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set + +# +# PPS support +# +# CONFIG_PPS is not set + +# +# PPS generators support +# +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO expanders: +# +# CONFIG_GPIO_BASIC_MMIO is not set +# CONFIG_GPIO_IT8761E is not set + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_SX150X is not set +# CONFIG_GPIO_ADP5588 is not set + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_74X164 is not set + +# +# AC97 GPIO expanders: +# + +# +# MODULbus GPIO expanders: +# +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_AT91SAM9X_WATCHDOG=y +# CONFIG_MAX63XX_WATCHDOG is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_MFD_SUPPORT=y +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_MC13XXX is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_REGULATOR is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +# CONFIG_MEDIA_CONTROLLER is not set +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +# CONFIG_DVB_CORE is not set +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_RC_CORE=y +CONFIG_LIRC=y +# CONFIG_RC_MAP is not set +# CONFIG_IR_NEC_DECODER is not set +# CONFIG_IR_RC5_DECODER is not set +# CONFIG_IR_RC6_DECODER is not set +# CONFIG_IR_JVC_DECODER is not set +# CONFIG_IR_SONY_DECODER is not set +CONFIG_IR_RC5_SZ_DECODER=y +CONFIG_IR_LIRC_CODEC=y +# CONFIG_IR_IMON is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_STREAMZAP is not set +# CONFIG_RC_LOOPBACK is not set +# CONFIG_MEDIA_ATTACH is not set +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_IR_I2C=m + +# +# Audio decoders +# +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m + +# +# RDS decoders +# + +# +# Video decoders +# +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_CX25840=m + +# +# MPEG video encoders +# +CONFIG_VIDEO_CX2341X=m + +# +# Video encoders +# + +# +# Video improvement chips +# +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_TIMBERDALE is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_SOC_CAMERA is not set +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +# CONFIG_USB_GSPCA_KONICA is not set +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +# CONFIG_USB_GSPCA_NW80X is not set +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +# CONFIG_USB_GSPCA_SPCA1528 is not set +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +# CONFIG_USB_GSPCA_SQ930X is not set +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +# CONFIG_USB_GSPCA_VICAM is not set +# CONFIG_USB_GSPCA_XIRLINK_CIT is not set +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_USBVISION=m +# CONFIG_USB_ET61X251 is not set +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +# CONFIG_V4L_MEM2MEM_DRIVERS is not set +# CONFIG_RADIO_ADAPTERS is not set + +# +# Graphics support +# +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_FB is not set +# CONFIG_FB_CARMINE_DRAM_EVAL is not set +# CONFIG_CARMINE_DRAM_CUSTOM is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +# CONFIG_SOUND is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +# CONFIG_USB_HID is not set +# CONFIG_HID_PID is not set + +# +# Special HID drivers +# +CONFIG_HID_APPLE=m +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_WACOM is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HWA_HCD is not set +# CONFIG_USB_MUSB_HDRC is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=m +CONFIG_USB_EZUSB=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_HP4X=m +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SAMBA is not set +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m +CONFIG_USB_SERIAL_ZIO=m +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +CONFIG_USB_SEVSEG=m +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +CONFIG_USB_GADGET_AT91=y +CONFIG_USB_AT91=y +# CONFIG_USB_GADGET_FUSB300 is not set +# CONFIG_USB_GADGET_R8A66597 is not set +# CONFIG_USB_GADGET_PXA_U2O is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_CI13XXX_PCI is not set +# CONFIG_USB_GADGET_NET2280 is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LANGWELL is not set +# CONFIG_USB_GADGET_EG20T is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +# CONFIG_USB_GADGET_DUALSPEED is not set +CONFIG_USB_ZERO=m +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_ETH is not set +# CONFIG_USB_G_NCM is not set +CONFIG_USB_GADGETFS=m +# CONFIG_USB_FUNCTIONFS is not set +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +# CONFIG_USB_MASS_STORAGE is not set +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_NOKIA is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ULPI is not set +# CONFIG_NOP_USB_XCEIV is not set +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set +# CONFIG_MMC_CLKGATE is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_SDHCI is not set +CONFIG_MMC_AT91=m +# CONFIG_MMC_ATMELMCI is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_GPIO_PLATFORM=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +CONFIG_LEDS_TRIGGERS=y + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_NFC_DEVICES is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set +# CONFIG_RTC_DRV_PCF2123 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_AT91SAM9=y +CONFIG_RTC_DRV_AT91SAM9_RTT=0 +CONFIG_RTC_DRV_AT91SAM9_GPBR=0 +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_STAGING is not set +# CONFIG_LIS3L02DQ_BUF_RING_SW is not set +# CONFIG_MACH_NO_WESTBRIDGE is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_XATTR=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD=y +CONFIG_JBD2=y +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_WBUF_VERIFY=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_LOGFS is not set +CONFIG_CRAMFS=y +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +CONFIG_ROMFS_FS=y +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_MTD is not set +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +CONFIG_ROMFS_ON_BLOCK=y +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_V4 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_PREEMPT=y +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_ARM_UNWIND=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_DEBUG_LL=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_OC_ETM is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +# CONFIG_DEFAULT_SECURITY_APPARMOR is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=m + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI2=m +CONFIG_CRYPTO_AEAD2=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=m +CONFIG_CRYPTO_HASH2=m +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=m +CONFIG_CRYPTO_PCOMP2=m +CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_MANAGER2=m +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=m +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=m +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +CONFIG_CRYPTO_HW=y +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +CONFIG_CRC7=m +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_AVERAGE=y diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch new file mode 100644 index 0000000..94f9014 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch @@ -0,0 +1,406 @@ +Index: linux-2.6.39.4/arch/arm/mach-at91/at91sam9260_devices.c +=================================================================== +--- linux-2.6.39.4.orig/arch/arm/mach-at91/at91sam9260_devices.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/arch/arm/mach-at91/at91sam9260_devices.c 2012-09-10 12:33:08.656010481 -0500 +@@ -183,9 +183,9 @@ + at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */ + at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */ + at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */ +- at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */ +- at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */ +- at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */ ++ at91_set_B_periph(AT91_PIN_PA10, 0); /* ETX2 */ ++ at91_set_B_periph(AT91_PIN_PA11, 0); /* ETX3 */ ++ /*at91_set_B_periph(AT91_PIN_PA22, 0);*/ /* ETXER */ + } + + eth_data = *data; +@@ -571,7 +571,15 @@ + .num_resources = ARRAY_SIZE(spi1_resources), + }; + +-static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB3, AT91_PIN_PC5, AT91_PIN_PC4, AT91_PIN_PC3 }; ++static const unsigned spi1_standard_cs[7] = { ++ AT91_PIN_PB21, // CS0 - external pin SPI_CS7 ++ AT91_PIN_PC5, // CS1 - GP output ++ AT91_PIN_PC4, // CS2 - temp sensor ++ AT91_PIN_PC6, // CS3 - unused/floating ++ AT91_PIN_PB12, // CS4 - GP input ++ AT91_PIN_PB13, // CS5 - external pin SPI_CS5 ++ AT91_PIN_PB16 // CS6 - external pin SPI_CS6 ++}; + + void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) + { +Index: linux-2.6.39.4/arch/arm/mach-at91/board-sam9g20ek.c +=================================================================== +--- linux-2.6.39.4.orig/arch/arm/mach-at91/board-sam9g20ek.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/arch/arm/mach-at91/board-sam9g20ek.c 2012-09-10 12:37:02.306005503 -0500 +@@ -30,6 +30,12 @@ + #include + #include + #include ++#include ++#include ++#include ++#include ++#include ++#include + + #include + #include +@@ -59,9 +65,14 @@ + return machine_is_at91sam9g20ek_2mmc() || (system_rev & HAVE_2MMC); + } + ++#define WL12XX_ENABLE_PIN AT91_PIN_PB7 ++ ++static int i2c_present; + + static void __init ek_map_io(void) + { ++ int tmp; ++ + /* Initialize processor: 18.432 MHz crystal */ + at91sam9260_initialize(18432000); + +@@ -76,12 +87,55 @@ + /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */ + at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS); + ++ /* ++ * Reset any initiated i2c data transfers? ++ */ ++ at91_set_gpio_input(AT91_PIN_PA23, 0); ++ at91_set_gpio_output(AT91_PIN_PA24, 0); ++ for (tmp = 0; tmp < 11; tmp++) { ++ at91_set_gpio_value(AT91_PIN_PA24, 0); ++ udelay(20); ++ at91_set_gpio_value(AT91_PIN_PA24, 1); ++ udelay(20); ++ } ++ at91_set_gpio_input(AT91_PIN_PA24, 0); ++ ++ /* ++ * PA24 and PA23 are used as ID pins on MTCBA/MTCDP-0.0 and I2C pins on MTCDP-1.0. ++ * ++ * MTCBA Rev. B: 0x01, C: 0x02, D: 0x03 ++ * MTCDP Rev. A reads as 0x00 with TWCK and TWD pulled high ++ * ++ */ ++ tmp = !at91_get_gpio_value(AT91_PIN_PA24) << 1 | !at91_get_gpio_value(AT91_PIN_PA23); ++ ++ i2c_present = !tmp; ++ ++ /* ++ * The GPS receiver is either at US2 on MTCBA/MTCDP-0.0 and US3 on MTCDP-1.0. ++ */ ++ if (i2c_present) { ++ at91_register_uart(AT91SAM9260_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS); ++ printk(KERN_INFO "sam9g20: i2c available\n"); ++ } else { ++ at91_register_uart(AT91SAM9260_ID_US2, 3, 0); ++ printk(KERN_INFO "sam9g20: i2c not available\n"); ++ } ++ + /* set serial console to ttyS0 (ie, DBGU) */ + at91_set_serial_console(0); + } + + static void __init ek_init_irq(void) + { ++ /* ++ * Ensure RTT interrupts are disabled ++ */ ++ u32 mr; ++ mr = __raw_readl(AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); ++ __raw_writel(mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN), ++ AT91_VA_BASE_SYS + AT91_RTT + AT91_RTT_MR); ++ + at91sam9260_init_interrupts(NULL); + } + +@@ -97,10 +151,37 @@ + * USB Device port + */ + static struct at91_udc_data __initdata ek_udc_data = { +- .vbus_pin = AT91_PIN_PC5, +- .pullup_pin = 0, /* pull-up driven by UDC */ ++ .vbus_pin = AT91_PIN_PC12, ++ .pullup_pin = 0, /* pull-up driven by UDC */ ++}; ++ ++ ++#define MTS_EXT_AT25_TEST 0 ++#if MTS_EXT_AT25_TEST ++static struct spi_eeprom at25040b = { ++ .byte_len = SZ_4K / 8, ++ .name = "at25040b", ++ .page_size = 8, ++ .flags = EE_ADDR1, ++}; ++#endif ++ ++#define MTS_EXT_STT25_TEST 0 ++#if MTS_EXT_STT25_TEST ++static struct mtd_partition m25_partitions[] = { ++ { ++ .name = "flash", ++ .offset = 0x00000000, ++ .size = MTDPART_SIZ_FULL, ++ }, + }; + ++static struct flash_platform_data m25_spi_flash_data = { ++ .type = "sst25vf080b", ++ .nr_parts = ARRAY_SIZE(m25_partitions), ++ .parts = m25_partitions, ++}; ++#endif + + /* + * SPI devices. +@@ -122,6 +203,54 @@ + }, + #endif + #endif ++ { ++ .modalias = "mts-io-sout", ++ .chip_select = 0, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-board-temp", ++ .chip_select = 2, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-dout", ++ .chip_select = 1, ++ .bus_num = 1, ++ }, ++ { ++ .modalias = "mts-io-din", ++ .chip_select = 4, ++ .bus_num = 1, ++ }, ++#if MTS_EXT_AT25_TEST ++ { ++ .modalias = "at25", ++ .platform_data = &at25040b, ++ .max_speed_hz = 20 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 5, ++ .mode = SPI_MODE_0, ++ }, ++ { ++ .modalias = "at25", ++ .platform_data = &at25040b, ++ .max_speed_hz = 20 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 6, ++ .mode = SPI_MODE_0, ++ }, ++#endif ++#if MTS_EXT_STT25_TEST ++ { ++ .modalias = "m25p80", ++ .platform_data = &m25_spi_flash_data, ++ .irq = NO_IRQ, ++ .max_speed_hz = 33 * 1000 * 1000, ++ .bus_num = 1, ++ .chip_select = 5, ++ }, ++#endif + }; + + +@@ -130,7 +259,7 @@ + */ + static struct at91_eth_data __initdata ek_macb_data = { + .phy_irq_pin = AT91_PIN_PA7, +- .is_rmii = 1, ++ .is_rmii = 0, + }; + + static void __init ek_add_device_macb(void) +@@ -146,18 +275,48 @@ + */ + static struct mtd_partition __initdata ek_nand_partition[] = { + { +- .name = "Bootstrap", +- .offset = 0, +- .size = 4 * SZ_1M, ++ .name = "MTNCG-NANDFlash", ++ .offset = 0, ++ .size = 256*1024*1024, ++ }, ++ { ++ .name = "AT91Bootstrap", ++ .offset = 0, ++ .size = 128*1024, ++ }, ++ { ++ .name = "UBoot", ++ .offset = 128*1024, ++ .size = 256*1024, ++ }, ++ { ++ .name = "UBoot Config", ++ .offset = 384*1024, ++ .size = 128*1024, ++ }, ++ { ++ .name = "UBoot Redundant Config", ++ .offset = 512*1024, ++ .size = 128*1024, ++ }, ++ { ++ .name = "uImage", ++ .offset = 640*1024, ++ .size = 59*128*1024, ++ }, ++ { ++ .name = "Config", ++ .offset = 64*128*1024, ++ .size = 64*128*1024, + }, + { +- .name = "Partition 1", +- .offset = MTDPART_OFS_NXTBLK, +- .size = 60 * SZ_1M, ++ .name = "Oem Config", ++ .offset = 128*128*1024, ++ .size = 64*128*1024, + }, + { +- .name = "Partition 2", +- .offset = MTDPART_OFS_NXTBLK, ++ .name = "Rootfs", ++ .offset = 192*128*1024, + .size = MTDPART_SIZ_FULL, + }, + }; +@@ -228,10 +387,11 @@ + + }; + #else ++/* MT100ECOG-PCIE-DK: SDIO for WLAN */ + static struct at91_mmc_data __initdata ek_mmc_data = { + .slot_b = 1, /* Only one slot so use slot B */ + .wire4 = 1, +- .det_pin = AT91_PIN_PC9, ++ .det_pin = AT91_PIN_PB20, + }; + #endif + +@@ -252,15 +412,10 @@ + * LEDs + */ + static struct gpio_led ek_leds[] = { +- { /* "bottom" led, green, userled1 to be defined */ +- .name = "ds5", +- .gpio = AT91_PIN_PA6, ++ { /* "status" led, green */ ++ .name = "status", ++ .gpio = AT91_PIN_PA30, + .active_low = 1, +- .default_trigger = "none", +- }, +- { /* "power" led, yellow */ +- .name = "ds1", +- .gpio = AT91_PIN_PA9, + .default_trigger = "heartbeat", + } + }; +@@ -363,16 +518,60 @@ + static void __init ek_add_regulators(void) {} + #endif + ++uint8_t mts_id_eeprom[512]; ++ ++EXPORT_SYMBOL(mts_id_eeprom); ++ ++static void mts_id_eeprom_load(struct memory_accessor *macc, void *context) ++{ ++ int tmp; ++ ++ memset(mts_id_eeprom, 0, sizeof(mts_id_eeprom)); ++ ++ tmp = macc->read(macc, mts_id_eeprom, 0, sizeof(mts_id_eeprom)); ++ if (tmp != sizeof(mts_id_eeprom)) { ++ printk(KERN_ERR "sam9g20: id eeprom read failed: %d\n", tmp); ++ } else { ++ printk(KERN_INFO "sam9g20: read %d bytes from id eeprom\n", tmp); ++ } ++} ++ ++static struct at24_platform_data at24c04_data = { ++ .byte_len = SZ_4K / 8, ++ .page_size = 16, ++ .setup = mts_id_eeprom_load, ++}; ++ + + static struct i2c_board_info __initdata ek_i2c_devices[] = { +- { +- I2C_BOARD_INFO("24c512", 0x50) +- }, +- { +- I2C_BOARD_INFO("wm8731", 0x1b) +- }, ++ { ++ I2C_BOARD_INFO("24c04", 0x56), ++ .platform_data = &at24c04_data, ++ }, + }; + ++/* MT100EOCG-PCIE-DK: WL12XX support */ ++static void wl12xx_enable(int enable) ++{ ++ if (enable) { ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); ++ msleep(10); ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 1, 0); ++ msleep(100); ++ printk(KERN_INFO "WLAN Enabled"); ++ } ++ else { ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); ++ msleep(10); ++ printk(KERN_INFO "WLAN Disabled"); ++ } ++}; ++ ++static struct wl12xx_platform_data at91_wl12xx_wlan_data __initdata = { ++ .irq = AT91_PIN_PB19, ++ .board_ref_clock = WL12XX_REFCLOCK_38, ++ .set_power = wl12xx_enable, ++}; + + static void __init ek_board_init(void) + { +@@ -401,7 +600,22 @@ + /* PCK0 provides MCLK to the WM8731 */ + at91_set_B_periph(AT91_PIN_PC1, 0); + /* SSC (for WM8731) */ +- at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); ++ /* at91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX); */ ++ ++ /* MT100ECOG-PCIE-DK ++ * configure the WLAN_IRQ for input ++ */ ++ at91_set_gpio_input(at91_wl12xx_wlan_data.irq, 0); ++ at91_set_deglitch(at91_wl12xx_wlan_data.irq, 1); ++ ++ if (wl12xx_set_platform_data(&at91_wl12xx_wlan_data)) ++ pr_err("error setting wl12xx data\n"); ++ ++ /* configure WLAN_EN as output and enable chip */ ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); ++ mdelay(10); ++ at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 1, 0); ++ mdelay(100); + } + + MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") diff --git a/multitech/recipes/linux/linux_2.6.39.4.bb b/multitech/recipes/linux/linux_2.6.39.4.bb new file mode 100644 index 0000000..393be38 --- /dev/null +++ b/multitech/recipes/linux/linux_2.6.39.4.bb @@ -0,0 +1,27 @@ +require recipes/linux/linux.inc + +PR = "r0" + +SRC_URI = " \ + ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ + " + +SRC_URI_append_mt100eocg-pcie-dk = "file://defconfig \ + file://linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch \ + file://linux-2.6.35.14-at91-gpio-pullup.patch \ + file://linux-2.6.32.3-atmel_spi.patch \ + file://linux-2.6.32.3-at25.patch \ + file://linux-2.6.35.14-option-zte.patch \ + file://linux-2.6.38-sierra-1.7.40.patch \ + file://linux-2.6.32.3-option-telit.patch \ + file://linux-2.6.39.4-mmc-core-maxclock.patch \ + " + +SRC_URI[kernel.md5sum] = "a17c748c2070168f1e784e9605ca043d" +SRC_URI[kernel.sha256sum] = "d26e44eedbb4bf63f84754bd21640c5d4fee9010320781a5b66c7d2106941183" + +# add missing crypto headers +sysroot_stage_all_append() { + kerneldir=${SYSROOT_DESTDIR}${STAGING_KERNEL_DIR} + cp -fR include/crypto* $kerneldir/include/ +} -- cgit v1.2.3 From 94a61fe12c3ff227a90b2bbc5f1151ba560b5649 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:09:41 -0500 Subject: ti-wifi-utils: update git rev --- multitech/recipes/ti/ti-wifi-utils_git.bbappend | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 multitech/recipes/ti/ti-wifi-utils_git.bbappend (limited to 'multitech') diff --git a/multitech/recipes/ti/ti-wifi-utils_git.bbappend b/multitech/recipes/ti/ti-wifi-utils_git.bbappend new file mode 100644 index 0000000..790257a --- /dev/null +++ b/multitech/recipes/ti/ti-wifi-utils_git.bbappend @@ -0,0 +1,3 @@ +PV = "0.2" +SRCREV = "05dc3b63f0a710c83c89755ffdd9e9c5f8aab5c4" +SRC_URI = "git://github.com/TI-OpenLink/ti-utils.git;protocol=git" -- cgit v1.2.3 From 6a23035bf5cb2badc1d422119e15a2469af3dc98 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:15:07 -0500 Subject: base-files: add mt100eocg-pcie-dk machine --- .../base-files/base-files/mt100eocg-pcie-dk/fstab | 9 ++++++ .../base-files/mt100eocg-pcie-dk/profile | 34 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/fstab create mode 100644 multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/profile (limited to 'multitech') diff --git a/multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/fstab b/multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/fstab new file mode 100644 index 0000000..da00b50 --- /dev/null +++ b/multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/fstab @@ -0,0 +1,9 @@ +rootfs / auto defaults 1 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts mode=0620,gid=5 0 0 +usbfs /proc/bus/usb usbfs defaults 0 0 +tmpfs /var/volatile tmpfs defaults 0 0 +tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /media/ram tmpfs defaults 0 0 + +/dev/mtdblock6 /var/config jffs2 defaults 0 0 diff --git a/multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/profile b/multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/profile new file mode 100644 index 0000000..0879251 --- /dev/null +++ b/multitech/recipes/base-files/base-files/mt100eocg-pcie-dk/profile @@ -0,0 +1,34 @@ +# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) +# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). + +PATH="/usr/local/bin:/usr/bin:/bin" +EDITOR="/bin/vi" # needed for packages like cron +test -z "$TERM" && TERM="vt100" # Basic terminal capab. For screen etc. + +if [ ! -e /etc/localtime ]; then + TZ="UTC" # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html + # for an explanation of how to set this to your local timezone. + export TZ +fi + +if [ "`id -u`" -eq 0 ]; then + PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin +fi +if [ "$PS1" ]; then +# works for bash and ash (no other shells known to be in use here) + PS1='\$ ' +fi + +if [ -d /etc/profile.d ]; then + for i in /etc/profile.d/*.sh; do + if [ -r $i ]; then + . $i + fi + done + unset i +fi + +export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM + +umask 022 + -- cgit v1.2.3 From 3f29f1035843a02be6eb716a21bd37f630ac0673 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 10 Sep 2012 14:59:28 -0500 Subject: linux-2.6.39.4: update mt100eocg patch --- .../linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch index 94f9014..36da1a2 100644 --- a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch @@ -363,12 +363,12 @@ Index: linux-2.6.39.4/arch/arm/mach-at91/board-sam9g20ek.c + msleep(10); + at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 1, 0); + msleep(100); -+ printk(KERN_INFO "WLAN Enabled"); ++ printk(KERN_INFO "WLAN Enabled\n"); + } + else { + at91_set_gpio_output_with_pullup(WL12XX_ENABLE_PIN, 0, 0); + msleep(10); -+ printk(KERN_INFO "WLAN Disabled"); ++ printk(KERN_INFO "WLAN Disabled\n"); + } +}; + -- cgit v1.2.3 From 43ffbfe292405cb6195cddcc430d4f4a41b4dd7c Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 12 Sep 2012 09:50:57 -0500 Subject: add compat-wireless with TI patches for wl12xx (R4SP2) --- .../compat-wireless/compat-wireless-stable.inc | 22 ++++++++++ .../compat-wireless/files/wl12xx_sdio.patch | 51 ++++++++++++++++++++++ .../ti-compat-wireless-wl12xx_R4SP2.bb | 25 +++++++++++ 3 files changed, 98 insertions(+) create mode 100644 multitech/recipes/compat-wireless/compat-wireless-stable.inc create mode 100644 multitech/recipes/compat-wireless/files/wl12xx_sdio.patch create mode 100644 multitech/recipes/compat-wireless/ti-compat-wireless-wl12xx_R4SP2.bb (limited to 'multitech') diff --git a/multitech/recipes/compat-wireless/compat-wireless-stable.inc b/multitech/recipes/compat-wireless/compat-wireless-stable.inc new file mode 100644 index 0000000..f7e78d3 --- /dev/null +++ b/multitech/recipes/compat-wireless/compat-wireless-stable.inc @@ -0,0 +1,22 @@ +DESCRIPTION = "Latest wireless drivers" +HOMEPAGE = "http://wireless.kernel.org/en/users/Download" +SECTION = "kernel/modules" +LICENSE = "GPL" +RDEPENDS = "wireless-tools" +PR = "r0" + + +S = "${WORKDIR}/compat-wireless-${COMPAT_WIRELESS_VERSION}" + +inherit module + +EXTRA_OEMAKE = "KLIB_BUILD=${STAGING_KERNEL_DIR} KLIB=${D}" + +do_configure_append() { + sed -i "s#@./scripts/update-initramfs## " Makefile +} + +do_install() { + oe_runmake DEPMOD=echo DESTDIR="${D}" INSTALL_MOD_PATH="${D}" LDFLAGS="" install-modules +} + diff --git a/multitech/recipes/compat-wireless/files/wl12xx_sdio.patch b/multitech/recipes/compat-wireless/files/wl12xx_sdio.patch new file mode 100644 index 0000000..9db2a03 --- /dev/null +++ b/multitech/recipes/compat-wireless/files/wl12xx_sdio.patch @@ -0,0 +1,51 @@ +--- a/drivers/net/wireless/wl12xx/sdio.c 2011-12-20 06:20:19.000000000 -0600 ++++ b/drivers/net/wireless/wl12xx/sdio.c 2012-06-20 12:51:18.000000000 -0500 +@@ -169,6 +169,10 @@ + struct sdio_func *func = wl_to_func(wl); + int ret; + ++ // MTPCIE: ++ if (wl->set_power) ++ wl->set_power(1); ++ + /* If enabled, tell runtime PM not to power off the card */ + if (pm_runtime_enabled(&func->dev)) { + ret = pm_runtime_get_sync(&func->dev); +@@ -193,6 +197,10 @@ + struct sdio_func *func = wl_to_func(wl); + int ret; + ++ // MTPCIE: ++ if (wl->set_power) ++ wl->set_power(0); ++ + sdio_disable_func(func); + sdio_release_host(func); + +@@ -265,14 +273,18 @@ + wl->irq = wlan_data->irq; + if (wl->ref_clock < 0) + wl->ref_clock = wlan_data->board_ref_clock; +- if (wl->tcxo_clock < 0) +- wl->tcxo_clock = wlan_data->board_tcxo_clock; +- wl->platform_quirks = wlan_data->platform_quirks; +- +- if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) +- irqflags = IRQF_TRIGGER_RISING; +- else +- irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; ++ // MTPCIE: ++ if (wlan_data->set_power) ++ wl->set_power = wlan_data->set_power; ++ ++ //if (wl->tcxo_clock < 0) ++ // wl->tcxo_clock = wlan_data->board_tcxo_clock; ++ //wl->platform_quirks = wlan_data->platform_quirks; ++ ++ //if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) ++ irqflags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING; ++ //else ++ // irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; + + ret = request_threaded_irq(wl->irq, wl1271_hardirq, wl1271_irq, + irqflags, diff --git a/multitech/recipes/compat-wireless/ti-compat-wireless-wl12xx_R4SP2.bb b/multitech/recipes/compat-wireless/ti-compat-wireless-wl12xx_R4SP2.bb new file mode 100644 index 0000000..50906f4 --- /dev/null +++ b/multitech/recipes/compat-wireless/ti-compat-wireless-wl12xx_R4SP2.bb @@ -0,0 +1,25 @@ +include compat-wireless-stable.inc + +SRC_URI = "https://gforge.ti.com/gf/download/frsrelease/768/5331/ti-compat-wireless-wl12xx-r4-12-12-20.tar.gz \ + http://processors.wiki.ti.com/images/2/23/R4_SP2_Patches.zip;name=r4sp2 \ + file://${WORKDIR}/0004-added-driver-version.patch \ + file://${WORKDIR}/0005-wl12xx-don-t-allow-scans-in-AP-mode.patch \ + file://${WORKDIR}/0006-wl12xx-handle-idle-changes-per-interface.patch \ + file://${WORKDIR}/0007-wl12xx-prevent-double-idle-on-off-transitions.patch \ + file://${WORKDIR}/0008-wl12xx-remove-warning-message-during-IBSS-Tx.patch \ + file://${WORKDIR}/0012-mac80211-set-upasd-queues-and-max-sp-only-on-sta-addition.patch \ + file://${WORKDIR}/0013-wl12xx-Make-sure-HW-is-available-in-sched-scan-ops.patch \ + file://wl12xx_sdio.patch \ + " + +S = "${WORKDIR}/compat-wireless" + +SRC_URI[md5sum] = "89fa40e0ece490cf73920a71df1c3558" +SRC_URI[sha256sum] = "752b53b09e9ae168a4a7f32ad009bb2b8b245c152f65ace1edc51a1ef8bba59f" +SRC_URI[r4sp2.md5sum] = "2524ae356e5fe528da977dfe19f20b32" +SRC_URI[r4sp2.sha256sum] = "72936b852465ba98a72cdfa66bdb49aff66d1a42080514e000211aac078a4b24" + +do_configure() { + cd ${S} + ./scripts/driver-select wl12xx +} -- cgit v1.2.3 From 06fd3f18f1a66734ce9e7ec1ee5e862f45fe3225 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 12 Sep 2012 10:49:45 -0500 Subject: linux-2.6.39.4: mt100eocg-pcie-dk: add mci clock debug, force mmc clock to 13MHz by default --- .../linux-2.6.39.4-at91-mci-clock-debug.patch | 14 ++++++++++++++ .../linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch | 9 +++++---- multitech/recipes/linux/linux_2.6.39.4.bb | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch new file mode 100644 index 0000000..2554386 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch @@ -0,0 +1,14 @@ +Index: linux-2.6.39.4/drivers/mmc/host/at91_mci.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/mmc/host/at91_mci.c 2012-09-10 14:29:38.217293988 -0500 ++++ linux-2.6.39.4/drivers/mmc/host/at91_mci.c 2012-09-10 14:41:35.352414089 -0500 +@@ -724,7 +724,8 @@ + else + clkdiv = (at91_master_clock / ios->clock) / 2; + +- pr_debug("clkdiv = %d. mcck = %ld\n", clkdiv, ++ pr_info("MMC: requested clock: %ld\n", ios->clock); ++ pr_info("MMC: clkdiv = %d. mcck = %ld\n", clkdiv, + at91_master_clock / (2 * (clkdiv + 1))); + } + if (ios->bus_width == MMC_BUS_WIDTH_4 && host->board->wire4) { diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch index 9ffaa5a..9f8303a 100644 --- a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch @@ -1,18 +1,19 @@ Index: linux-2.6.39.4/drivers/mmc/core/core.c =================================================================== --- linux-2.6.39.4.orig/drivers/mmc/core/core.c 2011-08-03 14:43:28.000000000 -0500 -+++ linux-2.6.39.4/drivers/mmc/core/core.c 2012-06-15 15:37:50.263414987 -0500 -@@ -46,7 +46,9 @@ ++++ linux-2.6.39.4/drivers/mmc/core/core.c 2012-09-12 10:45:57.246686939 -0500 +@@ -46,7 +46,10 @@ * So we allow it it to be disabled. */ int use_spi_crc = 1; -+int max_clock = 0; ++/* MTPCIE: default max clock to 13MHz */ ++int max_clock = 13000000; module_param(use_spi_crc, bool, 0); +module_param(max_clock, int, 0); /* * We normally treat cards as removed during suspend if they are not -@@ -628,6 +630,12 @@ +@@ -628,6 +631,12 @@ if (ios->clock > 0) mmc_set_ungated(host); diff --git a/multitech/recipes/linux/linux_2.6.39.4.bb b/multitech/recipes/linux/linux_2.6.39.4.bb index 393be38..93f21ca 100644 --- a/multitech/recipes/linux/linux_2.6.39.4.bb +++ b/multitech/recipes/linux/linux_2.6.39.4.bb @@ -15,6 +15,7 @@ SRC_URI_append_mt100eocg-pcie-dk = "file://defconfig \ file://linux-2.6.38-sierra-1.7.40.patch \ file://linux-2.6.32.3-option-telit.patch \ file://linux-2.6.39.4-mmc-core-maxclock.patch \ + file://linux-2.6.39.4-at91-mci-clock-debug.patch \ " SRC_URI[kernel.md5sum] = "a17c748c2070168f1e784e9605ca043d" -- cgit v1.2.3 From 28bb649d01a21a8d6982d0d93499f93c3a5692c9 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 12 Sep 2012 15:23:46 -0500 Subject: add wl12xx-firmware --- .../wl12xx-firmware/wl12xx-firmware/LICENCE | 151 +++++++++++++++++++++ .../wl12xx-firmware/TIInit_7.6.15.bts | Bin 0 -> 11108 bytes .../wl12xx-firmware/wl1271-fw-2.bin | Bin 0 -> 273880 bytes .../wl12xx-firmware/wl1271-fw-ap.bin | Bin 0 -> 272784 bytes .../wl12xx-firmware/wl1271-fw-multirole-plt.bin | Bin 0 -> 267688 bytes .../wl12xx-firmware/wl1271-fw-multirole-roc.bin | Bin 0 -> 280460 bytes .../wl12xx-firmware/wl12xx-firmware/wl1271-nvs.bin | Bin 0 -> 912 bytes .../recipes/wl12xx-firmware/wl12xx-firmware_1.0.bb | 20 +++ 8 files changed, 171 insertions(+) create mode 100644 multitech/recipes/wl12xx-firmware/wl12xx-firmware/LICENCE create mode 100644 multitech/recipes/wl12xx-firmware/wl12xx-firmware/TIInit_7.6.15.bts create mode 100644 multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-2.bin create mode 100644 multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-ap.bin create mode 100755 multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-plt.bin create mode 100755 multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-roc.bin create mode 100644 multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-nvs.bin create mode 100644 multitech/recipes/wl12xx-firmware/wl12xx-firmware_1.0.bb (limited to 'multitech') diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/LICENCE b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/LICENCE new file mode 100644 index 0000000..085f6c7 --- /dev/null +++ b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/LICENCE @@ -0,0 +1,151 @@ +Texas Instruments Incorporated +Technology and Software Publicly Available +Software (Object Code) License Agreement + + +IMPORTANT - PLEASE READ THE FOLLOWING LICENSE AGREEMENT CAREFULLY. THIS IS + A LEGALLY BINDING AGREEMENT. DO NOT DOWNLOAD THE LICENSED MATERIALS + UNLESS: (1) YOU ARE AUTHORIZED TO ACCEPT AND AGREE TO THE TERMS OF THIS + LICENSE AGREEMENT AND (2) YOU INTEND TO ENTER INTO AND TO BE BOUND BY + THE TERMS OF THIS AGREEMENT. + +This Software License Agreement ("Agreement") is a legal agreement between you + (either an individual or entity) and Texas Instruments Incorporated + ("TI"). The "Licensed Materials" subject to this Agreement include, + in whole or in part, the software programs that accompany this Agreement + and any "on-line" or electronic documentation associated with these + programs. By installing, copying or otherwise using the Licensed + Materials you agree to abide by the terms of this Agreement. + If you choose not to accept or agree with these terms, do not download + or install the Licensed Materials. + + +1. Object Code License. TI hereby grants to you a limited, non-exclusive + license to reproduce and use the Licensed Materials provided to you in + object code format and to distribute an unlimited number of object or + executable copies of such Licensed Materials, provided that such object + or executable copies are used solely and exclusively on devices + manufactured by or for TI. + +2. Termination. This license is effective until terminated. Without prejudice + to any other rights, TI may terminate your right to use the Licensed + Materials under this Agreement if you fail to comply with the terms of + this Agreement. In such event, you shall destroy all copies of the + Licensed Materials, including all portions and derivatives thereof. + +3. Intellectual Property Rights. The Licensed Materials being provided to you + hereunder are being made publicly available by TI, even though they + contain copyrighted material of TI and its licensors, if applicable. + In no event may you alter, remove or destroy any copyright notice + included in the Licensed Materials. To the extent that any of the + Licensed Materials are provided in binary or object code only, you may + not unlock, decompile, reverse engineer, disassemble or otherwise + translate such binary or object code to human-perceivable form. The + source code of such reverse engineered code may contain TI trade secret + and other proprietary information. Further, nothing shall obligate TI + to provide you with source code for the Licensed Materials licensed to + you in binary or object code only under this Agreement. TI reserves all + rights not specifically granted under this Agreement. + +4. Warranties and Limitations. THE LICENSED MATERIALS ARE PROVIDED "AS IS". TI + MAKES NO WARRANTY OR REPRESENTATION, EXPRESS, IMPLIED OR STATUTORY, + INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTIBILITY, FITNESS FOR A + PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS OF + RESPONSES, RESULTS AND LACK OF NEGLIGENCE. TI DISCLAIMS ANY WARRANTY OF + TITLE, QUIET ENJOYMENT, QUIET POSESSION, AND NON-INFRINGEMENT OF ANY + THIRD PARTY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE LICENSED + MATERIALS OR USE OF THOSE MATERIALS. + +YOU ACKNOWLEDGE AND AGREE THAT THE LICENSED MATERIALS MAY NOT BE INTENDED FOR + PRODUCTION APPLICATIONS AND MAY CONTAIN IRREGULARITIES AND DEFECTS NOT + FOUND IN PRODUCTION SOFTWARE. FURTHERMORE, YOU ACKNOWLEDGE AND AGREE + THAT THE LICENSED MATERIALS HAVE NOT BEEN TESTED OR CERTIFIED BY ANY + GOVERNMENT AGENCY OR INDUSTRY REGULATORY ORGANIZATION OR ANY OTHER THIRD + PARTY ORGANIZATION. YOU AGREE THAT PRIOR TO USING, INCORPORATING OR + DISTRIBUTING THE LICENSED MATERIALS IN OR WITH ANY COMMERCIAL PRODUCT + THAT YOU WILL THOROUGHLY TEST THE PRODUCT AND THE FUNCTIONALITY OF THE + LICENSED MATERIALS IN OR WITH THAT PRODUCT AND BE SOLELY RESPONSIBLE FOR + ANY PROBLEMS OR FAILURES. + +IN NO EVENT SHALL TI, OR ANY APPLICABLE LICENSOR, BE LIABLE FOR ANY SPECIAL, + INDIRECT, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED + ON ANY THEORY OF LIABILITY, ARISING IN ANY WAY OUT OF THIS AGREEMENT, + OR YOUR USE OF THE LICENSED MATERIALS, WHETHER OR NOT TI HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. EXCLUDED DAMAGES INCLUDE, + BUT ARE NOT LIMITED TO, COST OF REMOVAL OR REINSTALLATION, OUTSIDE + COMPUTER TIME, LABOR COSTS, LOSS OR CORRUPTION OF DATA, LOSS OF + GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF USE OR + INTERRUPTION OF BUSINESS OR ANY OTHER ECONOMIC LOSS. IN NO EVENT WILL + TI'S AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF YOUR USE + OF THE LICENSED MATERIALS EXCEED FIVE HUNDRED U.S. DOLLARS (US$500). + +Because some jurisdictions do not allow the exclusion or limitation of + incidental or consequential damages or limitation on how long an implied + warranty lasts, the above limitations or exclusions may not apply to + you. + +5. Export Control. Thesoftware programs and any "on-line" documentation as well + as any updates or upgrades to such software programs or documentation + may be subject to the export or import regulations of certain countries. + You agree to comply with all such regulations and acknowledge that you + have the responsibility to obtain any licenses or other authorizations + that may be required to export, re-export or import the Licensed + Materials. + +6. Governing Law, Jurisdiction and Severability. This Agreement will be + governed by and interpreted in accordance with the laws of the State of + Texas, without reference to that state's conflict of laws principles. + This Agreement shall not be governed by the United Nations Convention on + Contracts for the International Sale of Goods, nor shall it be governed + by the Uniform Computer Information Transactions Act (UCITA). Any + dispute arising out of or related to this Agreement will be brought in, + and each party consents to the exclusive jurisdiction and venue in the + state and federal courts sitting in Dallas Country, Texas. Each party + waives all defenses of lack of personal jurisdiction and forum + non-conveniens and agrees that process may be served on either party in + a manner authorized by applicable law or court rule. If for any reason + a court of competent jurisdiction finds any provision of the Agreement + to be unenforceable, that provision will be enforced to the maximum + extent possible to effectuate the intent of the parties and the + remainder of the Agreement shall continue in full force and effect. + +7. PRC Provisions. If you are located in the People's Republic of China ("PRC") + or if the Licensed Materials will be sent to the PRC, the following + provisions shall apply and shall supersede any other provisions in this + Agreement concerning the same subject matter as the following + provisions: + + a. Registration Requirements. You shall be solely responsible for + performing all acts and obtaining all approvals that may be required in + connection with this Agreement by the government of the PRC, including + but not limited to registering pursuant to, and otherwise complying + with, the PRC Measures on the Administration of Software Products, + Management Regulations on Technology Import-Export, and Technology + Import and Export Contract Registration Management Rules. Upon receipt + of such approvals from the government authorities, you shall forward + evidence of all such approvals to TI for its records. In the event that + you fail to obtain any such approval or registration, you shall be + solely responsible for any and all losses, damages or costs resulting + therefrom, and shall indemnify TI for all such losses, damages or costs. + + b. Governing Language. This Agreement is written and executed in + the English language. If a translation of this Agreement is required + for any purpose, including but not limited to registration of the + Agreement pursuant to any governmental laws, regulations or rules, you + shall be solely responsible for creating such translation. Any + translation of this Agreement into a language other than English is + intended solely in order to comply with such laws or for reference + purposes, and the English language version shall be authoritative and + controlling. + +8. Entire Agreement. This is the entire Agreement between you and TI and + supersedes any prior agreement between the parties related to the + subject matter of this Agreement. No amendment or modification of this + Agreement will be effective unless in writing and signed by a duly + authorized representative of TI. You hereby warrant and represent that + you have obtained all authorizations and other applicable consents + required empowering you to enter into this Agreement. + +1 +TILAW-#236402v3 + diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/TIInit_7.6.15.bts b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/TIInit_7.6.15.bts new file mode 100644 index 0000000..7c6a051 Binary files /dev/null and b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/TIInit_7.6.15.bts differ diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-2.bin b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-2.bin new file mode 100644 index 0000000..a01324e Binary files /dev/null and b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-2.bin differ diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-ap.bin b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-ap.bin new file mode 100644 index 0000000..c145a71 Binary files /dev/null and b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-ap.bin differ diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-plt.bin b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-plt.bin new file mode 100755 index 0000000..784b275 Binary files /dev/null and b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-plt.bin differ diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-roc.bin b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-roc.bin new file mode 100755 index 0000000..3655919 Binary files /dev/null and b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-fw-multirole-roc.bin differ diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-nvs.bin b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-nvs.bin new file mode 100644 index 0000000..91978f9 Binary files /dev/null and b/multitech/recipes/wl12xx-firmware/wl12xx-firmware/wl1271-nvs.bin differ diff --git a/multitech/recipes/wl12xx-firmware/wl12xx-firmware_1.0.bb b/multitech/recipes/wl12xx-firmware/wl12xx-firmware_1.0.bb new file mode 100644 index 0000000..78e3d11 --- /dev/null +++ b/multitech/recipes/wl12xx-firmware/wl12xx-firmware_1.0.bb @@ -0,0 +1,20 @@ +DESCRIPTION = "TI wl1271 firmware" +HOMEPAGE = "http://processors.wiki.ti.com/index.php/ARM_Processor_Open_Source_Wireless_Connectivity" +PR="r2" + +SRC_URI = "file://TIInit_7.6.15.bts \ + file://wl1271-fw-2.bin \ + file://wl1271-fw-ap.bin \ + file://wl1271-fw-multirole-plt.bin \ + file://wl1271-fw-multirole-roc.bin \ + file://wl1271-nvs.bin \ + " + +do_install() { + install -d ${D}/lib/firmware + install -d ${D}/lib/firmware/ti-connectivity + install ${WORKDIR}/wl12*.bin ${D}/lib/firmware/ti-connectivity + install ${WORKDIR}/*.bts ${D}/lib/firmware/ +} + +FILES_${PN} = "/lib/firmware" -- cgit v1.2.3 From 53948616ce6637a4bfa99f82c080cdcf419ce8fb Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 12 Sep 2012 16:01:14 -0500 Subject: add corecdp-mtpcie-dk-image --- multitech/recipes/images/corecdp-mtpcie-dk-image.bb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 multitech/recipes/images/corecdp-mtpcie-dk-image.bb (limited to 'multitech') diff --git a/multitech/recipes/images/corecdp-mtpcie-dk-image.bb b/multitech/recipes/images/corecdp-mtpcie-dk-image.bb new file mode 100644 index 0000000..237176e --- /dev/null +++ b/multitech/recipes/images/corecdp-mtpcie-dk-image.bb @@ -0,0 +1,14 @@ +require corecdp-base-image.bb + +IMAGE_INSTALL += " \ +libnl \ +wpa-supplicant \ +iw wireless-tools \ +hostap-daemon hostap-utils \ +ti-compat-wireless-wl12xx wl12xx-firmware \ +bluez4 \ +iperf \ +ti-wifi-utils \ +" + +export IMAGE_BASENAME = "corecdp-mtpcie-dk-image" -- cgit v1.2.3 From 0a64447a2a2df6861925bc310119c4f2e086815b Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 12 Sep 2012 17:19:02 -0500 Subject: mts-io: add patch for mtpcie-dk support --- .../recipes/multitech/mts-io/mts-io-pcieh5.patch | 219 +++++++++++++++++++++ multitech/recipes/multitech/mts-io_0.5.1.bb | 2 + 2 files changed, 221 insertions(+) create mode 100644 multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch (limited to 'multitech') diff --git a/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch b/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch new file mode 100644 index 0000000..a49f649 --- /dev/null +++ b/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch @@ -0,0 +1,219 @@ +Index: io-module/mts_io.c +=================================================================== +--- io-module.orig/mts_io.c 2011-10-03 12:47:24.000000000 -0500 ++++ io-module/mts_io.c 2012-09-12 17:06:42.476070820 -0500 +@@ -317,17 +317,19 @@ + .output_value = 1, + .use_pullup = 0, + }, ++ // MTPCIE-H5: Wifi and BT enable pins ++ // (was TXD1 and DTR1) (PB17 and PB7 are tied together) + { +- .name = "TXD1", ++ .name = "WLAN_EN", +- .pin = AT91_PIN_PB17, ++ .pin = AT91_PIN_PB7, +- .direction = GPIO_DIR_INPUT, ++ .direction = GPIO_DIR_OUTPUT, + .output_value = 0, + .use_pullup = 0, + }, + { +- .name = "DTR1", ++ .name = "BT_EN", + .pin = AT91_PIN_PB18, +- .direction = GPIO_DIR_INPUT, ++ .direction = GPIO_DIR_OUTPUT, + .output_value = 0, + .use_pullup = 0, + }, +@@ -338,6 +340,8 @@ + .output_value = 1, + .use_pullup = 0, + }, ++ // PCIE-H5 GPIO11 used for WLAN_IRQ ++#if 0 + { + .name = "GPIO11", + .pin = AT91_PIN_PB19, +@@ -345,6 +349,7 @@ + .output_value = 1, + .use_pullup = 1, + }, ++#endif + { + .name = "GPIO12", + .pin = AT91_PIN_PB20, +@@ -400,6 +405,13 @@ + mts_product_id = MTCDP_E1_DK_1_0; + } + ++ // PCIE-H5 hard-coded to EOCG ++ gpio_pins = gpio_pins_mt100eocg_0_0; ++ mts_product_id = MT100EOCG_0_0; ++ DEVICE_CAPA_SET(id_eeprom.capa, CAPA_GPS); ++ DEVICE_CAPA_SET(id_eeprom.capa, CAPA_DIN); ++ DEVICE_CAPA_SET(id_eeprom.capa, CAPA_DOUT); ++ + log_info("sizeof: %lu", (unsigned long) sizeof(struct mts_id_eeprom_layout)); + log_info("vendor-id: %.32s", id_eeprom.vendor_id); + log_info("product-id: %.32s", id_eeprom.product_id); +@@ -1976,6 +1988,100 @@ + return count; + } + ++static ssize_t mts_attr_show_bt_enabled(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ int value; ++ struct gpio_pin *pin = gpio_pin_by_name("BT_EN"); ++ ++ if (!pin) { ++ return -ENODEV; ++ } ++ ++ mutex_lock(&mts_io_mutex); ++ ++ value = at91_get_gpio_value(pin->pin); ++ ++ mutex_unlock(&mts_io_mutex); ++ ++ if (value < 0) { ++ return value; ++ } ++ ++ return sprintf(buf, "%d\n", value); ++} ++ ++static ssize_t mts_attr_store_bt_enabled(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t count) ++{ ++ int value; ++ int err; ++ struct gpio_pin *pin = gpio_pin_by_name("BT_EN"); ++ ++ if (!pin) { ++ return -ENODEV; ++ } ++ ++ if (sscanf(buf, "%i", &value) != 1) { ++ return -EINVAL; ++ } ++ ++ mutex_lock(&mts_io_mutex); ++ ++ err = at91_set_gpio_value(pin->pin, value); ++ ++ mutex_unlock(&mts_io_mutex); ++ ++ return count; ++} ++ ++static ssize_t mts_attr_show_wlan_enabled(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ int value; ++ struct gpio_pin *pin = gpio_pin_by_name("WLAN_EN"); ++ ++ if (!pin) { ++ return -ENODEV; ++ } ++ ++ mutex_lock(&mts_io_mutex); ++ ++ value = at91_get_gpio_value(pin->pin); ++ ++ mutex_unlock(&mts_io_mutex); ++ ++ if (value < 0) { ++ return value; ++ } ++ ++ return sprintf(buf, "%d\n", value); ++} ++ ++static ssize_t mts_attr_store_wlan_enabled(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t count) ++{ ++ int value; ++ int err; ++ struct gpio_pin *pin = gpio_pin_by_name("WLAN_EN"); ++ ++ if (!pin) { ++ return -ENODEV; ++ } ++ ++ if (sscanf(buf, "%i", &value) != 1) { ++ return -EINVAL; ++ } ++ ++ mutex_lock(&mts_io_mutex); ++ ++ err = at91_set_gpio_value(pin->pin, value); ++ ++ mutex_unlock(&mts_io_mutex); ++ ++ return count; ++} ++ + + static struct device_attribute dev_attr_gpo1 = { + .attr = { +@@ -2137,6 +2243,24 @@ + .store = mts_attr_store_gpio12, + }; + ++static struct device_attribute dev_attr_bt_enabled = { ++ .attr = { ++ .name = "bt-enabled", ++ .mode = MTS_ATTR_MODE_RW, ++ }, ++ .show = mts_attr_show_bt_enabled, ++ .store = mts_attr_store_bt_enabled, ++}; ++ ++static struct device_attribute dev_attr_wlan_enabled = { ++ .attr = { ++ .name = "wlan-enabled", ++ .mode = MTS_ATTR_MODE_RW, ++ }, ++ .show = mts_attr_show_wlan_enabled, ++ .store = mts_attr_store_wlan_enabled, ++}; ++ + static struct device_attribute dev_attr_rsersrc = { + .attr = { + .name = "rsersrc", +@@ -2164,6 +2288,8 @@ + &dev_attr_eth0_enabled.attr, + &dev_attr_gpio11.attr, + &dev_attr_gpio12.attr, ++ &dev_attr_bt_enabled.attr, ++ &dev_attr_wlan_enabled.attr, + + &dev_attr_gpo1.attr, + &dev_attr_gpo2.attr, +@@ -2323,7 +2449,7 @@ + return tmp; + } + +- spi_dout_value = 0x00; ++ spi_dout_value = 0xFF; // 0x00; + spi_writen(spi, &spi_dout_value, 1); + + spi_dout_dev = spi; +@@ -2521,11 +2647,14 @@ + + if ( mts_product_id == MT100EOCG_0_0 ) { + //Set open drain for GPIO11 and GPIO12 using multi drive ++ // PCIE-H5 GPIO11 used for WLAN_IRQ ++#if 0 + pin = gpio_pin_by_name("GPIO11"); + if (pin) { + log_info("Set open drain for GPIO11"); + at91_set_multi_drive(pin->pin, true); + } ++#endif + pin = gpio_pin_by_name("GPIO12"); + if (pin) { + log_info("Set open drain for GPIO12"); diff --git a/multitech/recipes/multitech/mts-io_0.5.1.bb b/multitech/recipes/multitech/mts-io_0.5.1.bb index f903020..43ee4fe 100644 --- a/multitech/recipes/multitech/mts-io_0.5.1.bb +++ b/multitech/recipes/multitech/mts-io_0.5.1.bb @@ -1,3 +1,5 @@ require mts-io.inc PR = "${INC_PR}.0" + +SRC_URI_append_mt100eocg-pcie-dk = " file://mts-io-pcieh5.patch" -- cgit v1.2.3 From f0a29878133ea1d37aefdf003345ad7ff29640ed Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Thu, 13 Sep 2012 14:34:12 -0500 Subject: udev: add bluetooth rule for mt100eocg-pcie-dk --- .../udev/udev-165/mt100eocg-pcie-dk/corecdp.rules | 54 ++++++++++++++++++++++ multitech/recipes/udev/udev_165.bbappend | 2 +- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 multitech/recipes/udev/udev-165/mt100eocg-pcie-dk/corecdp.rules (limited to 'multitech') diff --git a/multitech/recipes/udev/udev-165/mt100eocg-pcie-dk/corecdp.rules b/multitech/recipes/udev/udev-165/mt100eocg-pcie-dk/corecdp.rules new file mode 100644 index 0000000..633947d --- /dev/null +++ b/multitech/recipes/udev/udev-165/mt100eocg-pcie-dk/corecdp.rules @@ -0,0 +1,54 @@ +ACTION=="remove", GOTO="corecdp_end" +SUBSYSTEM!="tty", GOTO="corecdp_end" +KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*|ttyS*", GOTO="corecdp_end" + +# use serial port by default, allow USB radios to overwrite link +KERNEL=="ttyS1", SYMLINK+="modem0", OPTIONS+="link_priority=-1" +KERNEL=="ttyS1", SYMLINK+="modem_at0", OPTIONS+="link_priority=-1" + +SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}" +ENV{ID_IFACE}=="", GOTO="corecdp_end" + +# All modem ports +# H5 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="00", SYMLINK+="modem0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="02", SYMLINK+="modem1" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="04", SYMLINK+="modem2" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="06", SYMLINK+="modem3" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="08", SYMLINK+="modem4" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="0a", SYMLINK+="modem5" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="0c", SYMLINK+="modem6" +# EV3 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="00", SYMLINK+="modem0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="01", SYMLINK+="modem1" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="02", SYMLINK+="modem2" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="03", SYMLINK+="modem3" +# H4 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="00", SYMLINK+="modem0" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="01", SYMLINK+="modem1" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="02", SYMLINK+="modem2" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="03", SYMLINK+="modem3" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="04", SYMLINK+="modem4" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="05", SYMLINK+="modem5" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="06", SYMLINK+="modem6" +# EV2 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", SYMLINK+="modem$env{ID_PORT}" + +# AT Command ports +# H5: ttyACM0, ttyACM3 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="00", SYMLINK+="modem_at0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="06", SYMLINK+="modem_at1" +# EV3: ttyUSB2, ttyUSB3 +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="02", SYMLINK+="modem_at0" +ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="03", SYMLINK+="modem_at1" +# H4: ttyUSB3, ttyUSB4, ttyUSB5 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="03", SYMLINK+="modem_at0" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="04", SYMLINK+="modem_at1" +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="05", SYMLINK+="modem_at2" +# EV2: ttyUSB0 +ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ENV{ID_PORT}=="0", SYMLINK+="modem_at0" + +# mtpcie-dk: bluetooth on exar chip (ACM1, iface 2) +ATTRS{idVendor}=="04e2", ATTRS{idProduct}=="1414", ENV{ID_IFACE}=="02", SYMLINK+="bt" + +LABEL="corecdp_end" diff --git a/multitech/recipes/udev/udev_165.bbappend b/multitech/recipes/udev/udev_165.bbappend index e87ff82..2028ba4 100644 --- a/multitech/recipes/udev/udev_165.bbappend +++ b/multitech/recipes/udev/udev_165.bbappend @@ -1,7 +1,7 @@ FILESEXTRA := "${THISDIR}" FILESPATHBASE =. "${FILESEXTRA}:" -PR .= ".corecdp2" +PR .= ".corecdp3" # add custom rules for persistent modem device names SRC_URI += "file://corecdp.rules" -- cgit v1.2.3 From 57e04322b91c111d691c45ed4112d0455626d461 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Thu, 13 Sep 2012 17:19:49 -0500 Subject: hostapd: add custom hostapd.conf to use nl80211 driver --- multitech/recipes/hostap/hostap-daemon-1.0.inc | 2 +- .../recipes/hostap/hostap-daemon-1.0/hostapd.conf | 1127 ++++++++++++++++++++ multitech/recipes/hostap/hostap-daemon_1.0.bb | 5 +- 3 files changed, 1131 insertions(+), 3 deletions(-) create mode 100644 multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf (limited to 'multitech') diff --git a/multitech/recipes/hostap/hostap-daemon-1.0.inc b/multitech/recipes/hostap/hostap-daemon-1.0.inc index 49f2650..b0b6a44 100644 --- a/multitech/recipes/hostap/hostap-daemon-1.0.inc +++ b/multitech/recipes/hostap/hostap-daemon-1.0.inc @@ -17,7 +17,7 @@ do_compile() { do_install() { install -d ${D}${sbindir} ${D}${sysconfdir}/init.d - install -m 0644 ${S}/hostapd.conf ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/hostapd.conf ${D}${sysconfdir} install -m 0755 ${S}/hostapd ${D}${sbindir} install -m 0755 ${S}/hostapd_cli ${D}${sbindir} install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd diff --git a/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf b/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf new file mode 100644 index 0000000..27d9e46 --- /dev/null +++ b/multitech/recipes/hostap/hostap-daemon-1.0/hostapd.conf @@ -0,0 +1,1127 @@ +##### hostapd configuration file ############################################## +# Empty lines and lines starting with # are ignored + +# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wlan0ap for +# management frames); ath0 for madwifi +interface=wlan0 + +# In case of madwifi, atheros, and nl80211 driver interfaces, an additional +# configuration parameter, bridge, may be used to notify hostapd if the +# interface is included in a bridge. This parameter is not used with Host AP +# driver. If the bridge parameter is not set, the drivers will automatically +# figure out the bridge interface (assuming sysfs is enabled and mounted to +# /sys) and this parameter may not be needed. +# +# For nl80211, this parameter can be used to request the AP interface to be +# added to the bridge automatically (brctl may refuse to do this before hostapd +# has been started to change the interface mode). If needed, the bridge +# interface is also created. +#bridge=br0 + +# Driver interface type (hostap/wired/madwifi/test/none/nl80211/bsd); +# default: hostap). nl80211 is used with all Linux mac80211 drivers. +# Use driver=none if building hostapd as a standalone RADIUS server that does +# not control any wireless/wired driver. +driver=nl80211 + +# hostapd event logger configuration +# +# Two output method: syslog and stdout (only usable if not forking to +# background). +# +# Module bitfield (ORed bitfield of modules that will be logged; -1 = all +# modules): +# bit 0 (1) = IEEE 802.11 +# bit 1 (2) = IEEE 802.1X +# bit 2 (4) = RADIUS +# bit 3 (8) = WPA +# bit 4 (16) = driver interface +# bit 5 (32) = IAPP +# bit 6 (64) = MLME +# +# Levels (minimum value for logged events): +# 0 = verbose debugging +# 1 = debugging +# 2 = informational messages +# 3 = notification +# 4 = warning +# +logger_syslog=-1 +logger_syslog_level=2 +logger_stdout=-1 +logger_stdout_level=2 + +# Dump file for state information (on SIGUSR1) +dump_file=/tmp/hostapd.dump + +# Interface for separate control program. If this is specified, hostapd +# will create this directory and a UNIX domain socket for listening to requests +# from external programs (CLI/GUI, etc.) for status information and +# configuration. The socket file will be named based on the interface name, so +# multiple hostapd processes/interfaces can be run at the same time if more +# than one interface is used. +# /var/run/hostapd is the recommended directory for sockets and by default, +# hostapd_cli will use it when trying to connect with hostapd. +ctrl_interface=/var/run/hostapd + +# Access control for the control interface can be configured by setting the +# directory to allow only members of a group to use sockets. This way, it is +# possible to run hostapd as root (since it needs to change network +# configuration and open raw sockets) and still allow GUI/CLI components to be +# run as non-root users. However, since the control interface can be used to +# change the network configuration, this access needs to be protected in many +# cases. By default, hostapd is configured to use gid 0 (root). If you +# want to allow non-root users to use the contron interface, add a new group +# and change this value to match with that group. Add users that should have +# control interface access to this group. +# +# This variable can be a group name or gid. +#ctrl_interface_group=wheel +ctrl_interface_group=0 + + +##### IEEE 802.11 related configuration ####################################### + +# SSID to be used in IEEE 802.11 management frames +ssid=test + +# Country code (ISO/IEC 3166-1). Used to set regulatory domain. +# Set as needed to indicate country in which device is operating. +# This can limit available channels and transmit power. +#country_code=US + +# Enable IEEE 802.11d. This advertises the country_code and the set of allowed +# channels and transmit power levels based on the regulatory limits. The +# country_code setting must be configured with the correct country for +# IEEE 802.11d functions. +# (default: 0 = disabled) +#ieee80211d=1 + +# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g, +# Default: IEEE 802.11b +hw_mode=g + +# Channel number (IEEE 802.11) +# (default: 0, i.e., not set) +# Please note that some drivers do not use this value from hostapd and the +# channel will need to be configured separately with iwconfig. +channel=1 + +# Beacon interval in kus (1.024 ms) (default: 100; range 15..65535) +beacon_int=100 + +# DTIM (delivery traffic information message) period (range 1..255): +# number of beacons between DTIMs (1 = every beacon includes DTIM element) +# (default: 2) +dtim_period=2 + +# Maximum number of stations allowed in station table. New stations will be +# rejected after the station table is full. IEEE 802.11 has a limit of 2007 +# different association IDs, so this number should not be larger than that. +# (default: 2007) +max_num_sta=255 + +# RTS/CTS threshold; 2347 = disabled (default); range 0..2347 +# If this field is not included in hostapd.conf, hostapd will not control +# RTS threshold and 'iwconfig wlan# rts ' can be used to set it. +rts_threshold=2347 + +# Fragmentation threshold; 2346 = disabled (default); range 256..2346 +# If this field is not included in hostapd.conf, hostapd will not control +# fragmentation threshold and 'iwconfig wlan# frag ' can be used to set +# it. +fragm_threshold=2346 + +# Rate configuration +# Default is to enable all rates supported by the hardware. This configuration +# item allows this list be filtered so that only the listed rates will be left +# in the list. If the list is empty, all rates are used. This list can have +# entries that are not in the list of rates the hardware supports (such entries +# are ignored). The entries in this list are in 100 kbps, i.e., 11 Mbps = 110. +# If this item is present, at least one rate have to be matching with the rates +# hardware supports. +# default: use the most common supported rate setting for the selected +# hw_mode (i.e., this line can be removed from configuration file in most +# cases) +#supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 + +# Basic rate set configuration +# List of rates (in 100 kbps) that are included in the basic rate set. +# If this item is not included, usually reasonable default set is used. +#basic_rates=10 20 +#basic_rates=10 20 55 110 +#basic_rates=60 120 240 + +# Short Preamble +# This parameter can be used to enable optional use of short preamble for +# frames sent at 2 Mbps, 5.5 Mbps, and 11 Mbps to improve network performance. +# This applies only to IEEE 802.11b-compatible networks and this should only be +# enabled if the local hardware supports use of short preamble. If any of the +# associated STAs do not support short preamble, use of short preamble will be +# disabled (and enabled when such STAs disassociate) dynamically. +# 0 = do not allow use of short preamble (default) +# 1 = allow use of short preamble +#preamble=1 + +# Station MAC address -based authentication +# Please note that this kind of access control requires a driver that uses +# hostapd to take care of management frame processing and as such, this can be +# used with driver=hostap or driver=nl80211, but not with driver=madwifi. +# 0 = accept unless in deny list +# 1 = deny unless in accept list +# 2 = use external RADIUS server (accept/deny lists are searched first) +macaddr_acl=0 + +# Accept/deny lists are read from separate files (containing list of +# MAC addresses, one per line). Use absolute path name to make sure that the +# files can be read on SIGHUP configuration reloads. +#accept_mac_file=/etc/hostapd.accept +#deny_mac_file=/etc/hostapd.deny + +# IEEE 802.11 specifies two authentication algorithms. hostapd can be +# configured to allow both of these or only one. Open system authentication +# should be used with IEEE 802.1X. +# Bit fields of allowed authentication algorithms: +# bit 0 = Open System Authentication +# bit 1 = Shared Key Authentication (requires WEP) +auth_algs=3 + +# Send empty SSID in beacons and ignore probe request frames that do not +# specify full SSID, i.e., require stations to know SSID. +# default: disabled (0) +# 1 = send empty (length=0) SSID in beacon and ignore probe request for +# broadcast SSID +# 2 = clear SSID (ASCII 0), but keep the original length (this may be required +# with some clients that do not support empty SSID) and ignore probe +# requests for broadcast SSID +ignore_broadcast_ssid=0 + +# TX queue parameters (EDCF / bursting) +# tx_queue__ +# queues: data0, data1, data2, data3, after_beacon, beacon +# (data0 is the highest priority queue) +# parameters: +# aifs: AIFS (default 2) +# cwmin: cwMin (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023) +# cwmax: cwMax (1, 3, 7, 15, 31, 63, 127, 255, 511, 1023); cwMax >= cwMin +# burst: maximum length (in milliseconds with precision of up to 0.1 ms) for +# bursting +# +# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e): +# These parameters are used by the access point when transmitting frames +# to the clients. +# +# Low priority / AC_BK = background +#tx_queue_data3_aifs=7 +#tx_queue_data3_cwmin=15 +#tx_queue_data3_cwmax=1023 +#tx_queue_data3_burst=0 +# Note: for IEEE 802.11b mode: cWmin=31 cWmax=1023 burst=0 +# +# Normal priority / AC_BE = best effort +#tx_queue_data2_aifs=3 +#tx_queue_data2_cwmin=15 +#tx_queue_data2_cwmax=63 +#tx_queue_data2_burst=0 +# Note: for IEEE 802.11b mode: cWmin=31 cWmax=127 burst=0 +# +# High priority / AC_VI = video +#tx_queue_data1_aifs=1 +#tx_queue_data1_cwmin=7 +#tx_queue_data1_cwmax=15 +#tx_queue_data1_burst=3.0 +# Note: for IEEE 802.11b mode: cWmin=15 cWmax=31 burst=6.0 +# +# Highest priority / AC_VO = voice +#tx_queue_data0_aifs=1 +#tx_queue_data0_cwmin=3 +#tx_queue_data0_cwmax=7 +#tx_queue_data0_burst=1.5 +# Note: for IEEE 802.11b mode: cWmin=7 cWmax=15 burst=3.3 + +# 802.1D Tag (= UP) to AC mappings +# WMM specifies following mapping of data frames to different ACs. This mapping +# can be configured using Linux QoS/tc and sch_pktpri.o module. +# 802.1D Tag 802.1D Designation Access Category WMM Designation +# 1 BK AC_BK Background +# 2 - AC_BK Background +# 0 BE AC_BE Best Effort +# 3 EE AC_BE Best Effort +# 4 CL AC_VI Video +# 5 VI AC_VI Video +# 6 VO AC_VO Voice +# 7 NC AC_VO Voice +# Data frames with no priority information: AC_BE +# Management frames: AC_VO +# PS-Poll frames: AC_BE + +# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e): +# for 802.11a or 802.11g networks +# These parameters are sent to WMM clients when they associate. +# The parameters will be used by WMM clients for frames transmitted to the +# access point. +# +# note - txop_limit is in units of 32microseconds +# note - acm is admission control mandatory flag. 0 = admission control not +# required, 1 = mandatory +# note - here cwMin and cmMax are in exponent form. the actual cw value used +# will be (2^n)-1 where n is the value given here +# +wmm_enabled=1 +# +# WMM-PS Unscheduled Automatic Power Save Delivery [U-APSD] +# Enable this flag if U-APSD supported outside hostapd (eg., Firmware/driver) +#uapsd_advertisement_enabled=1 +# +# Low priority / AC_BK = background +wmm_ac_bk_cwmin=4 +wmm_ac_bk_cwmax=10 +wmm_ac_bk_aifs=7 +wmm_ac_bk_txop_limit=0 +wmm_ac_bk_acm=0 +# Note: for IEEE 802.11b mode: cWmin=5 cWmax=10 +# +# Normal priority / AC_BE = best effort +wmm_ac_be_aifs=3 +wmm_ac_be_cwmin=4 +wmm_ac_be_cwmax=10 +wmm_ac_be_txop_limit=0 +wmm_ac_be_acm=0 +# Note: for IEEE 802.11b mode: cWmin=5 cWmax=7 +# +# High priority / AC_VI = video +wmm_ac_vi_aifs=2 +wmm_ac_vi_cwmin=3 +wmm_ac_vi_cwmax=4 +wmm_ac_vi_txop_limit=94 +wmm_ac_vi_acm=0 +# Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188 +# +# Highest priority / AC_VO = voice +wmm_ac_vo_aifs=2 +wmm_ac_vo_cwmin=2 +wmm_ac_vo_cwmax=3 +wmm_ac_vo_txop_limit=47 +wmm_ac_vo_acm=0 +# Note: for IEEE 802.11b mode: cWmin=3 cWmax=4 burst=102 + +# Static WEP key configuration +# +# The key number to use when transmitting. +# It must be between 0 and 3, and the corresponding key must be set. +# default: not set +#wep_default_key=0 +# The WEP keys to use. +# A key may be a quoted string or unquoted hexadecimal digits. +# The key length should be 5, 13, or 16 characters, or 10, 26, or 32 +# digits, depending on whether 40-bit (64-bit), 104-bit (128-bit), or +# 128-bit (152-bit) WEP is used. +# Only the default key must be supplied; the others are optional. +# default: not set +#wep_key0=123456789a +#wep_key1="vwxyz" +#wep_key2=0102030405060708090a0b0c0d +#wep_key3=".2.4.6.8.0.23" + +# Station inactivity limit +# +# If a station does not send anything in ap_max_inactivity seconds, an +# empty data frame is sent to it in order to verify whether it is +# still in range. If this frame is not ACKed, the station will be +# disassociated and then deauthenticated. This feature is used to +# clear station table of old entries when the STAs move out of the +# range. +# +# The station can associate again with the AP if it is still in range; +# this inactivity poll is just used as a nicer way of verifying +# inactivity; i.e., client will not report broken connection because +# disassociation frame is not sent immediately without first polling +# the STA with a data frame. +# default: 300 (i.e., 5 minutes) +#ap_max_inactivity=300 + +# Disassociate stations based on excessive transmission failures or other +# indications of connection loss. This depends on the driver capabilities and +# may not be available with all drivers. +#disassoc_low_ack=1 + +# Maximum allowed Listen Interval (how many Beacon periods STAs are allowed to +# remain asleep). Default: 65535 (no limit apart from field size) +#max_listen_interval=100 + +# WDS (4-address frame) mode with per-station virtual interfaces +# (only supported with driver=nl80211) +# This mode allows associated stations to use 4-address frames to allow layer 2 +# bridging to be used. +#wds_sta=1 + +# If bridge parameter is set, the WDS STA interface will be added to the same +# bridge by default. This can be overridden with the wds_bridge parameter to +# use a separate bridge. +#wds_bridge=wds-br0 + +# Client isolation can be used to prevent low-level bridging of frames between +# associated stations in the BSS. By default, this bridging is allowed. +#ap_isolate=1 + +##### IEEE 802.11n related configuration ###################################### + +# ieee80211n: Whether IEEE 802.11n (HT) is enabled +# 0 = disabled (default) +# 1 = enabled +# Note: You will also need to enable WMM for full HT functionality. +#ieee80211n=1 + +# ht_capab: HT capabilities (list of flags) +# LDPC coding capability: [LDPC] = supported +# Supported channel width set: [HT40-] = both 20 MHz and 40 MHz with secondary +# channel below the primary channel; [HT40+] = both 20 MHz and 40 MHz +# with secondary channel below the primary channel +# (20 MHz only if neither is set) +# Note: There are limits on which channels can be used with HT40- and +# HT40+. Following table shows the channels that may be available for +# HT40- and HT40+ use per IEEE 802.11n Annex J: +# freq HT40- HT40+ +# 2.4 GHz 5-13 1-7 (1-9 in Europe/Japan) +# 5 GHz 40,48,56,64 36,44,52,60 +# (depending on the location, not all of these channels may be available +# for use) +# Please note that 40 MHz channels may switch their primary and secondary +# channels if needed or creation of 40 MHz channel maybe rejected based +# on overlapping BSSes. These changes are done automatically when hostapd +# is setting up the 40 MHz channel. +# Spatial Multiplexing (SM) Power Save: [SMPS-STATIC] or [SMPS-DYNAMIC] +# (SMPS disabled if neither is set) +# HT-greenfield: [GF] (disabled if not set) +# Short GI for 20 MHz: [SHORT-GI-20] (disabled if not set) +# Short GI for 40 MHz: [SHORT-GI-40] (disabled if not set) +# Tx STBC: [TX-STBC] (disabled if not set) +# Rx STBC: [RX-STBC1] (one spatial stream), [RX-STBC12] (one or two spatial +# streams), or [RX-STBC123] (one, two, or three spatial streams); Rx STBC +# disabled if none of these set +# HT-delayed Block Ack: [DELAYED-BA] (disabled if not set) +# Maximum A-MSDU length: [MAX-AMSDU-7935] for 7935 octets (3839 octets if not +# set) +# DSSS/CCK Mode in 40 MHz: [DSSS_CCK-40] = allowed (not allowed if not set) +# PSMP support: [PSMP] (disabled if not set) +# L-SIG TXOP protection support: [LSIG-TXOP-PROT] (disabled if not set) +#ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40] + +# Require stations to support HT PHY (reject association if they do not) +#require_ht=1 + +##### IEEE 802.1X-2004 related configuration ################################## + +# Require IEEE 802.1X authorization +#ieee8021x=1 + +# IEEE 802.1X/EAPOL version +# hostapd is implemented based on IEEE Std 802.1X-2004 which defines EAPOL +# version 2. However, there are many client implementations that do not handle +# the new version number correctly (they seem to drop the frames completely). +# In order to make hostapd interoperate with these clients, the version number +# can be set to the older version (1) with this configuration value. +#eapol_version=2 + +# Optional displayable message sent with EAP Request-Identity. The first \0 +# in this string will be converted to ASCII-0 (nul). This can be used to +# separate network info (comma separated list of attribute=value pairs); see, +# e.g., RFC 4284. +#eap_message=hello +#eap_message=hello\0networkid=netw,nasid=foo,portid=0,NAIRealms=example.com + +# WEP rekeying (disabled if key lengths are not set or are set to 0) +# Key lengths for default/broadcast and individual/unicast keys: +# 5 = 40-bit WEP (also known as 64-bit WEP with 40 secret bits) +# 13 = 104-bit WEP (also known as 128-bit WEP with 104 secret bits) +#wep_key_len_broadcast=5 +#wep_key_len_unicast=5 +# Rekeying period in seconds. 0 = do not rekey (i.e., set keys only once) +#wep_rekey_period=300 + +# EAPOL-Key index workaround (set bit7) for WinXP Supplicant (needed only if +# only broadcast keys are used) +eapol_key_index_workaround=0 + +# EAP reauthentication period in seconds (default: 3600 seconds; 0 = disable +# reauthentication). +#eap_reauth_period=3600 + +# Use PAE group address (01:80:c2:00:00:03) instead of individual target +# address when sending EAPOL frames with driver=wired. This is the most common +# mechanism used in wired authentication, but it also requires that the port +# is only used by one station. +#use_pae_group_addr=1 + +##### Integrated EAP server ################################################### + +# Optionally, hostapd can be configured to use an integrated EAP server +# to process EAP authentication locally without need for an external RADIUS +# server. This functionality can be used both as a local authentication server +# for IEEE 802.1X/EAPOL and as a RADIUS server for other devices. + +# Use integrated EAP server instead of external RADIUS authentication +# server. This is also needed if hostapd is configured to act as a RADIUS +# authentication server. +eap_server=0 + +# Path for EAP server user database +#eap_user_file=/etc/hostapd.eap_user + +# CA certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS +#ca_cert=/etc/hostapd.ca.pem + +# Server certificate (PEM or DER file) for EAP-TLS/PEAP/TTLS +#server_cert=/etc/hostapd.server.pem + +# Private key matching with the server certificate for EAP-TLS/PEAP/TTLS +# This may point to the same file as server_cert if both certificate and key +# are included in a single file. PKCS#12 (PFX) file (.p12/.pfx) can also be +# used by commenting out server_cert and specifying the PFX file as the +# private_key. +#private_key=/etc/hostapd.server.prv + +# Passphrase for private key +#private_key_passwd=secret passphrase + +# Enable CRL verification. +# Note: hostapd does not yet support CRL downloading based on CDP. Thus, a +# valid CRL signed by the CA is required to be included in the ca_cert file. +# This can be done by using PEM format for CA certificate and CRL and +# concatenating these into one file. Whenever CRL changes, hostapd needs to be +# restarted to take the new CRL into use. +# 0 = do not verify CRLs (default) +# 1 = check the CRL of the user certificate +# 2 = check all CRLs in the certificate path +#check_crl=1 + +# dh_file: File path to DH/DSA parameters file (in PEM format) +# This is an optional configuration file for setting parameters for an +# ephemeral DH key exchange. In most cases, the default RSA authentication does +# not use this configuration. However, it is possible setup RSA to use +# ephemeral DH key exchange. In addition, ciphers with DSA keys always use +# ephemeral DH keys. This can be used to achieve forward secrecy. If the file +# is in DSA parameters format, it will be automatically converted into DH +# params. This parameter is required if anonymous EAP-FAST is used. +# You can generate DH parameters file with OpenSSL, e.g., +# "openssl dhparam -out /etc/hostapd.dh.pem 1024" +#dh_file=/etc/hostapd.dh.pem + +# Fragment size for EAP methods +#fragment_size=1400 + +# Configuration data for EAP-SIM database/authentication gateway interface. +# This is a text string in implementation specific format. The example +# implementation in eap_sim_db.c uses this as the UNIX domain socket name for +# the HLR/AuC gateway (e.g., hlr_auc_gw). In this case, the path uses "unix:" +# prefix. +#eap_sim_db=unix:/tmp/hlr_auc_gw.sock + +# Encryption key for EAP-FAST PAC-Opaque values. This key must be a secret, +# random value. It is configured as a 16-octet value in hex format. It can be +# generated, e.g., with the following command: +# od -tx1 -v -N16 /dev/random | colrm 1 8 | tr -d ' ' +#pac_opaque_encr_key=000102030405060708090a0b0c0d0e0f + +# EAP-FAST authority identity (A-ID) +# A-ID indicates the identity of the authority that issues PACs. The A-ID +# should be unique across all issuing servers. In theory, this is a variable +# length field, but due to some existing implementations requiring A-ID to be +# 16 octets in length, it is strongly recommended to use that length for the +# field to provid interoperability with deployed peer implementations. This +# field is configured in hex format. +#eap_fast_a_id=101112131415161718191a1b1c1d1e1f + +# EAP-FAST authority identifier information (A-ID-Info) +# This is a user-friendly name for the A-ID. For example, the enterprise name +# and server name in a human-readable format. This field is encoded as UTF-8. +#eap_fast_a_id_info=test server + +# Enable/disable different EAP-FAST provisioning modes: +#0 = provisioning disabled +#1 = only anonymous provisioning allowed +#2 = only authenticated provisioning allowed +#3 = both provisioning modes allowed (default) +#eap_fast_prov=3 + +# EAP-FAST PAC-Key lifetime in seconds (hard limit) +#pac_key_lifetime=604800 + +# EAP-FAST PAC-Key refresh time in seconds (soft limit on remaining hard +# limit). The server will generate a new PAC-Key when this number of seconds +# (or fewer) of the lifetime remains. +#pac_key_refresh_time=86400 + +# EAP-SIM and EAP-AKA protected success/failure indication using AT_RESULT_IND +# (default: 0 = disabled). +#eap_sim_aka_result_ind=1 + +# Trusted Network Connect (TNC) +# If enabled, TNC validation will be required before the peer is allowed to +# connect. Note: This is only used with EAP-TTLS and EAP-FAST. If any other +# EAP method is enabled, the peer will be allowed to connect without TNC. +#tnc=1 + + +##### IEEE 802.11f - Inter-Access Point Protocol (IAPP) ####################### + +# Interface to be used for IAPP broadcast packets +#iapp_interface=eth0 + + +##### RADIUS client configuration ############################################# +# for IEEE 802.1X with external Authentication Server, IEEE 802.11 +# authentication with external ACL for MAC addresses, and accounting + +# The own IP address of the access point (used as NAS-IP-Address) +own_ip_addr=127.0.0.1 + +# Optional NAS-Identifier string for RADIUS messages. When used, this should be +# a unique to the NAS within the scope of the RADIUS server. For example, a +# fully qualified domain name can be used here. +# When using IEEE 802.11r, nas_identifier must be set and must be between 1 and +# 48 octets long. +#nas_identifier=ap.example.com + +# RADIUS authentication server +#auth_server_addr=127.0.0.1 +#auth_server_port=1812 +#auth_server_shared_secret=secret + +# RADIUS accounting server +#acct_server_addr=127.0.0.1 +#acct_server_port=1813 +#acct_server_shared_secret=secret + +# Secondary RADIUS servers; to be used if primary one does not reply to +# RADIUS packets. These are optional and there can be more than one secondary +# server listed. +#auth_server_addr=127.0.0.2 +#auth_server_port=1812 +#auth_server_shared_secret=secret2 +# +#acct_server_addr=127.0.0.2 +#acct_server_port=1813 +#acct_server_shared_secret=secret2 + +# Retry interval for trying to return to the primary RADIUS server (in +# seconds). RADIUS client code will automatically try to use the next server +# when the current server is not replying to requests. If this interval is set, +# primary server will be retried after configured amount of time even if the +# currently used secondary server is still working. +#radius_retry_primary_interval=600 + + +# Interim accounting update interval +# If this is set (larger than 0) and acct_server is configured, hostapd will +# send interim accounting updates every N seconds. Note: if set, this overrides +# possible Acct-Interim-Interval attribute in Access-Accept message. Thus, this +# value should not be configured in hostapd.conf, if RADIUS server is used to +# control the interim interval. +# This value should not be less 600 (10 minutes) and must not be less than +# 60 (1 minute). +#radius_acct_interim_interval=600 + +# Dynamic VLAN mode; allow RADIUS authentication server to decide which VLAN +# is used for the stations. This information is parsed from following RADIUS +# attributes based on RFC 3580 and RFC 2868: Tunnel-Type (value 13 = VLAN), +# Tunnel-Medium-Type (value 6 = IEEE 802), Tunnel-Private-Group-ID (value +# VLANID as a string). vlan_file option below must be configured if dynamic +# VLANs are used. Optionally, the local MAC ACL list (accept_mac_file) can be +# used to set static client MAC address to VLAN ID mapping. +# 0 = disabled (default) +# 1 = option; use default interface if RADIUS server does not include VLAN ID +# 2 = required; reject authentication if RADIUS server does not include VLAN ID +#dynamic_vlan=0 + +# VLAN interface list for dynamic VLAN mode is read from a separate text file. +# This list is used to map VLAN ID from the RADIUS server to a network +# interface. Each station is bound to one interface in the same way as with +# multiple BSSIDs or SSIDs. Each line in this text file is defining a new +# interface and the line must include VLAN ID and interface name separated by +# white space (space or tab). +#vlan_file=/etc/hostapd.vlan + +# Interface where 802.1q tagged packets should appear when a RADIUS server is +# used to determine which VLAN a station is on. hostapd creates a bridge for +# each VLAN. Then hostapd adds a VLAN interface (associated with the interface +# indicated by 'vlan_tagged_interface') and the appropriate wireless interface +# to the bridge. +#vlan_tagged_interface=eth0 + + +##### RADIUS authentication server configuration ############################## + +# hostapd can be used as a RADIUS authentication server for other hosts. This +# requires that the integrated EAP server is also enabled and both +# authentication services are sharing the same configuration. + +# File name of the RADIUS clients configuration for the RADIUS server. If this +# commented out, RADIUS server is disabled. +#radius_server_clients=/etc/hostapd.radius_clients + +# The UDP port number for the RADIUS authentication server +#radius_server_auth_port=1812 + +# Use IPv6 with RADIUS server (IPv4 will also be supported using IPv6 API) +#radius_server_ipv6=1 + + +##### WPA/IEEE 802.11i configuration ########################################## + +# Enable WPA. Setting this variable configures the AP to require WPA (either +# WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either +# wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK. +# For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys), +# RADIUS authentication server must be configured, and WPA-EAP must be included +# in wpa_key_mgmt. +# This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0) +# and/or WPA2 (full IEEE 802.11i/RSN): +# bit0 = WPA +# bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled) +#wpa=1 + +# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit +# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase +# (8..63 characters) that will be converted to PSK. This conversion uses SSID +# so the PSK changes when ASCII passphrase is used and the SSID is changed. +# wpa_psk (dot11RSNAConfigPSKValue) +# wpa_passphrase (dot11RSNAConfigPSKPassPhrase) +#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef +#wpa_passphrase=secret passphrase + +# Optionally, WPA PSKs can be read from a separate text file (containing list +# of (PSK,MAC address) pairs. This allows more than one PSK to be configured. +# Use absolute path name to make sure that the files can be read on SIGHUP +# configuration reloads. +#wpa_psk_file=/etc/hostapd.wpa_psk + +# Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The +# entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be +# added to enable SHA256-based stronger algorithms. +# (dot11RSNAConfigAuthenticationSuitesTable) +#wpa_key_mgmt=WPA-PSK WPA-EAP + +# Set of accepted cipher suites (encryption algorithms) for pairwise keys +# (unicast packets). This is a space separated list of algorithms: +# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] +# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] +# Group cipher suite (encryption algorithm for broadcast and multicast frames) +# is automatically selected based on this configuration. If only CCMP is +# allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise, +# TKIP will be used as the group cipher. +# (dot11RSNAConfigPairwiseCiphersTable) +# Pairwise cipher for WPA (v1) (default: TKIP) +#wpa_pairwise=TKIP CCMP +# Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value) +#rsn_pairwise=CCMP + +# Time interval for rekeying GTK (broadcast/multicast encryption keys) in +# seconds. (dot11RSNAConfigGroupRekeyTime) +#wpa_group_rekey=600 + +# Rekey GTK when any STA that possesses the current GTK is leaving the BSS. +# (dot11RSNAConfigGroupRekeyStrict) +#wpa_strict_rekey=1 + +# Time interval for rekeying GMK (master key used internally to generate GTKs +# (in seconds). +#wpa_gmk_rekey=86400 + +# Maximum lifetime for PTK in seconds. This can be used to enforce rekeying of +# PTK to mitigate some attacks against TKIP deficiencies. +#wpa_ptk_rekey=600 + +# Enable IEEE 802.11i/RSN/WPA2 pre-authentication. This is used to speed up +# roaming be pre-authenticating IEEE 802.1X/EAP part of the full RSN +# authentication and key handshake before actually associating with a new AP. +# (dot11RSNAPreauthenticationEnabled) +#rsn_preauth=1 +# +# Space separated list of interfaces from which pre-authentication frames are +# accepted (e.g., 'eth0' or 'eth0 wlan0wds0'. This list should include all +# interface that are used for connections to other APs. This could include +# wired interfaces and WDS links. The normal wireless data interface towards +# associated stations (e.g., wlan0) should not be added, since +# pre-authentication is only used with APs other than the currently associated +# one. +#rsn_preauth_interfaces=eth0 + +# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e) is +# allowed. This is only used with RSN/WPA2. +# 0 = disabled (default) +# 1 = enabled +#peerkey=1 + +# ieee80211w: Whether management frame protection (MFP) is enabled +# 0 = disabled (default) +# 1 = optional +# 2 = required +#ieee80211w=0 + +# Association SA Query maximum timeout (in TU = 1.024 ms; for MFP) +# (maximum time to wait for a SA Query response) +# dot11AssociationSAQueryMaximumTimeout, 1...4294967295 +#assoc_sa_query_max_timeout=1000 + +# Association SA Query retry timeout (in TU = 1.024 ms; for MFP) +# (time between two subsequent SA Query requests) +# dot11AssociationSAQueryRetryTimeout, 1...4294967295 +#assoc_sa_query_retry_timeout=201 + +# disable_pmksa_caching: Disable PMKSA caching +# This parameter can be used to disable caching of PMKSA created through EAP +# authentication. RSN preauthentication may still end up using PMKSA caching if +# it is enabled (rsn_preauth=1). +# 0 = PMKSA caching enabled (default) +# 1 = PMKSA caching disabled +#disable_pmksa_caching=0 + +# okc: Opportunistic Key Caching (aka Proactive Key Caching) +# Allow PMK cache to be shared opportunistically among configured interfaces +# and BSSes (i.e., all configurations within a single hostapd process). +# 0 = disabled (default) +# 1 = enabled +#okc=1 + + +##### IEEE 802.11r configuration ############################################## + +# Mobility Domain identifier (dot11FTMobilityDomainID, MDID) +# MDID is used to indicate a group of APs (within an ESS, i.e., sharing the +# same SSID) between which a STA can use Fast BSS Transition. +# 2-octet identifier as a hex string. +#mobility_domain=a1b2 + +# PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID) +# 1 to 48 octet identifier. +# This is configured with nas_identifier (see RADIUS client section above). + +# Default lifetime of the PMK-RO in minutes; range 1..65535 +# (dot11FTR0KeyLifetime) +#r0_key_lifetime=10000 + +# PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID) +# 6-octet identifier as a hex string. +#r1_key_holder=000102030405 + +# Reassociation deadline in time units (TUs / 1.024 ms; range 1000..65535) +# (dot11FTReassociationDeadline) +#reassociation_deadline=1000 + +# List of R0KHs in the same Mobility Domain +# format: <128-bit key as hex string> +# This list is used to map R0KH-ID (NAS Identifier) to a destination MAC +# address when requesting PMK-R1 key from the R0KH that the STA used during the +# Initial Mobility Domain Association. +#r0kh=02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f +#r0kh=02:01:02:03:04:06 r0kh-2.example.com 00112233445566778899aabbccddeeff +# And so on.. One line per R0KH. + +# List of R1KHs in the same Mobility Domain +# format: <128-bit key as hex string> +# This list is used to map R1KH-ID to a destination MAC address when sending +# PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD +# that can request PMK-R1 keys. +#r1kh=02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f +#r1kh=02:01:02:03:04:06 02:11:22:33:44:66 00112233445566778899aabbccddeeff +# And so on.. One line per R1KH. + +# Whether PMK-R1 push is enabled at R0KH +# 0 = do not push PMK-R1 to all configured R1KHs (default) +# 1 = push PMK-R1 to all configured R1KHs whenever a new PMK-R0 is derived +#pmk_r1_push=1 + +##### Neighbor table ########################################################## +# Maximum number of entries kept in AP table (either for neigbor table or for +# detecting Overlapping Legacy BSS Condition). The oldest entry will be +# removed when adding a new entry that would make the list grow over this +# limit. Note! WFA certification for IEEE 802.11g requires that OLBC is +# enabled, so this field should not be set to 0 when using IEEE 802.11g. +# default: 255 +#ap_table_max_size=255 + +# Number of seconds of no frames received after which entries may be deleted +# from the AP table. Since passive scanning is not usually performed frequently +# this should not be set to very small value. In addition, there is no +# guarantee that every scan cycle will receive beacon frames from the +# neighboring APs. +# default: 60 +#ap_table_expiration_time=3600 + + +##### Wi-Fi Protected Setup (WPS) ############################################# + +# WPS state +# 0 = WPS disabled (default) +# 1 = WPS enabled, not configured +# 2 = WPS enabled, configured +#wps_state=2 + +# AP can be configured into a locked state where new WPS Registrar are not +# accepted, but previously authorized Registrars (including the internal one) +# can continue to add new Enrollees. +#ap_setup_locked=1 + +# Universally Unique IDentifier (UUID; see RFC 4122) of the device +# This value is used as the UUID for the internal WPS Registrar. If the AP +# is also using UPnP, this value should be set to the device's UPnP UUID. +# If not configured, UUID will be generated based on the local MAC address. +#uuid=12345678-9abc-def0-1234-56789abcdef0 + +# Note: If wpa_psk_file is set, WPS is used to generate random, per-device PSKs +# that will be appended to the wpa_psk_file. If wpa_psk_file is not set, the +# default PSK (wpa_psk/wpa_passphrase) will be delivered to Enrollees. Use of +# per-device PSKs is recommended as the more secure option (i.e., make sure to +# set wpa_psk_file when using WPS with WPA-PSK). + +# When an Enrollee requests access to the network with PIN method, the Enrollee +# PIN will need to be entered for the Registrar. PIN request notifications are +# sent to hostapd ctrl_iface monitor. In addition, they can be written to a +# text file that could be used, e.g., to populate the AP administration UI with +# pending PIN requests. If the following variable is set, the PIN requests will +# be written to the configured file. +#wps_pin_requests=/var/run/hostapd_wps_pin_requests + +# Device Name +# User-friendly description of device; up to 32 octets encoded in UTF-8 +#device_name=Wireless AP + +# Manufacturer +# The manufacturer of the device (up to 64 ASCII characters) +#manufacturer=Company + +# Model Name +# Model of the device (up to 32 ASCII characters) +#model_name=WAP + +# Model Number +# Additional device description (up to 32 ASCII characters) +#model_number=123 + +# Serial Number +# Serial number of the device (up to 32 characters) +#serial_number=12345 + +# Primary Device Type +# Used format: -- +# categ = Category as an integer value +# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for +# default WPS OUI +# subcateg = OUI-specific Sub Category as an integer value +# Examples: +# 1-0050F204-1 (Computer / PC) +# 1-0050F204-2 (Computer / Server) +# 5-0050F204-1 (Storage / NAS) +# 6-0050F204-1 (Network Infrastructure / AP) +#device_type=6-0050F204-1 + +# OS Version +# 4-octet operating system version number (hex string) +#os_version=01020300 + +# Config Methods +# List of the supported configuration methods +# Available methods: usba ethernet label display ext_nfc_token int_nfc_token +# nfc_interface push_button keypad virtual_display physical_display +# virtual_push_button physical_push_button +#config_methods=label virtual_display virtual_push_button keypad + +# WPS capability discovery workaround for PBC with Windows 7 +# Windows 7 uses incorrect way of figuring out AP's WPS capabilities by acting +# as a Registrar and using M1 from the AP. The config methods attribute in that +# message is supposed to indicate only the configuration method supported by +# the AP in Enrollee role, i.e., to add an external Registrar. For that case, +# PBC shall not be used and as such, the PushButton config method is removed +# from M1 by default. If pbc_in_m1=1 is included in the configuration file, +# the PushButton config method is left in M1 (if included in config_methods +# parameter) to allow Windows 7 to use PBC instead of PIN (e.g., from a label +# in the AP). +#pbc_in_m1=1 + +# Static access point PIN for initial configuration and adding Registrars +# If not set, hostapd will not allow external WPS Registrars to control the +# access point. The AP PIN can also be set at runtime with hostapd_cli +# wps_ap_pin command. Use of temporary (enabled by user action) and random +# AP PIN is much more secure than configuring a static AP PIN here. As such, +# use of the ap_pin parameter is not recommended if the AP device has means for +# displaying a random PIN. +#ap_pin=12345670 + +# Skip building of automatic WPS credential +# This can be used to allow the automatically generated Credential attribute to +# be replaced with pre-configured Credential(s). +#skip_cred_build=1 + +# Additional Credential attribute(s) +# This option can be used to add pre-configured Credential attributes into M8 +# message when acting as a Registrar. If skip_cred_build=1, this data will also +# be able to override the Credential attribute that would have otherwise been +# automatically generated based on network configuration. This configuration +# option points to an external file that much contain the WPS Credential +# attribute(s) as binary data. +#extra_cred=hostapd.cred + +# Credential processing +# 0 = process received credentials internally (default) +# 1 = do not process received credentials; just pass them over ctrl_iface to +# external program(s) +# 2 = process received credentials internally and pass them over ctrl_iface +# to external program(s) +# Note: With wps_cred_processing=1, skip_cred_build should be set to 1 and +# extra_cred be used to provide the Credential data for Enrollees. +# +# wps_cred_processing=1 will disabled automatic updates of hostapd.conf file +# both for Credential processing and for marking AP Setup Locked based on +# validation failures of AP PIN. An external program is responsible on updating +# the configuration appropriately in this case. +#wps_cred_processing=0 + +# AP Settings Attributes for M7 +# By default, hostapd generates the AP Settings Attributes for M7 based on the +# current configuration. It is possible to override this by providing a file +# with pre-configured attributes. This is similar to extra_cred file format, +# but the AP Settings attributes are not encapsulated in a Credential +# attribute. +#ap_settings=hostapd.ap_settings + +# WPS UPnP interface +# If set, support for external Registrars is enabled. +#upnp_iface=br0 + +# Friendly Name (required for UPnP) +# Short description for end use. Should be less than 64 characters. +#friendly_name=WPS Access Point + +# Manufacturer URL (optional for UPnP) +#manufacturer_url=http://www.example.com/ + +# Model Description (recommended for UPnP) +# Long description for end user. Should be less than 128 characters. +#model_description=Wireless Access Point + +# Model URL (optional for UPnP) +#model_url=http://www.example.com/model/ + +# Universal Product Code (optional for UPnP) +# 12-digit, all-numeric code that identifies the consumer package. +#upc=123456789012 + +##### Wi-Fi Direct (P2P) ###################################################### + +# Enable P2P Device management +#manage_p2p=1 + +# Allow cross connection +#allow_cross_connection=1 + +#### TDLS (IEEE 802.11z-2010) ################################################# + +# Prohibit use of TDLS in this BSS +#tdls_prohibit=1 + +# Prohibit use of TDLS Channel Switching in this BSS +#tdls_prohibit_chan_switch=1 + +##### IEEE 802.11v-2011 ####################################################### + +# Time advertisement +# 0 = disabled (default) +# 2 = UTC time at which the TSF timer is 0 +#time_advertisement=2 + +# Local time zone as specified in 8.3 of IEEE Std 1003.1-2004: +# stdoffset[dst[offset][,start[/time],end[/time]]] +#time_zone=EST5 + +##### IEEE 802.11u-2011 ####################################################### + +# Enable Interworking service +#interworking=1 + +# Access Network Type +# 0 = Private network +# 1 = Private network with guest access +# 2 = Chargeable public network +# 3 = Free public network +# 4 = Personal device network +# 5 = Emergency services only network +# 14 = Test or experimental +# 15 = Wildcard +#access_network_type=0 + +# Whether the network provides connectivity to the Internet +# 0 = Unspecified +# 1 = Network provides connectivity to the Internet +#internet=1 + +# Additional Step Required for Access +# Note: This is only used with open network, i.e., ASRA shall ne set to 0 if +# RSN is used. +#asra=0 + +# Emergency services reachable +#esr=0 + +# Unauthenticated emergency service accessible +#uesa=0 + +# Venue Info (optional) +# The available values are defined in IEEE Std 802.11u-2011, 7.3.1.34. +# Example values (group,type): +# 0,0 = Unspecified +# 1,7 = Convention Center +# 1,13 = Coffee Shop +# 2,0 = Unspecified Business +# 7,1 Private Residence +#venue_group=7 +#venue_type=1 + +# Homogeneous ESS identifier (optional; dot11HESSID) +# If set, this shall be identifical to one of the BSSIDs in the homogeneous +# ESS and this shall be set to the same value across all BSSs in homogeneous +# ESS. +#hessid=02:03:04:05:06:07 + +# Roaming Consortium List +# Arbitrary number of Roaming Consortium OIs can be configured with each line +# adding a new OI to the list. The first three entries are available through +# Beacon and Probe Response frames. Any additional entry will be available only +# through ANQP queries. Each OI is between 3 and 15 octets and is configured a +# a hexstring. +#roaming_consortium=021122 +#roaming_consortium=2233445566 + +##### Multiple BSSID support ################################################## +# +# Above configuration is using the default interface (wlan#, or multi-SSID VLAN +# interfaces). Other BSSIDs can be added by using separator 'bss' with +# default interface name to be allocated for the data packets of the new BSS. +# +# hostapd will generate BSSID mask based on the BSSIDs that are +# configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is +# not the case, the MAC address of the radio must be changed before starting +# hostapd (ifconfig wlan0 hw ether ). If a BSSID is configured for +# every secondary BSS, this limitation is not applied at hostapd and other +# masks may be used if the driver supports them (e.g., swap the locally +# administered bit) +# +# BSSIDs are assigned in order to each BSS, unless an explicit BSSID is +# specified using the 'bssid' parameter. +# If an explicit BSSID is specified, it must be chosen such that it: +# - results in a valid MASK that covers it and the dev_addr +# - is not the same as the MAC address of the radio +# - is not the same as any other explicitly specified BSSID +# +# Please note that hostapd uses some of the values configured for the first BSS +# as the defaults for the following BSSes. However, it is recommended that all +# BSSes include explicit configuration of all relevant configuration items. +# +#bss=wlan0_0 +#ssid=test2 +# most of the above items can be used here (apart from radio interface specific +# items, like channel) + +#bss=wlan0_1 +#bssid=00:13:10:95:fe:0b +# ... diff --git a/multitech/recipes/hostap/hostap-daemon_1.0.bb b/multitech/recipes/hostap/hostap-daemon_1.0.bb index 863c7ed..a726237 100644 --- a/multitech/recipes/hostap/hostap-daemon_1.0.bb +++ b/multitech/recipes/hostap/hostap-daemon_1.0.bb @@ -2,13 +2,14 @@ DESCRIPTION = "User space daemon for extended IEEE 802.11 management" require hostap-daemon-1.0.inc -PR = "r0" +PR = "r1" #DEFAULT_PREFERENCE = "-1" SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \ file://defconfig \ - file://init" + file://init \ + file://hostapd.conf" SRC_URI[md5sum] = "236247a7bbd4f60d5fa3e99849d1ffc9" SRC_URI[sha256sum] = "002e9dcb7e46cf82b5900a2fcf92b30fc8cdfd32a72d7fd4488588f1c013dfcc" -- cgit v1.2.3 From 34aafef2dbe70bd2724a33ce8e68a0cb20b114b5 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Thu, 13 Sep 2012 17:33:52 -0500 Subject: bluez: add bluetooth init script for mt100eocg-pcie-dk --- multitech/recipes/bluez/bluez4.inc | 10 +++++++++- multitech/recipes/bluez/files/bluetooth.init | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100755 multitech/recipes/bluez/files/bluetooth.init (limited to 'multitech') diff --git a/multitech/recipes/bluez/bluez4.inc b/multitech/recipes/bluez/bluez4.inc index a59145b..918ef9c 100644 --- a/multitech/recipes/bluez/bluez4.inc +++ b/multitech/recipes/bluez/bluez4.inc @@ -5,7 +5,7 @@ PRIORITY = "optional" LICENSE = "GPLv2/LGPLv2.1" #DEPENDS = "gst-plugins-base alsa-lib virtual/libusb0 dbus-glib" DEPENDS = "virtual/libusb0 dbus-glib" -INC_PR = "r8" +INC_PR = "r9" FILESPATHBASE .= ":${OETREE}/openembedded/recipes/bluez" @@ -19,6 +19,9 @@ SRC_URI = "\ file://fix-dfutool-usb-declaration-mismatch.patch \ file://bluetooth.conf \ " + +SRC_URI_append_mt100eocg-pcie-dk = "file://bluetooth.init" + S = "${WORKDIR}/bluez-${PV}" inherit autotools update-rc.d @@ -52,6 +55,11 @@ do_install_append() { install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/ } +do_install_append_mt100eocg-pcie-dk() { + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/bluetooth.init ${D}${sysconfdir}/init.d/bluetooth +} + INITSCRIPT_NAME = "bluetooth" INITSCRIPT_PARAMS = "defaults 23 19" diff --git a/multitech/recipes/bluez/files/bluetooth.init b/multitech/recipes/bluez/files/bluetooth.init new file mode 100755 index 0000000..411fd6d --- /dev/null +++ b/multitech/recipes/bluez/files/bluetooth.init @@ -0,0 +1,7 @@ +#!/bin/sh + +echo "Enabling bluetooth..." +mts-io-sysfs store bt-enabled 1 +sleep 1 +echo "Setting up bluetooth device..." +hciattach /dev/bt texas -- cgit v1.2.3 From c573dda027b9f56d67365ca7abde0875af0000aa Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Fri, 14 Sep 2012 14:20:40 -0500 Subject: bluez: mt100ecog-pcie-dk: update bluetooth init script --- multitech/recipes/bluez/files/bluetooth.init | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'multitech') diff --git a/multitech/recipes/bluez/files/bluetooth.init b/multitech/recipes/bluez/files/bluetooth.init index 411fd6d..41312e2 100755 --- a/multitech/recipes/bluez/files/bluetooth.init +++ b/multitech/recipes/bluez/files/bluetooth.init @@ -1,7 +1,11 @@ #!/bin/sh -echo "Enabling bluetooth..." -mts-io-sysfs store bt-enabled 1 -sleep 1 -echo "Setting up bluetooth device..." -hciattach /dev/bt texas +case "$1" in + start) + echo "Enabling bluetooth..." + mts-io-sysfs store bt-enabled 1 + sleep 1 + echo "Setting up bluetooth device..." + hciattach /dev/bt texas + ;; +esac -- cgit v1.2.3 From 65f880265be2f9e3ee56440e26f920e1d89dc7c6 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Tue, 18 Sep 2012 09:15:27 -0500 Subject: linux-2.6.39.4: mt100eocg-pcie-dk: use old reset method instead of alt reset * Fixes hangs on reboot --- .../linux-2.6.39.4-at91sam9260-reset.patch | 26 ++++++++++++++++++++++ multitech/recipes/linux/linux_2.6.39.4.bb | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch new file mode 100644 index 0000000..af63d5c --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91sam9260-reset.patch @@ -0,0 +1,26 @@ +Index: linux-2.6.39.4/arch/arm/mach-at91/at91sam9260.c +=================================================================== +--- linux-2.6.39.4.orig/arch/arm/mach-at91/at91sam9260.c 2012-09-17 16:25:08.248303296 -0500 ++++ linux-2.6.39.4/arch/arm/mach-at91/at91sam9260.c 2012-09-17 16:25:45.316033835 -0500 +@@ -310,6 +310,11 @@ + iotable_init(at91sam9xe_sram_desc, ARRAY_SIZE(at91sam9xe_sram_desc)); + } + ++static void at91sam9260_reset(void) ++{ ++ at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); ++} ++ + void __init at91sam9260_initialize(unsigned long main_clock) + { + /* Map peripherals */ +@@ -322,7 +327,8 @@ + else + iotable_init(at91sam9260_sram_desc, ARRAY_SIZE(at91sam9260_sram_desc)); + +- at91_arch_reset = at91sam9_alt_reset; ++ // jjg: use old reset routine, alt reset is not reliable ++ at91_arch_reset = at91sam9260_reset; + pm_power_off = at91sam9260_poweroff; + at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1) + | (1 << AT91SAM9260_ID_IRQ2); diff --git a/multitech/recipes/linux/linux_2.6.39.4.bb b/multitech/recipes/linux/linux_2.6.39.4.bb index 93f21ca..d0af5f7 100644 --- a/multitech/recipes/linux/linux_2.6.39.4.bb +++ b/multitech/recipes/linux/linux_2.6.39.4.bb @@ -1,12 +1,13 @@ require recipes/linux/linux.inc -PR = "r0" +PR = "r1" SRC_URI = " \ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ " SRC_URI_append_mt100eocg-pcie-dk = "file://defconfig \ + file://linux-2.6.39.4-at91sam9260-reset.patch \ file://linux-2.6.39.4-mach-at91-mt100eocg-pcie-dk.patch \ file://linux-2.6.35.14-at91-gpio-pullup.patch \ file://linux-2.6.32.3-atmel_spi.patch \ -- cgit v1.2.3 From 165908091aaa5b6f08a14f1bf67bf50e62e36ed4 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Tue, 18 Sep 2012 13:21:38 -0500 Subject: bluez4: mt100eocg-pcie-dk: update bluetooth.init script, add stop/restart --- multitech/recipes/bluez/bluez4.inc | 2 +- multitech/recipes/bluez/files/bluetooth.init | 30 +++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) (limited to 'multitech') diff --git a/multitech/recipes/bluez/bluez4.inc b/multitech/recipes/bluez/bluez4.inc index 918ef9c..60e0242 100644 --- a/multitech/recipes/bluez/bluez4.inc +++ b/multitech/recipes/bluez/bluez4.inc @@ -5,7 +5,7 @@ PRIORITY = "optional" LICENSE = "GPLv2/LGPLv2.1" #DEPENDS = "gst-plugins-base alsa-lib virtual/libusb0 dbus-glib" DEPENDS = "virtual/libusb0 dbus-glib" -INC_PR = "r9" +INC_PR = "r10" FILESPATHBASE .= ":${OETREE}/openembedded/recipes/bluez" diff --git a/multitech/recipes/bluez/files/bluetooth.init b/multitech/recipes/bluez/files/bluetooth.init index 41312e2..58318c3 100755 --- a/multitech/recipes/bluez/files/bluetooth.init +++ b/multitech/recipes/bluez/files/bluetooth.init @@ -1,11 +1,35 @@ -#!/bin/sh +#!/bin/bash -case "$1" in - start) +bt_start() +{ echo "Enabling bluetooth..." + mts-io-sysfs store bt-enabled 0 + usleep 200000 mts-io-sysfs store bt-enabled 1 sleep 1 echo "Setting up bluetooth device..." hciattach /dev/bt texas +} + +bt_stop() { + echo "Disabling bluetooth..." + killall hciattach + mts-io-sysfs store bt-enabled 0 +} + +case "$1" in + start) + bt_start + ;; + stop) + bt_stop + ;; + restart) + bt_stop + bt_start + ;; + *) + echo "Usage $0: start|stop|restart" + exit 1 ;; esac -- cgit v1.2.3 From 37a410282653ad5c567d23861ebe6afcf7675c5c Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Tue, 18 Sep 2012 13:23:08 -0500 Subject: mts-io: mt100eocg-pcie-dk: remove unavailable pins from sysfs, add radio reset on startup if needed --- .../multitech/mts-io/mt100eocg-pcie-dk/mts-io.init | 25 ++++++++++++++++ .../mts-io/mt100eocg-pcie-dk/radio-reset-h5 | 16 ++++++++++ .../recipes/multitech/mts-io/mts-io-pcieh5.patch | 35 +++++++++++++--------- multitech/recipes/multitech/mts-io_0.5.1.bb | 2 +- 4 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/mts-io.init create mode 100755 multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/radio-reset-h5 (limited to 'multitech') diff --git a/multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/mts-io.init b/multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/mts-io.init new file mode 100644 index 0000000..7c285ec --- /dev/null +++ b/multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/mts-io.init @@ -0,0 +1,25 @@ +#!/bin/sh + +case $1 in + start) + echo "Loading mts-io module" + modprobe mts_io + # reset module if MTPCIE-X was not detected + if ! lsusb | grep -q 'ID 1bc7:'; then + echo "Restarting radio" + radio-reset-h5 + fi + ;; + + stop) + echo "Unloading mts-io module" + modprobe -r mts_io + ;; + + *) + echo "Usage: $0 {start|stop}" + exit 2 + ;; +esac + + diff --git a/multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/radio-reset-h5 b/multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/radio-reset-h5 new file mode 100755 index 0000000..02e43d8 --- /dev/null +++ b/multitech/recipes/multitech/mts-io/mt100eocg-pcie-dk/radio-reset-h5 @@ -0,0 +1,16 @@ +#!/bin/sh + +# This script works around an H5 radio quirk by disabling USB and +# waiting for the radio to power up before re-enabling it. Note that +# this will disable all USB devices connected to the USB host controller +# until the reset is finished. USB device port is not affected. + +pin="gpo3" + +rmmod ohci_hcd +# toggle onoff pin +mts-io-sysfs store $pin 1 +usleep 200000 +mts-io-sysfs store $pin 0 +sleep 15 +modprobe ohci_hcd diff --git a/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch b/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch index a49f649..15a1e28 100644 --- a/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch +++ b/multitech/recipes/multitech/mts-io/mts-io-pcieh5.patch @@ -1,8 +1,8 @@ Index: io-module/mts_io.c =================================================================== ---- io-module.orig/mts_io.c 2011-10-03 12:47:24.000000000 -0500 -+++ io-module/mts_io.c 2012-09-12 17:06:42.476070820 -0500 -@@ -317,17 +317,19 @@ +--- io-module.orig/mts_io.c ++++ io-module/mts_io.c +@@ -317,17 +317,19 @@ static struct gpio_pin gpio_pins_mt100eo .output_value = 1, .use_pullup = 0, }, @@ -10,10 +10,10 @@ Index: io-module/mts_io.c + // (was TXD1 and DTR1) (PB17 and PB7 are tied together) { - .name = "TXD1", -+ .name = "WLAN_EN", - .pin = AT91_PIN_PB17, -+ .pin = AT91_PIN_PB7, - .direction = GPIO_DIR_INPUT, ++ .name = "WLAN_EN", ++ .pin = AT91_PIN_PB7, + .direction = GPIO_DIR_OUTPUT, .output_value = 0, .use_pullup = 0, @@ -27,7 +27,7 @@ Index: io-module/mts_io.c .output_value = 0, .use_pullup = 0, }, -@@ -338,6 +340,8 @@ +@@ -338,6 +340,8 @@ static struct gpio_pin gpio_pins_mt100eo .output_value = 1, .use_pullup = 0, }, @@ -36,7 +36,7 @@ Index: io-module/mts_io.c { .name = "GPIO11", .pin = AT91_PIN_PB19, -@@ -345,6 +349,7 @@ +@@ -345,6 +349,7 @@ static struct gpio_pin gpio_pins_mt100eo .output_value = 1, .use_pullup = 1, }, @@ -44,7 +44,7 @@ Index: io-module/mts_io.c { .name = "GPIO12", .pin = AT91_PIN_PB20, -@@ -400,6 +405,13 @@ +@@ -400,6 +405,13 @@ static int mts_id_eeprom_load(void) mts_product_id = MTCDP_E1_DK_1_0; } @@ -58,7 +58,7 @@ Index: io-module/mts_io.c log_info("sizeof: %lu", (unsigned long) sizeof(struct mts_id_eeprom_layout)); log_info("vendor-id: %.32s", id_eeprom.vendor_id); log_info("product-id: %.32s", id_eeprom.product_id); -@@ -1976,6 +1988,100 @@ +@@ -1976,6 +1988,100 @@ static ssize_t mts_attr_store_cd(struct return count; } @@ -159,7 +159,7 @@ Index: io-module/mts_io.c static struct device_attribute dev_attr_gpo1 = { .attr = { -@@ -2137,6 +2243,24 @@ +@@ -2137,6 +2243,24 @@ static struct device_attribute dev_attr_ .store = mts_attr_store_gpio12, }; @@ -184,16 +184,23 @@ Index: io-module/mts_io.c static struct device_attribute dev_attr_rsersrc = { .attr = { .name = "rsersrc", -@@ -2164,6 +2288,8 @@ +@@ -2157,13 +2281,13 @@ static struct device_attribute dev_attr_ + + + static struct attribute *mt100eocg_platform_attributes[] = { +- &dev_attr_extserial_dtr.attr, + &dev_attr_extserial_cd.attr, + &dev_attr_rsersrc.attr, + &dev_attr_radio_reset.attr, &dev_attr_eth0_enabled.attr, - &dev_attr_gpio11.attr, +- &dev_attr_gpio11.attr, &dev_attr_gpio12.attr, + &dev_attr_bt_enabled.attr, + &dev_attr_wlan_enabled.attr, &dev_attr_gpo1.attr, &dev_attr_gpo2.attr, -@@ -2323,7 +2449,7 @@ +@@ -2323,7 +2447,7 @@ static int __devinit mts_spi_dout_probe( return tmp; } @@ -202,7 +209,7 @@ Index: io-module/mts_io.c spi_writen(spi, &spi_dout_value, 1); spi_dout_dev = spi; -@@ -2521,11 +2647,14 @@ +@@ -2521,11 +2645,14 @@ static int __init mts_io_init(void) if ( mts_product_id == MT100EOCG_0_0 ) { //Set open drain for GPIO11 and GPIO12 using multi drive diff --git a/multitech/recipes/multitech/mts-io_0.5.1.bb b/multitech/recipes/multitech/mts-io_0.5.1.bb index 43ee4fe..2ddf14c 100644 --- a/multitech/recipes/multitech/mts-io_0.5.1.bb +++ b/multitech/recipes/multitech/mts-io_0.5.1.bb @@ -1,5 +1,5 @@ require mts-io.inc -PR = "${INC_PR}.0" +PR = "${INC_PR}.1" SRC_URI_append_mt100eocg-pcie-dk = " file://mts-io-pcieh5.patch" -- cgit v1.2.3 From 2c90905f0a6ee951c92353d792142cc7d0716ed0 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 3 Oct 2012 16:26:05 -0500 Subject: linux-2.6.35: add drivers: usb network adapters, tun/tap, ppp filter --- .../recipes/linux/linux-2.6.35/mt100eocg/defconfig | 52 +++++++++++++++------- .../recipes/linux/linux-2.6.35/mtcdp/defconfig | 52 +++++++++++++++------- multitech/recipes/linux/linux_2.6.35.bbappend | 2 +- 3 files changed, 71 insertions(+), 35 deletions(-) (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig b/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig index 02e49eb..8a2fa1c 100644 --- a/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig +++ b/multitech/recipes/linux/linux-2.6.35/mt100eocg/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.35.14 -# Fri Feb 10 09:34:40 2012 +# Wed Oct 3 16:23:24 2012 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -423,6 +423,8 @@ CONFIG_UNIX=y CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_ASK_IP_FIB_HASH is not set +# CONFIG_IP_FIB_TRIE is not set CONFIG_IP_FIB_HASH=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y @@ -445,6 +447,14 @@ CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y +# CONFIG_DEFAULT_BIC is not set +# CONFIG_DEFAULT_CUBIC is not set +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_HYBLA is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_VENO is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set @@ -575,6 +585,9 @@ CONFIG_IP_NF_MANGLE=y # CONFIG_IP_NF_ARPTABLES is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +# CONFIG_SCTP_HMAC_MD5 is not set # CONFIG_RDS is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set @@ -837,11 +850,11 @@ CONFIG_SCSI_LOWLEVEL=y # CONFIG_ATA is not set # CONFIG_MD is not set CONFIG_NETDEVICES=y -# CONFIG_DUMMY is not set +CONFIG_DUMMY=m # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set +CONFIG_TUN=m # CONFIG_VETH is not set CONFIG_PHYLIB=y @@ -907,6 +920,9 @@ CONFIG_AR9170_USB=m CONFIG_AR9170_LEDS=y # CONFIG_B43 is not set # CONFIG_B43LEGACY is not set +# CONFIG_B43LEGACY_DMA_AND_PIO_MODE is not set +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set # CONFIG_HOSTAP is not set # CONFIG_IWM is not set CONFIG_LIBERTAS=m @@ -945,37 +961,37 @@ CONFIG_ZD1211RW=m # # USB Network Adapters # -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RTL8150 is not set +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_CDCETHER=m -# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_EEM=m CONFIG_USB_NET_DM9601=m CONFIG_USB_NET_SMSC75XX=m CONFIG_USB_NET_SMSC95XX=m -# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m -# CONFIG_USB_NET_PLUSB is not set -# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m CONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_CDC_SUBSET=m -# CONFIG_USB_ALI_M5632 is not set -# CONFIG_USB_AN2720 is not set +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y CONFIG_USB_BELKIN=y CONFIG_USB_ARMLINUX=y # CONFIG_USB_EPSON2888 is not set -# CONFIG_USB_KC2190 is not set +CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=m -# CONFIG_USB_NET_INT51X1 is not set -# CONFIG_USB_IPHETH is not set +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m CONFIG_USB_SIERRA_NET=m # CONFIG_WAN is not set CONFIG_PPP=y # CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set +CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=y # CONFIG_PPP_SYNC_TTY is not set CONFIG_PPP_DEFLATE=y @@ -1347,6 +1363,8 @@ CONFIG_USB_S2255=m # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set # CONFIG_FB is not set +# CONFIG_FB_CARMINE_DRAM_EVAL is not set +# CONFIG_CARMINE_DRAM_CUSTOM is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # diff --git a/multitech/recipes/linux/linux-2.6.35/mtcdp/defconfig b/multitech/recipes/linux/linux-2.6.35/mtcdp/defconfig index 02e49eb..68eaf6d 100644 --- a/multitech/recipes/linux/linux-2.6.35/mtcdp/defconfig +++ b/multitech/recipes/linux/linux-2.6.35/mtcdp/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.35.14 -# Fri Feb 10 09:34:40 2012 +# Wed Oct 3 16:21:51 2012 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -423,6 +423,8 @@ CONFIG_UNIX=y CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_ASK_IP_FIB_HASH is not set +# CONFIG_IP_FIB_TRIE is not set CONFIG_IP_FIB_HASH=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y @@ -445,6 +447,14 @@ CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y +# CONFIG_DEFAULT_BIC is not set +# CONFIG_DEFAULT_CUBIC is not set +# CONFIG_DEFAULT_HTCP is not set +# CONFIG_DEFAULT_HYBLA is not set +# CONFIG_DEFAULT_VEGAS is not set +# CONFIG_DEFAULT_VENO is not set +# CONFIG_DEFAULT_WESTWOOD is not set +# CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set @@ -575,6 +585,9 @@ CONFIG_IP_NF_MANGLE=y # CONFIG_IP_NF_ARPTABLES is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +# CONFIG_SCTP_HMAC_MD5 is not set # CONFIG_RDS is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set @@ -837,11 +850,11 @@ CONFIG_SCSI_LOWLEVEL=y # CONFIG_ATA is not set # CONFIG_MD is not set CONFIG_NETDEVICES=y -# CONFIG_DUMMY is not set +CONFIG_DUMMY=m # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set +CONFIG_TUN=m # CONFIG_VETH is not set CONFIG_PHYLIB=y @@ -907,6 +920,9 @@ CONFIG_AR9170_USB=m CONFIG_AR9170_LEDS=y # CONFIG_B43 is not set # CONFIG_B43LEGACY is not set +# CONFIG_B43LEGACY_DMA_AND_PIO_MODE is not set +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set # CONFIG_HOSTAP is not set # CONFIG_IWM is not set CONFIG_LIBERTAS=m @@ -945,37 +961,37 @@ CONFIG_ZD1211RW=m # # USB Network Adapters # -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RTL8150 is not set +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_CDCETHER=m -# CONFIG_USB_NET_CDC_EEM is not set +CONFIG_USB_NET_CDC_EEM=m CONFIG_USB_NET_DM9601=m CONFIG_USB_NET_SMSC75XX=m CONFIG_USB_NET_SMSC95XX=m -# CONFIG_USB_NET_GL620A is not set +CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m -# CONFIG_USB_NET_PLUSB is not set -# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m CONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_CDC_SUBSET=m -# CONFIG_USB_ALI_M5632 is not set -# CONFIG_USB_AN2720 is not set +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y CONFIG_USB_BELKIN=y CONFIG_USB_ARMLINUX=y # CONFIG_USB_EPSON2888 is not set -# CONFIG_USB_KC2190 is not set +CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=m -# CONFIG_USB_NET_INT51X1 is not set -# CONFIG_USB_IPHETH is not set +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m CONFIG_USB_SIERRA_NET=m # CONFIG_WAN is not set CONFIG_PPP=y # CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set +CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=y # CONFIG_PPP_SYNC_TTY is not set CONFIG_PPP_DEFLATE=y @@ -1347,6 +1363,8 @@ CONFIG_USB_S2255=m # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set # CONFIG_FB is not set +# CONFIG_FB_CARMINE_DRAM_EVAL is not set +# CONFIG_CARMINE_DRAM_CUSTOM is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # diff --git a/multitech/recipes/linux/linux_2.6.35.bbappend b/multitech/recipes/linux/linux_2.6.35.bbappend index 3177904..fd4c3f7 100644 --- a/multitech/recipes/linux/linux_2.6.35.bbappend +++ b/multitech/recipes/linux/linux_2.6.35.bbappend @@ -1,7 +1,7 @@ FILESEXTRA := "${THISDIR}" FILESPATHBASE =. "${FILESEXTRA}:" -PR .= ".corecdp11" +PR .= ".corecdp12" STABLEV = "14" SRC_URI_mtcdp = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2;name=kernel \ -- cgit v1.2.3 From 517e29dc7f4631630f58c9f7195899ef0f54d94a Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Tue, 12 Feb 2013 13:59:55 -0600 Subject: linux,compat-wireless: move mt100eocg-pcie-dk patches into subdir --- .../compat-wireless/files/wl12xx_sdio.patch | 51 ---------------------- .../mt100eocg-pcie-dk/wl12xx_sdio.patch | 51 ++++++++++++++++++++++ .../linux-2.6.39.4-at91-mci-clock-debug.patch | 14 ------ .../linux-2.6.39.4-mmc-core-maxclock.patch | 28 ------------ .../linux-2.6.39.4-at91-mci-clock-debug.patch | 14 ++++++ .../linux-2.6.39.4-mmc-core-maxclock.patch | 28 ++++++++++++ 6 files changed, 93 insertions(+), 93 deletions(-) delete mode 100644 multitech/recipes/compat-wireless/files/wl12xx_sdio.patch create mode 100644 multitech/recipes/compat-wireless/mt100eocg-pcie-dk/wl12xx_sdio.patch delete mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch delete mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-at91-mci-clock-debug.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mmc-core-maxclock.patch (limited to 'multitech') diff --git a/multitech/recipes/compat-wireless/files/wl12xx_sdio.patch b/multitech/recipes/compat-wireless/files/wl12xx_sdio.patch deleted file mode 100644 index 9db2a03..0000000 --- a/multitech/recipes/compat-wireless/files/wl12xx_sdio.patch +++ /dev/null @@ -1,51 +0,0 @@ ---- a/drivers/net/wireless/wl12xx/sdio.c 2011-12-20 06:20:19.000000000 -0600 -+++ b/drivers/net/wireless/wl12xx/sdio.c 2012-06-20 12:51:18.000000000 -0500 -@@ -169,6 +169,10 @@ - struct sdio_func *func = wl_to_func(wl); - int ret; - -+ // MTPCIE: -+ if (wl->set_power) -+ wl->set_power(1); -+ - /* If enabled, tell runtime PM not to power off the card */ - if (pm_runtime_enabled(&func->dev)) { - ret = pm_runtime_get_sync(&func->dev); -@@ -193,6 +197,10 @@ - struct sdio_func *func = wl_to_func(wl); - int ret; - -+ // MTPCIE: -+ if (wl->set_power) -+ wl->set_power(0); -+ - sdio_disable_func(func); - sdio_release_host(func); - -@@ -265,14 +273,18 @@ - wl->irq = wlan_data->irq; - if (wl->ref_clock < 0) - wl->ref_clock = wlan_data->board_ref_clock; -- if (wl->tcxo_clock < 0) -- wl->tcxo_clock = wlan_data->board_tcxo_clock; -- wl->platform_quirks = wlan_data->platform_quirks; -- -- if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) -- irqflags = IRQF_TRIGGER_RISING; -- else -- irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; -+ // MTPCIE: -+ if (wlan_data->set_power) -+ wl->set_power = wlan_data->set_power; -+ -+ //if (wl->tcxo_clock < 0) -+ // wl->tcxo_clock = wlan_data->board_tcxo_clock; -+ //wl->platform_quirks = wlan_data->platform_quirks; -+ -+ //if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) -+ irqflags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING; -+ //else -+ // irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; - - ret = request_threaded_irq(wl->irq, wl1271_hardirq, wl1271_irq, - irqflags, diff --git a/multitech/recipes/compat-wireless/mt100eocg-pcie-dk/wl12xx_sdio.patch b/multitech/recipes/compat-wireless/mt100eocg-pcie-dk/wl12xx_sdio.patch new file mode 100644 index 0000000..9db2a03 --- /dev/null +++ b/multitech/recipes/compat-wireless/mt100eocg-pcie-dk/wl12xx_sdio.patch @@ -0,0 +1,51 @@ +--- a/drivers/net/wireless/wl12xx/sdio.c 2011-12-20 06:20:19.000000000 -0600 ++++ b/drivers/net/wireless/wl12xx/sdio.c 2012-06-20 12:51:18.000000000 -0500 +@@ -169,6 +169,10 @@ + struct sdio_func *func = wl_to_func(wl); + int ret; + ++ // MTPCIE: ++ if (wl->set_power) ++ wl->set_power(1); ++ + /* If enabled, tell runtime PM not to power off the card */ + if (pm_runtime_enabled(&func->dev)) { + ret = pm_runtime_get_sync(&func->dev); +@@ -193,6 +197,10 @@ + struct sdio_func *func = wl_to_func(wl); + int ret; + ++ // MTPCIE: ++ if (wl->set_power) ++ wl->set_power(0); ++ + sdio_disable_func(func); + sdio_release_host(func); + +@@ -265,14 +273,18 @@ + wl->irq = wlan_data->irq; + if (wl->ref_clock < 0) + wl->ref_clock = wlan_data->board_ref_clock; +- if (wl->tcxo_clock < 0) +- wl->tcxo_clock = wlan_data->board_tcxo_clock; +- wl->platform_quirks = wlan_data->platform_quirks; +- +- if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) +- irqflags = IRQF_TRIGGER_RISING; +- else +- irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; ++ // MTPCIE: ++ if (wlan_data->set_power) ++ wl->set_power = wlan_data->set_power; ++ ++ //if (wl->tcxo_clock < 0) ++ // wl->tcxo_clock = wlan_data->board_tcxo_clock; ++ //wl->platform_quirks = wlan_data->platform_quirks; ++ ++ //if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) ++ irqflags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING; ++ //else ++ // irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; + + ret = request_threaded_irq(wl->irq, wl1271_hardirq, wl1271_irq, + irqflags, diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch deleted file mode 100644 index 2554386..0000000 --- a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-at91-mci-clock-debug.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: linux-2.6.39.4/drivers/mmc/host/at91_mci.c -=================================================================== ---- linux-2.6.39.4.orig/drivers/mmc/host/at91_mci.c 2012-09-10 14:29:38.217293988 -0500 -+++ linux-2.6.39.4/drivers/mmc/host/at91_mci.c 2012-09-10 14:41:35.352414089 -0500 -@@ -724,7 +724,8 @@ - else - clkdiv = (at91_master_clock / ios->clock) / 2; - -- pr_debug("clkdiv = %d. mcck = %ld\n", clkdiv, -+ pr_info("MMC: requested clock: %ld\n", ios->clock); -+ pr_info("MMC: clkdiv = %d. mcck = %ld\n", clkdiv, - at91_master_clock / (2 * (clkdiv + 1))); - } - if (ios->bus_width == MMC_BUS_WIDTH_4 && host->board->wire4) { diff --git a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch b/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch deleted file mode 100644 index 9f8303a..0000000 --- a/multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-mmc-core-maxclock.patch +++ /dev/null @@ -1,28 +0,0 @@ -Index: linux-2.6.39.4/drivers/mmc/core/core.c -=================================================================== ---- linux-2.6.39.4.orig/drivers/mmc/core/core.c 2011-08-03 14:43:28.000000000 -0500 -+++ linux-2.6.39.4/drivers/mmc/core/core.c 2012-09-12 10:45:57.246686939 -0500 -@@ -46,7 +46,10 @@ - * So we allow it it to be disabled. - */ - int use_spi_crc = 1; -+/* MTPCIE: default max clock to 13MHz */ -+int max_clock = 13000000; - module_param(use_spi_crc, bool, 0); -+module_param(max_clock, int, 0); - - /* - * We normally treat cards as removed during suspend if they are not -@@ -628,6 +631,12 @@ - - if (ios->clock > 0) - mmc_set_ungated(host); -+ -+ if (max_clock > 0 && ios->clock > max_clock) { -+ ios->clock = max_clock; -+ printk("mmc: forcing clock to %u\n", ios->clock); -+ } -+ - host->ops->set_ios(host, ios); - } - diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-at91-mci-clock-debug.patch b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-at91-mci-clock-debug.patch new file mode 100644 index 0000000..2554386 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-at91-mci-clock-debug.patch @@ -0,0 +1,14 @@ +Index: linux-2.6.39.4/drivers/mmc/host/at91_mci.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/mmc/host/at91_mci.c 2012-09-10 14:29:38.217293988 -0500 ++++ linux-2.6.39.4/drivers/mmc/host/at91_mci.c 2012-09-10 14:41:35.352414089 -0500 +@@ -724,7 +724,8 @@ + else + clkdiv = (at91_master_clock / ios->clock) / 2; + +- pr_debug("clkdiv = %d. mcck = %ld\n", clkdiv, ++ pr_info("MMC: requested clock: %ld\n", ios->clock); ++ pr_info("MMC: clkdiv = %d. mcck = %ld\n", clkdiv, + at91_master_clock / (2 * (clkdiv + 1))); + } + if (ios->bus_width == MMC_BUS_WIDTH_4 && host->board->wire4) { diff --git a/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mmc-core-maxclock.patch b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mmc-core-maxclock.patch new file mode 100644 index 0000000..9f8303a --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/mt100eocg-pcie-dk/linux-2.6.39.4-mmc-core-maxclock.patch @@ -0,0 +1,28 @@ +Index: linux-2.6.39.4/drivers/mmc/core/core.c +=================================================================== +--- linux-2.6.39.4.orig/drivers/mmc/core/core.c 2011-08-03 14:43:28.000000000 -0500 ++++ linux-2.6.39.4/drivers/mmc/core/core.c 2012-09-12 10:45:57.246686939 -0500 +@@ -46,7 +46,10 @@ + * So we allow it it to be disabled. + */ + int use_spi_crc = 1; ++/* MTPCIE: default max clock to 13MHz */ ++int max_clock = 13000000; + module_param(use_spi_crc, bool, 0); ++module_param(max_clock, int, 0); + + /* + * We normally treat cards as removed during suspend if they are not +@@ -628,6 +631,12 @@ + + if (ios->clock > 0) + mmc_set_ungated(host); ++ ++ if (max_clock > 0 && ios->clock > max_clock) { ++ ios->clock = max_clock; ++ printk("mmc: forcing clock to %u\n", ios->clock); ++ } ++ + host->ops->set_ios(host, ios); + } + -- cgit v1.2.3 From c4f1a399934177d3e174203a12ea23496f4b409a Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 13 Feb 2013 11:22:57 -0600 Subject: conf/machine: add mtocgd3 --- multitech/conf/machine/mtocgd3.conf | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 multitech/conf/machine/mtocgd3.conf (limited to 'multitech') diff --git a/multitech/conf/machine/mtocgd3.conf b/multitech/conf/machine/mtocgd3.conf new file mode 100644 index 0000000..b7659bd --- /dev/null +++ b/multitech/conf/machine/mtocgd3.conf @@ -0,0 +1,32 @@ +#@TYPE: Machine +#@Name: Multi-Tech MTOCGD3 +#@DESCRIPTION: Machine configuration for the MultiConnect OCG-D MTOCGD3 hardware + +TARGET_ARCH = "arm" + +PREFERRED_PROVIDER_virtual/kernel = "linux" + +PREFERRED_VERSION_linux = "2.6.39.4" +MACHINE_KERNEL_PR = "r2" +PREFERRED_VERSION_mts-io ?= "0.5.1+git" + +KERNEL_IMAGETYPE = "uImage" +UBOOT_MACHINE = "at91sam9x5ek_nandflash_config" +PREFERRED_VERSION_u-boot = "2012.10" + +AT91BOOTSTRAP_BOARD = "at91sam9x5eknf_uboot" +PREFERRED_VERSION_at91bootstrap = "3.5.2" + +#don't try to access tty1 +USE_VT = "0" + +MACHINE_FEATURES = "kernel26 ext2 usbhost" +EXTRA_IMAGEDEPENDS += "at91bootstrap u-boot" + +# used by sysvinit_2 +SERIAL_CONSOLE = "115200 ttyS0" + +IMAGE_FSTYPES ?= "jffs2" +EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --pagesize=0x800 -n" + +require conf/machine/include/tune-arm926ejs.inc -- cgit v1.2.3 From d354a230fb5ec512ca8f7b89ffc2e8679945eade Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 13 Feb 2013 11:23:51 -0600 Subject: at91bootstrap: add 3.5.2 for mtocgd3 --- .../at91bootstrap-3.5.2-add-install.patch | 20 +++++++ .../at91sam9x5_4bit_pmecc_header.bin | 1 + .../create_4bit_pmecc_header.rb | 5 ++ .../mtocgd3/at91bootstrap-3.5.2-mtocgd3.patch | 65 ++++++++++++++++++++++ .../recipes/at91bootstrap/at91bootstrap_3.5.2.bb | 25 +++++++++ .../recipes/at91bootstrap/at91bootstrap_3.5.inc | 27 +++++++++ 6 files changed, 143 insertions(+) create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91bootstrap-3.5.2-add-install.patch create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91sam9x5_4bit_pmecc_header.bin create mode 100755 multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/create_4bit_pmecc_header.rb create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/mtocgd3/at91bootstrap-3.5.2-mtocgd3.patch create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap_3.5.2.bb create mode 100644 multitech/recipes/at91bootstrap/at91bootstrap_3.5.inc (limited to 'multitech') diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91bootstrap-3.5.2-add-install.patch b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91bootstrap-3.5.2-add-install.patch new file mode 100644 index 0000000..6f007b9 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91bootstrap-3.5.2-add-install.patch @@ -0,0 +1,20 @@ +Index: at91bootstrap-3.5.2/Makefile +=================================================================== +--- at91bootstrap-3.5.2.orig/Makefile 2013-02-08 14:38:40.660054339 -0600 ++++ at91bootstrap-3.5.2/Makefile 2013-02-08 14:41:30.626272862 -0600 +@@ -359,4 +359,15 @@ + + PHONY+=tarball tarballx + ++install: ++ -install -d $(DESTDIR) ++ install $(AT91BOOTSTRAP) $(DESTDIR)/$(IMAGE) ++ -rm -f $(DESTDIR)/$(SYMLINK) ++ (cd ${DESTDIR} ; \ ++ ln -sf ${IMAGE} ${SYMLINK} \ ++ ) ++ ++ ++PHONY+=install ++ + .PHONY: $(PHONY) diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91sam9x5_4bit_pmecc_header.bin b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91sam9x5_4bit_pmecc_header.bin new file mode 100644 index 0000000..f8d6073 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/at91sam9x5_4bit_pmecc_header.bin @@ -0,0 +1 @@ +$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À \ No newline at end of file diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/create_4bit_pmecc_header.rb b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/create_4bit_pmecc_header.rb new file mode 100755 index 0000000..780d728 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/create_4bit_pmecc_header.rb @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby + +52.times do + print ["052490c0"].pack('H*') +end diff --git a/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/mtocgd3/at91bootstrap-3.5.2-mtocgd3.patch b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/mtocgd3/at91bootstrap-3.5.2-mtocgd3.patch new file mode 100644 index 0000000..97ae327 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap-3.5.2/mtocgd3/at91bootstrap-3.5.2-mtocgd3.patch @@ -0,0 +1,65 @@ +Index: at91bootstrap-3.5.2/board/at91sam9x5ek/at91sam9x5eknf_uboot_defconfig +=================================================================== +--- at91bootstrap-3.5.2.orig/board/at91sam9x5ek/at91sam9x5eknf_uboot_defconfig 2013-02-08 14:05:34.034501648 -0600 ++++ at91bootstrap-3.5.2/board/at91sam9x5ek/at91sam9x5eknf_uboot_defconfig 2013-02-08 14:07:19.010677033 -0600 +@@ -42,7 +42,8 @@ + ALLOW_PIO3=y + CONFIG_HAS_PIO3=y + CPU_HAS_PMECC=y +-CONFIG_LOAD_ONE_WIRE=y ++# MTS: don't load one wire ++# CONFIG_LOAD_ONE_WIRE is not set + + # + # Memory selection +@@ -102,4 +103,5 @@ + # CONFIG_USER_HW_INIT is not set + CONFIG_THUMB=y + CONFIG_SCLK=y +-CONFIG_DISABLE_WATCHDOG=y ++# MTS: don't disable watchdog ++# CONFIG_DISABLE_WATCHDOG is not set +Index: at91bootstrap-3.5.2/board/at91sam9x5ek/at91sam9x5ek.h +=================================================================== +--- at91bootstrap-3.5.2.orig/board/at91sam9x5ek/at91sam9x5ek.h 2013-02-08 14:03:42.050364515 -0600 ++++ at91bootstrap-3.5.2/board/at91sam9x5ek/at91sam9x5ek.h 2013-02-08 14:07:56.500399983 -0600 +@@ -95,7 +95,8 @@ + #define CONFIG_SYS_NAND_CLE_PIN AT91C_PIN_PD(3) + #define CONFIG_SYS_NAND_ENABLE_PIN AT91C_PIN_PD(4) + +-#define PMECC_ERROR_CORR_BITS 2 ++/* MTS: use 4-bit PMECC */ ++#define PMECC_ERROR_CORR_BITS 4 + #define PMECC_SECTOR_SIZE 512 + + #define CONFIG_LOOKUP_TABLE_ALPHA_OFFSET 0xC000 +Index: at91bootstrap-3.5.2/board/at91sam9x5ek/at91sam9x5ek.c +=================================================================== +--- at91bootstrap-3.5.2.orig/board/at91sam9x5ek/at91sam9x5ek.c 2013-02-08 14:03:57.562179405 -0600 ++++ at91bootstrap-3.5.2/board/at91sam9x5ek/at91sam9x5ek.c 2013-02-08 14:11:56.477737850 -0600 +@@ -268,10 +268,9 @@ + + reg = readl(AT91C_BASE_CCFG + CCFG_EBICSA); + reg |= AT91C_EBI_CS3A_SM; +- if ((get_cm_rev() == 'A') && (get_cm_vendor() == VENDOR_EMBEST)) +- reg &= ~AT91C_EBI_NFD0_ON_D16; +- else +- reg |= (AT91C_EBI_DDR_MP_EN | AT91C_EBI_NFD0_ON_D16); ++ /* MTR2 Rev A NAND is on D0-D7, DDR_MP_EN must be disabled */ ++ reg &= ~AT91C_EBI_NFD0_ON_D16; ++ reg &= ~AT91C_EBI_DDR_MP_EN; + + reg &= ~AT91C_EBI_DRV; + writel(reg, AT91C_BASE_CCFG + CCFG_EBICSA); +@@ -300,10 +299,7 @@ + | AT91_SMC_TDF_(1)), + AT91C_BASE_SMC + SMC_CTRL3); + +- /* Configure the PIO controller */ +- if ((get_cm_rev() == 'A') && (get_cm_vendor() == VENDOR_EMBEST)) +- pio_configure(nand_pins_lo); +- else ++ /* MTR2 */ + pio_configure(nand_pins_hi); + + writel((1 << AT91C_ID_PIOC_D), (PMC_PCER + AT91C_BASE_PMC)); diff --git a/multitech/recipes/at91bootstrap/at91bootstrap_3.5.2.bb b/multitech/recipes/at91bootstrap/at91bootstrap_3.5.2.bb new file mode 100644 index 0000000..0957496 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap_3.5.2.bb @@ -0,0 +1,25 @@ +require at91bootstrap_3.5.inc + +PR = "r0" + +SRC_URI = "https://github.com/linux4sam/at91bootstrap/archive/v3.5.2.tar.gz \ + file://at91bootstrap-3.5.2-add-install.patch" + +SRC_URI_append_mtocgd3 = " file://at91bootstrap-3.5.2-mtocgd3.patch \ + file://at91sam9x5_4bit_pmecc_header.bin \ + " + +SRC_URI[md5sum] = "5f818dcd0d4d0fe1f0447b35d3f050eb" +SRC_URI[sha256sum] = "cea3d75470000f1eff64e1f9dd356a1d7264b0a33b8af9e9461ab64653a6b6fb" + +# generate a bootstrap file padded with the header needed for 4-bit PMECC +# The padded file can be flashed via u-boot without any need to set the PMECC header using SAM-BA +do_pad_4bit_pmecc() { + cp -f ${WORKDIR}/at91sam9x5_4bit_pmecc_header.bin ${DEPLOY_DIR_IMAGE}/at91bootstrap_pmecc_padded.bin + cat ${DEPLOY_DIR_IMAGE}/at91bootstrap.bin >> ${DEPLOY_DIR_IMAGE}/at91bootstrap_pmecc_padded.bin +} + +do_install_append_mtocgd3() { + do_pad_4bit_pmecc +} + diff --git a/multitech/recipes/at91bootstrap/at91bootstrap_3.5.inc b/multitech/recipes/at91bootstrap/at91bootstrap_3.5.inc new file mode 100644 index 0000000..ac147c0 --- /dev/null +++ b/multitech/recipes/at91bootstrap/at91bootstrap_3.5.inc @@ -0,0 +1,27 @@ +DESCRIPTION = "at91bootstrap: loaded into internal SRAM by AT91 BootROM" +SECTION = "bootloaders" + +PARALLEL_MAKE = "" + +PACKAGE_ARCH = "${MACHINE_ARCH}" +EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} DESTDIR=${DEPLOY_DIR_IMAGE} REVISION=${PR}" + +do_compile () { + unset LDFLAGS + unset CFLAGS + unset CPPFLAGS + + rm -Rf ${S}/binaries + for board in ${AT91BOOTSTRAP_BOARD} ; do + oe_runmake mrproper + filename=`find board -name ${board}_defconfig` + if ! [ "x$filename" == "x" ] ; then + cp $filename .config + oe_runmake + oe_runmake install + else + echo "${board} could not be built" + exit 1 + fi + done +} -- cgit v1.2.3 From 345816b9381d2d0d9df8047596f0bc5c03d8a8d8 Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 13 Feb 2013 11:24:42 -0600 Subject: u-boot: add 2012.10 for mtocgd3 --- .../mtocgd3/u-boot-2012.10-mtocgd3.patch | 344 +++++++++++++++++++++ .../u-boot-2010.06-macb-autoneg-timeout.patch | 53 ++++ .../u-boot-2012.10-sam9x5-eth-mii-fix.patch | 27 ++ multitech/recipes/u-boot/u-boot_2012.10.bb | 34 ++ 4 files changed, 458 insertions(+) create mode 100644 multitech/recipes/u-boot/u-boot-2012.10/mtocgd3/u-boot-2012.10-mtocgd3.patch create mode 100644 multitech/recipes/u-boot/u-boot-2012.10/u-boot-2010.06-macb-autoneg-timeout.patch create mode 100644 multitech/recipes/u-boot/u-boot-2012.10/u-boot-2012.10-sam9x5-eth-mii-fix.patch create mode 100644 multitech/recipes/u-boot/u-boot_2012.10.bb (limited to 'multitech') diff --git a/multitech/recipes/u-boot/u-boot-2012.10/mtocgd3/u-boot-2012.10-mtocgd3.patch b/multitech/recipes/u-boot/u-boot-2012.10/mtocgd3/u-boot-2012.10-mtocgd3.patch new file mode 100644 index 0000000..dbe3247 --- /dev/null +++ b/multitech/recipes/u-boot/u-boot-2012.10/mtocgd3/u-boot-2012.10-mtocgd3.patch @@ -0,0 +1,344 @@ +Index: git/board/atmel/at91sam9x5ek/at91sam9x5ek.c +=================================================================== +--- git.orig/board/atmel/at91sam9x5ek/at91sam9x5ek.c 2013-02-11 10:22:37.000000000 -0600 ++++ git/board/atmel/at91sam9x5ek/at91sam9x5ek.c 2013-02-11 13:52:43.930054966 -0600 +@@ -60,8 +60,6 @@ + /* Enable CS3 */ + csa = readl(&matrix->ebicsa); + csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA; +- /* NAND flash on D16 */ +- csa |= AT91_MATRIX_NFD0_ON_D16; + + /* Configure IO drive */ + csa &= ~AT91_MATRIX_EBI_EBI_IOSR_NORMAL; +@@ -115,8 +113,9 @@ + + #ifdef CONFIG_MACB + if (has_emac0()) ++ /* MTOCGD3: use phy addr 5 for ethernet switch */ + rc = macb_eth_initialize(0, +- (void *)ATMEL_BASE_EMAC0, 0x00); ++ (void *)ATMEL_BASE_EMAC0, 0x05); + if (has_emac1()) + rc = macb_eth_initialize(1, + (void *)ATMEL_BASE_EMAC1, 0x00); +Index: git/include/configs/at91sam9x5ek.h +=================================================================== +--- git.orig/include/configs/at91sam9x5ek.h 2013-02-11 10:22:38.000000000 -0600 ++++ git/include/configs/at91sam9x5ek.h 2013-02-11 13:56:13.890363608 -0600 +@@ -54,6 +54,7 @@ + #define CONFIG_USART_ID ATMEL_ID_SYS + + /* LCD */ ++/* MTOCGD3 has no LCD + #define CONFIG_LCD + #define LCD_BPP LCD_COLOR16 + #define LCD_OUTPUT_BPP 24 +@@ -65,6 +66,7 @@ + #define CONFIG_ATMEL_HLCD + #define CONFIG_ATMEL_LCD_RGB565 + #define CONFIG_SYS_CONSOLE_IS_IN_ENV ++*/ + + #define CONFIG_BOOTDELAY 3 + +@@ -120,12 +122,14 @@ + /* our CLE is AD22 */ + #define CONFIG_SYS_NAND_MASK_CLE (1 << 22) + #define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PD4 +-#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PD5 ++/* MTOCGD3: nand ready is on PC31 */ ++#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC31 + + /* PMECC & PMERRLOC */ + #define CONFIG_ATMEL_NAND_HWECC 1 + #define CONFIG_ATMEL_NAND_HW_PMECC 1 +-#define CONFIG_PMECC_CAP 2 ++/* MTOCGD3: 4-bit PMECC */ ++#define CONFIG_PMECC_CAP 4 + #define CONFIG_PMECC_SECTOR_SIZE 512 + #define CONFIG_PMECC_INDEX_TABLE_OFFSET 0x8000 + +@@ -140,9 +144,14 @@ + + /* Ethernet */ + #define CONFIG_MACB +-#define CONFIG_RMII ++/* MTOCGD3 is MII */ ++#undef CONFIG_RMII + #define CONFIG_NET_RETRY_COUNT 20 +-#define CONFIG_MACB_SEARCH_PHY ++/* MTOCGD3: MAC is connected to fixed-speed PHY on ethernet switch */ ++#undef CONFIG_MACB_SEARCH_PHY ++#define CONFIG_FIXED_PHY 1 ++/* enable MII command */ ++#define CONFIG_CMD_MII 1 + + #define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */ + +@@ -155,9 +164,8 @@ + #define CONFIG_ENV_OFFSET 0xc0000 + #define CONFIG_ENV_OFFSET_REDUND 0x100000 + #define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */ +-#define CONFIG_BOOTCOMMAND "nand read " \ +- "0x22000000 0x200000 0x300000; " \ +- "bootm 0x22000000" ++/* MTOCGD3: read from env variables for boot */ ++#define CONFIG_BOOTCOMMAND "nboot.jffs2 ${loadaddr} 0 ${kernel_addr}; bootm ${loadaddr}" + #else + #ifdef CONFIG_SYS_USE_SPIFLASH + /* bootstrap + u-boot + env + linux in spi flash */ +@@ -172,11 +180,8 @@ + #endif + #endif + +-#define CONFIG_BOOTARGS "mem=128M console=ttyS0,115200 " \ +- "mtdparts=atmel_nand:" \ +- "8M(bootstrap/uboot/kernel)ro,-(rootfs) " \ +- "root=/dev/mtdblock1 rw " \ +- "rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs" ++/* MTOCGD3: rootfs is jffs2 */ ++#define CONFIG_BOOTARGS "mem=128M console=ttyS0,115200 root=/dev/mtdblock8 ro rootfstype=jffs2" + + #define CONFIG_BAUDRATE 115200 + +@@ -199,4 +204,22 @@ + #error CONFIG_USE_IRQ not supported + #endif + ++// MTOCGD3 defaults ++#define CONFIG_ENV_OVERWRITE 1 /* Allow Overwrite of serial# & ethaddr */ ++#define CONFIG_ETHADDR 00:08:00:87:00:02 ++#define CONFIG_IPADDR 192.168.2.1 ++#define CONFIG_NETMASK 255.255.255.0 ++#define CONFIG_SERVERIP 192.168.2.2 ++#define CONFIG_HOSTNAME AT91SAM9G25 ++#define CONFIG_LOADADDR 0x22000000 ++ ++// MTOCGD3 - enable watchdog ++#define CONFIG_AT91SAM9_WATCHDOG 1 ++#define CONFIG_HW_WATCHDOG 1 ++ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ "kernel_addr=0x200000\0" \ ++ "" ++ ++ + #endif +Index: git/drivers/net/macb.c +=================================================================== +--- git.orig/drivers/net/macb.c 2013-02-11 13:52:43.930054966 -0600 ++++ git/drivers/net/macb.c 2013-02-11 13:52:43.930054966 -0600 +@@ -86,6 +86,18 @@ + #define TXBUF_WRAP 0x40000000 + #define TXBUF_USED 0x80000000 + ++#define BIT0 (1<<0) ++#define BIT1 (1<<1) ++#define BIT2 (1<<2) ++#define BIT3 (1<<3) ++#define BIT4 (1<<4) ++#define BIT5 (1<<5) ++#define BIT6 (1<<6) ++#define BIT7 (1<<7) ++#define BIT8 (1<<8) ++#define BIT9 (1<<9) ++#define BIT10 (1<<10) ++ + struct macb_device { + void *regs; + +@@ -105,6 +117,7 @@ + const struct device *dev; + struct eth_device netdev; + unsigned short phy_addr; ++ unsigned short ext_phy_addr; + }; + #define to_macb(_nd) container_of(_nd, struct macb_device, netdev) + +@@ -113,6 +126,13 @@ + unsigned long netctl; + unsigned long netstat; + unsigned long frame; ++ unsigned short phya; ++ ++ // use extended phy addr if set, else use fixed phy addr ++ if (macb->ext_phy_addr != 0) ++ phya = macb->ext_phy_addr; ++ else ++ phya = macb->phy_addr; + + netctl = macb_readl(macb, NCR); + netctl |= MACB_BIT(MPE); +@@ -120,7 +140,7 @@ + + frame = (MACB_BF(SOF, 1) + | MACB_BF(RW, 1) +- | MACB_BF(PHYA, macb->phy_addr) ++ | MACB_BF(PHYA, phya) + | MACB_BF(REGA, reg) + | MACB_BF(CODE, 2) + | MACB_BF(DATA, value)); +@@ -140,6 +160,14 @@ + unsigned long netctl; + unsigned long netstat; + unsigned long frame; ++ unsigned short phya; ++ ++ // use extended phy addr if set, else use fixed phy addr ++ if (macb->ext_phy_addr != 0) ++ phya = macb->ext_phy_addr; ++ else ++ phya = macb->phy_addr; ++ + + netctl = macb_readl(macb, NCR); + netctl |= MACB_BIT(MPE); +@@ -147,7 +175,7 @@ + + frame = (MACB_BF(SOF, 1) + | MACB_BF(RW, 2) +- | MACB_BF(PHYA, macb->phy_addr) ++ | MACB_BF(PHYA, phya) + | MACB_BF(REGA, reg) + | MACB_BF(CODE, 2)); + macb_writel(macb, MAN, frame); +@@ -167,15 +195,59 @@ + + #if defined(CONFIG_CMD_MII) + ++// Micrel switch support -- converts SMI register address to split reg and phy address fields ++void convert_smi_reg(u8 smi_reg, u8 *reg, u8 *phy_adr) ++{ ++ u8 new_phy_adr = 0; ++ ++ // lower 5 bits go in reg ++ if (reg) ++ *reg = smi_reg & 0x1f; ++ ++ // upper 3 bits go in phy_adr bits 4,3,0 ++ if (smi_reg & BIT5) ++ new_phy_adr |= BIT0; ++ if (smi_reg & BIT6) ++ new_phy_adr |= BIT3; ++ if (smi_reg & BIT7) ++ new_phy_adr |= BIT4; ++ ++ // bits 1 and 2 are always 1 ++ new_phy_adr |= BIT1; ++ new_phy_adr |= BIT2; ++ ++ if (phy_adr) ++ *phy_adr = new_phy_adr; ++} ++ + int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value) + { + struct eth_device *dev = eth_get_dev_by_name(devname); + struct macb_device *macb = to_macb(dev); ++ u8 smi_reg = reg; ++ u8 phy_arg = phy_adr; ++ u8 reg_arg = reg; ++ ++ if (phy_adr == 0 || phy_adr > 6) ++ return -1; ++ ++ // ---micrel switch support--- ++ // use phy_adr 0x06 to designate that reg is an SMI command and we should ++ // construct phy_adr and reg values for accessing the control registers ++ if (phy_adr == 0x06) { ++ convert_smi_reg(smi_reg, ®_arg, &phy_arg); ++ //debug("reading SMI reg %x, phy_adr %x, reg %x\n", ++ // smi_reg, phy_arg, reg_arg); ++ debug("reading SMI reg %x\n", smi_reg); ++ } + +- if ( macb->phy_addr != phy_adr ) +- return -1; ++ // allow reading any phy addr value (ethernet switch) ++ macb->ext_phy_addr = phy_arg; ++ ++ *value = macb_mdio_read(macb, reg_arg); + +- *value = macb_mdio_read(macb, reg); ++ // reset to use fixed phy for later calls ++ macb->ext_phy_addr = 0; + + return 0; + } +@@ -184,11 +256,30 @@ + { + struct eth_device *dev = eth_get_dev_by_name(devname); + struct macb_device *macb = to_macb(dev); ++ u8 smi_reg = reg; ++ u8 phy_arg = phy_adr; ++ u8 reg_arg = reg; ++ ++ if (phy_adr == 0 || phy_adr > 6) ++ return -1; ++ ++ // ---micrel switch support--- ++ // use phy_adr 0x06 to designate that reg is an SMI command and we should ++ // construct phy_adr and reg values for accessing the control registers ++ if (phy_adr == 0x06) { ++ convert_smi_reg(smi_reg, ®_arg, &phy_arg); ++ //debug("writing value %x to SMI reg %x, phy_adr %x, reg %x\n", ++ // value, smi_reg, phy_arg, reg_arg); ++ debug("writing value %x to SMI reg %x\n", value, smi_reg); ++ } + +- if ( macb->phy_addr != phy_adr ) +- return -1; ++ // allow using any phy addr value (ethernet switch) ++ macb->ext_phy_addr = phy_arg; + +- macb_mdio_write(macb, reg, value); ++ macb_mdio_write(macb, reg_arg, value); ++ ++ // reset to use fixed phy for later calls ++ macb->ext_phy_addr = 0; + + return 0; + } +@@ -396,6 +487,14 @@ + return 0; + } + ++#ifdef CONFIG_FIXED_PHY ++ ncfgr = macb_readl(macb, NCFGR); ++ // MTOCGD3: force link to 100, full duplex ++ ncfgr |= MACB_BIT(SPD); ++ ncfgr |= MACB_BIT(FD); ++ macb_writel(macb, NCFGR, ncfgr); ++ return 1; ++#else + status = macb_mdio_read(macb, MII_BMSR); + if (!(status & BMSR_LSTATUS)) { + /* Try to re-negotiate if we don't have link already. */ +@@ -428,6 +527,7 @@ + macb_writel(macb, NCFGR, ncfgr); + return 1; + } ++#endif /* CONFIG_FIXED_PHY */ + } + + static int macb_init(struct eth_device *netdev, bd_t *bd) +@@ -554,6 +654,7 @@ + + macb->regs = regs; + macb->phy_addr = phy_addr; ++ macb->ext_phy_addr = 0; + + sprintf(netdev->name, "macb%d", id); + netdev->init = macb_init; +@@ -583,6 +684,10 @@ + #if defined(CONFIG_CMD_MII) + miiphy_register(netdev->name, macb_miiphy_read, macb_miiphy_write); + #endif ++ ++ // MTOCGD3: enable micrel switch ++ macb_miiphy_write("macb0", 6, 1, 0x41); ++ + return 0; + } + diff --git a/multitech/recipes/u-boot/u-boot-2012.10/u-boot-2010.06-macb-autoneg-timeout.patch b/multitech/recipes/u-boot/u-boot-2012.10/u-boot-2010.06-macb-autoneg-timeout.patch new file mode 100644 index 0000000..5294b1a --- /dev/null +++ b/multitech/recipes/u-boot/u-boot-2012.10/u-boot-2010.06-macb-autoneg-timeout.patch @@ -0,0 +1,53 @@ +Index: u-boot-2010.06/drivers/net/macb.c +=================================================================== +--- u-boot-2010.06.orig/drivers/net/macb.c 2013-01-04 16:57:21.460051123 -0600 ++++ u-boot-2010.06/drivers/net/macb.c 2013-01-04 17:03:28.880052058 -0600 +@@ -57,7 +57,7 @@ + #define CONFIG_SYS_MACB_RX_RING_SIZE (CONFIG_SYS_MACB_RX_BUFFER_SIZE / 128) + #define CONFIG_SYS_MACB_TX_RING_SIZE 16 + #define CONFIG_SYS_MACB_TX_TIMEOUT 1000 +-#define CONFIG_SYS_MACB_AUTONEG_TIMEOUT 5000000 ++#define CONFIG_SYS_MACB_AUTONEG_TIMEOUT 3000000 + + struct macb_dma_desc { + u32 addr; +@@ -322,11 +322,12 @@ + return 0; + } + +-static void macb_phy_reset(struct macb_device *macb) ++static u16 macb_phy_reset(struct macb_device *macb) + { + struct eth_device *netdev = &macb->netdev; + int i; +- u16 status, adv; ++ u16 status = 0; ++ u16 adv; + + adv = ADVERTISE_CSMA | ADVERTISE_ALL; + macb_mdio_write(macb, MII_ADVERTISE, adv); +@@ -346,6 +347,8 @@ + else + printf("%s: Autonegotiation timed out (status=0x%04x)\n", + netdev->name, status); ++ ++ return status; + } + + #ifdef CONFIG_MACB_SEARCH_PHY +@@ -397,14 +400,7 @@ + status = macb_mdio_read(macb, MII_BMSR); + if (!(status & BMSR_LSTATUS)) { + /* Try to re-negotiate if we don't have link already. */ +- macb_phy_reset(macb); +- +- for (i = 0; i < CONFIG_SYS_MACB_AUTONEG_TIMEOUT / 100; i++) { +- status = macb_mdio_read(macb, MII_BMSR); +- if (status & BMSR_LSTATUS) +- break; +- udelay(100); +- } ++ status = macb_phy_reset(macb); + } + + if (!(status & BMSR_LSTATUS)) { diff --git a/multitech/recipes/u-boot/u-boot-2012.10/u-boot-2012.10-sam9x5-eth-mii-fix.patch b/multitech/recipes/u-boot/u-boot-2012.10/u-boot-2012.10-sam9x5-eth-mii-fix.patch new file mode 100644 index 0000000..0f41ac4 --- /dev/null +++ b/multitech/recipes/u-boot/u-boot-2012.10/u-boot-2012.10-sam9x5-eth-mii-fix.patch @@ -0,0 +1,27 @@ +Index: git/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c +=================================================================== +--- git.orig/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c 2013-02-11 10:22:35.000000000 -0600 ++++ git/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c 2013-02-11 10:32:59.652182120 -0600 +@@ -206,14 +206,14 @@ + #ifndef CONFIG_RMII + /* Only emac0 support MII */ + if (has_emac0()) { +- at91_set_b_periph(AT91_PIO_PORTB, 16, 0); /* ECRS */ +- at91_set_b_periph(AT91_PIO_PORTB, 17, 0); /* ECOL */ +- at91_set_b_periph(AT91_PIO_PORTB, 13, 0); /* ERX2 */ +- at91_set_b_periph(AT91_PIO_PORTB, 14, 0); /* ERX3 */ +- at91_set_b_periph(AT91_PIO_PORTB, 15, 0); /* ERXCK */ +- at91_set_b_periph(AT91_PIO_PORTB, 11, 0); /* ETX2 */ +- at91_set_b_periph(AT91_PIO_PORTB, 12, 0); /* ETX3 */ +- at91_set_b_periph(AT91_PIO_PORTB, 8, 0); /* ETXER */ ++ at91_set_a_periph(AT91_PIO_PORTB, 16, 0); /* ECRS */ ++ at91_set_a_periph(AT91_PIO_PORTB, 17, 0); /* ECOL */ ++ at91_set_a_periph(AT91_PIO_PORTB, 13, 0); /* ERX2 */ ++ at91_set_a_periph(AT91_PIO_PORTB, 14, 0); /* ERX3 */ ++ at91_set_a_periph(AT91_PIO_PORTB, 15, 0); /* ERXCK */ ++ at91_set_a_periph(AT91_PIO_PORTB, 11, 0); /* ETX2 */ ++ at91_set_a_periph(AT91_PIO_PORTB, 12, 0); /* ETX3 */ ++ at91_set_a_periph(AT91_PIO_PORTB, 8, 0); /* ETXER */ + } + #endif + } diff --git a/multitech/recipes/u-boot/u-boot_2012.10.bb b/multitech/recipes/u-boot/u-boot_2012.10.bb new file mode 100644 index 0000000..cd9f151 --- /dev/null +++ b/multitech/recipes/u-boot/u-boot_2012.10.bb @@ -0,0 +1,34 @@ +PR = "r0" +require recipes/u-boot/u-boot.inc + +DEFAULT_PREFERENCE = "-1" + +# U-Boot 2012.10 for AT91 +SRCREV="linux4sam_4.0" + +SRC_URI = "git://github.com/linux4sam/u-boot-at91.git;protocol=http;tag=${SRCREV} \ + file://u-boot-2012.10-sam9x5-eth-mii-fix.patch \ + " + +# add patch to speed up boot if ethernet autonegotiation fails +SRC_URI += "file://u-boot-2010.06-macb-autoneg-timeout.patch" + +SRC_URI_append_mtocgd3 = " file://u-boot-2012.10-mtocgd3.patch" + +TARGET_LDFLAGS = "" + +S = "${WORKDIR}/git" + +inherit base + +do_configure_prepend() { + mv -f tools/setlocalversion tools/setlocalversion.old + echo -e "#!/bin/sh\necho '-${MACHINE}-${PR}'" > tools/setlocalversion + chmod a+rx tools/setlocalversion +} + +do_compile () { + oe_runmake ${UBOOT_MACHINE} + oe_runmake all +} + -- cgit v1.2.3 From c6096a2290cec993d135e79676c259a8876065ec Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Wed, 13 Feb 2013 11:29:14 -0600 Subject: linux-2.6.39.4: add support for mtocgd3 Uses the following patches from Atmel for AT91SAM9X5 support * 2.6.39-at91-exp.2 patches * SAM9X5 PMECC patches * SAM9X5 atmel_serial patches --- ...ine-at_hdmac-modify-way-to-use-interrupts.patch | 75 + ...at_hdmac-add-cyclic-DMA-operation-support.patch | 319 ++ ...t_hdmac-debug-information-sg_len-for-prep.patch | 32 + ...t_hdmac-remove-channel-status-testing-in-.patch | 41 + ...t_hdmac-specialize-AHB-interfaces-to-opti.patch | 121 + ...ine-AT91SAM9X5-has-a-Atmel-AHB-DMA-engine.patch | 33 + ...-rtc-at91-workaround-for-5series-ES-chips.patch | 79 + ...exp.2-0008-rtc-AT91SAM9X5-has-an-at91_rtc.patch | 41 + ...91-overall-definition-add-5series-support.patch | 356 +++ ...0-ARM-at91-PMC-header-add-5series-support.patch | 121 + ...t91-clock-add-5series-chip-family-support.patch | 215 ++ ...T91SAM9x5-processors-and-EK-board-support.patch | 3216 ++++++++++++++++++++ ...M-at91-provide-defconfig-for-at91sam9x5ek.patch | 218 ++ ...9-at91-exp.2-0014-usb-AT91SAM9X5-has-EHCI.patch | 32 + ...-0015-ARM-at91-pio-add-new-PIO3a-features.patch | 440 +++ ...sb-AT91SAM9X5-has-a-atmel_usba_udc-device.patch | 39 + ...ocksource-tcb-add-support-for-32-bit-mode.patch | 114 + ...atmel-mci-add-support-for-ARCH_AT91SAM9X5.patch | 100 + ...19-serial-atmel-convert-to-use-dma-engine.patch | 562 ++++ ...eo-atmel_lcdfb-add-support-for-AT91SAM9x5.patch | 1803 +++++++++++ ..._lcdfb-The-output-bpp-should-not-change-a.patch | 66 + ...el_tsadcc-add-support-for-ARCH_AT91SAM9X5.patch | 410 +++ ..._tsadcc-add-touch-screen-pressure-measure.patch | 109 + ..._tsadcc-enable-touchscreen-averaging-and-.patch | 81 + ..._tsadcc-add-ACR-register-and-change-trigg.patch | 97 + ...D-atmel_nand-Add-PMECC-controller-support.patch | 1175 +++++++ ...nand-optimize-read-write-buffer-functions.patch | 130 + ...pi-atmel_spi-trivial-change-some-comments.patch | 40 + ...9-spi-atmel_spi-add-physical-base-address.patch | 39 + ...l_spi-call-unmapping-on-transfers-buffers.patch | 43 + ...pi-status-information-passed-through-cont.patch | 80 + ...pi-add-flag-to-controller-data-for-lock-o.patch | 119 + ...-0033-spi-atmel_spi-add-dmaengine-support.patch | 654 ++++ ...0034-net-can-allow-CAN_AT91-on-AT91SAM9X5.patch | 33 + ...0035-Input-qt1070-Add-MODULE_DEVICE_TABLE.patch | 34 + ...Input-qt1070-trivial-fix-CHANGE-line-typo.patch | 30 + ...t1070-add-power-management-suspend-resume.patch | 166 + ...t_hdmac-clear-channel-status-on-channel-r.patch | 30 + ...t_hdmac-set-residue-as-total-len-in-atc_t.patch | 41 + ...t_hdmac-implement-pause-and-resume-in-atc.patch | 170 ++ ...t_hdmac-pause-no-need-to-wait-for-FIFO-em.patch | 60 + ...t_hdmac-replace-spin_lock-with-irqsave-va.patch | 244 ++ ...t_hdmac-improve-power-management-routines.patch | 182 ++ ...d-atmel-pcm-trivial-typo-in-debug-comment.patch | 30 + ...-pcm-trivial-typo-in-atmel_pcm_dma_params.patch | 31 + ...ngine-at_hdmac-add-slave-config-operation.patch | 58 + ...xp.2-0047-SPI-m25p80-add-serial-flash-IDs.patch | 29 + ...0048-sound-wm8731-rework-power-management.patch | 44 + ...atmel-ssc-add-phybase-in-device-structure.patch | 44 + ...c-dmaengine-usage-switch-depending-on-cpu.patch | 36 + ...51-sound-atmel_ssc_dai-fix-ssc-error-path.patch | 35 + ..._ssc_dai-atmel-pmc-adapt-to-dmaengine-usa.patch | 706 +++++ ...5_wm8731-machine-driver-for-at91sam9x5-wm.patch | 291 ++ ...and-do-not-scream-while-using-PIO-instead.patch | 33 + ...2-0055-MMC-PM-suspend-resume-in-atmel-mci.patch | 83 + ...-fix-wm8731_check_osc-connected-condition.patch | 37 + ...am9g20_wm8731-use-the-proper-SYSCKL-value.patch | 34 + ..._ssc_dai-PM-actually-stopping-clock-on-su.patch | 73 + ...-at91-sam9x5-increase-CONSISTENT_DMA_SIZE.patch | 29 + ...pi-add-bit-in-mode-register-to-prevent-ov.patch | 130 + ...am9x5-video-new-driver-for-the-high-end-o.patch | 1530 ++++++++++ ...n-at91_can-don-t-align-struct-definitions.patch | 81 + ...n-at91_can-fix-comment-about-priv-tx_next.patch | 31 + ...1_can-don-t-copy-data-to-rx-ed-RTR-frames.patch | 42 + ...n-let-get_tx_-functions-return-unsigned-i.patch | 44 + ...-at91_can-directly-define-AT91_MB_RX_LAST.patch | 39 + ...n-rename-AT91_MB_RX_MASK-to-AT91_IRQ_MB_R.patch | 74 + ...n-convert-derived-mailbox-constants-into-.patch | 296 ++ ...n-add-id_table-and-convert-prime-mailbox-.patch | 337 ++ ...n-register-mb0-sysfs-entry-only-on-at91sa.patch | 45 + ...1_can-add-support-for-the-AT91SAM9X5-SOCs.patch | 139 + ...ideobuf2-memops-use-pr_debug-for-debug-me.patch | 51 + ...fb-initially-split-atmelfb-into-a-driver-.patch | 2622 ++++++++++++++++ ....2-0074-video-atmelfb-refactor-core-setup.patch | 403 +++ ....2-0075-video-atmelfb-refactor-start-stop.patch | 196 ++ ...t91-exp.2-0076-video-atmelfb-refactor-isr.patch | 154 + ...video-atmelfb-refactor-backlight-routines.patch | 256 ++ ....2-0078-video-atmelfb-refactor-dma_update.patch | 211 ++ ...t91-exp.2-0079-video-atmelfb-refactor-LUT.patch | 80 + ...0-video-atmelfb-refactor-limit_screeninfo.patch | 92 + ...xp.2-0081-arm-at91-refactor-lcdc-includes.patch | 2648 ++++++++++++++++ ....2-0082-video-atmel_hlcdfb-add-new-driver.patch | 606 ++++ ...0083-arm-at91-sam9x5-use-new-hlcdc-driver.patch | 30 + ...at91-sam9x5ek-use-16bpp-as-default-for-fb.patch | 34 + ...xp.2-0085-create-platform-device-for-ovl1.patch | 97 + ....39-at91-exp.2-0086-WIP-add-clut-resource.patch | 167 + ...el_lcdfb-add-error-msg-when-out-of-memory.patch | 33 + ...cut-vb2_reqbufs-in-case-the-format-change.patch | 42 + ...-change-atmel-lcdfb-driver-selection-mode.patch | 95 + ..._ssc_dai-add-a-missing-space-to-an-error-.patch | 35 + ...-Atmel-Image-Sensor-Interface-ISI-support.patch | 1233 ++++++++ ...exp.2-0092-add-isi-support-in-board-files.patch | 238 ++ ...1-exp.2-0093-media-at91-add-dumb-set_parm.patch | 40 + ...-5series-add-ISI-device-and-board-support.patch | 232 ++ ...095-AT91-board-remove-not-needed-comments.patch | 47 + ...-exp.2-0096-AT91-5series-update-defconfig.patch | 266 ++ ...atmel_tsadcc-rework-irq-infrastructure-an.patch | 191 ++ ...es-Update-LCD-timings-to-avoid-flickering.patch | 33 + ...cdfb-change-pixel-clock-ratio-calculation.patch | 31 + ...and_pmecc-fix-warning-about-uninitialized.patch | 27 + ...MTD-atmel_nand-fix-wrong-use-of-0-as-NULL.patch | 29 + ...ASoC-wm8731-active-bit-and-OSC-management.patch | 98 + ...91-at91sam9x5-add-can-clocks-to-9x25-chip.patch | 27 + ...T91-LCD-include-remove-not-needed-comment.patch | 27 + ...s-fix-SPI0-MCI1-ISI-pins-conflicts-in-boa.patch | 102 + ...ug-incorrect-register-address-for-remaind.patch | 27 + ...2-0107-ARM-at91-add-smd-device-definition.patch | 112 + ...D-atmel_nand-Add-PMECC-controller-support.patch | 1177 +++++++ ...atmel_nand-optimize-read-write-buffer-fun.patch | 126 + ...tract-hw-ecc-initialization-to-one-functi.patch | 229 ++ ...nd-add-PMECC-parameters-in-nand-structure.patch | 30 + ...mel_nand-add-Programmable-Multibit-ECC-co.patch | 980 ++++++ ...port-to-2.6.39.-modify-function-definitio.patch | 65 + ...pass-the-pmecc-parameter-from-board-file-.patch | 86 + ...el_nand-9x5ek-enable-PMECC-in-9x5ek-board.patch | 38 + .../0009-atmel_nand-enable-dma-for-9x5ek.patch | 28 + .../linux-2.6.39.4-atmel_serial_disable_hwhs.patch | 32 + .../linux-2.6.39.4-ledtrig-netdev.patch | 488 +++ .../linux-2.6.39.4-option-telit.patch | 43 + .../recipes/linux/linux-2.6.39.4/mtocgd3/defconfig | 2328 ++++++++++++++ ...ux-2.6.39.4-at91sam9_wdt-10second-timeout.patch | 14 + .../linux-2.6.39.4-at91sam9x5-extreset.patch | 16 + .../linux-2.6.39.4-atmel-mci-force-detect.patch | 30 + .../mtocgd3/linux-2.6.39.4-macb-force-link.patch | 75 + .../mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch | 403 +++ .../mtocgd3/linux-2.6.39.4-wl12xx-sdio-irq.patch | 15 + ...DMA-AT91-Get-residual-bytes-in-dma-buffer.patch | 327 ++ ...igure-DMAC-configuration-register-for-usa.patch | 73 + ...gure-peripheral-id-and-enable-basic-usart.patch | 153 + ...-Serial-Enable-Serial-cyclic-DMA-transfer.patch | 399 +++ .../0005-Serial-AT91-Refine-tx-dma.patch | 167 + ...-AT91-refine-error-handler-in-probe-stage.patch | 70 + ...T91-Add-dma-support-for-rs485-and-iso7816.patch | 71 + ...8-Serial-AT91-remove-tx-dma-issue-pending.patch | 32 + ...-Serial-AT91-Fix-DBGU-peripheral_id-wrong.patch | 37 + ...91-Make-DBGU-support-dma-and-pdc-transfer.patch | 183 ++ .../serial_dma_rx_at91sam9x5_1.0/Change-log.txt | 30 + .../serial_dma_rx_at91sam9x5_1.0/how to apply.txt | 16 + multitech/recipes/linux/linux_2.6.39.4.bb | 151 +- 139 files changed, 34894 insertions(+), 1 deletion(-) create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0001-dmaengine-at_hdmac-modify-way-to-use-interrupts.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0002-dmaengine-at_hdmac-add-cyclic-DMA-operation-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0003-dmaengine-at_hdmac-debug-information-sg_len-for-prep.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0004-dmaengine-at_hdmac-remove-channel-status-testing-in-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0005-dmaengine-at_hdmac-specialize-AHB-interfaces-to-opti.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0006-dmaengine-AT91SAM9X5-has-a-Atmel-AHB-DMA-engine.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0007-rtc-at91-workaround-for-5series-ES-chips.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0008-rtc-AT91SAM9X5-has-an-at91_rtc.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0009-ARM-at91-overall-definition-add-5series-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0010-ARM-at91-PMC-header-add-5series-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0011-ARM-at91-clock-add-5series-chip-family-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0012-ARM-at91-AT91SAM9x5-processors-and-EK-board-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0013-ARM-at91-provide-defconfig-for-at91sam9x5ek.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0014-usb-AT91SAM9X5-has-EHCI.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0015-ARM-at91-pio-add-new-PIO3a-features.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0016-usb-AT91SAM9X5-has-a-atmel_usba_udc-device.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0017-clocksource-tcb-add-support-for-32-bit-mode.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0018-mmc-atmel-mci-add-support-for-ARCH_AT91SAM9X5.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0019-serial-atmel-convert-to-use-dma-engine.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0020-video-atmel_lcdfb-add-support-for-AT91SAM9x5.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0021-video-atmel_lcdfb-The-output-bpp-should-not-change-a.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0022-input-atmel_tsadcc-add-support-for-ARCH_AT91SAM9X5.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0023-input-atmel_tsadcc-add-touch-screen-pressure-measure.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0024-input-atmel_tsadcc-enable-touchscreen-averaging-and-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0025-input-atmel_tsadcc-add-ACR-register-and-change-trigg.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0026-MTD-atmel_nand-Add-PMECC-controller-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0027-MTD-atmel_nand-optimize-read-write-buffer-functions.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0028-spi-atmel_spi-trivial-change-some-comments.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0029-spi-atmel_spi-add-physical-base-address.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0030-spi-atmel_spi-call-unmapping-on-transfers-buffers.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0031-spi-atmel_spi-status-information-passed-through-cont.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0032-spi-atmel_spi-add-flag-to-controller-data-for-lock-o.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0033-spi-atmel_spi-add-dmaengine-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0034-net-can-allow-CAN_AT91-on-AT91SAM9X5.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0035-Input-qt1070-Add-MODULE_DEVICE_TABLE.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0036-Input-qt1070-trivial-fix-CHANGE-line-typo.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0037-Input-qt1070-add-power-management-suspend-resume.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0038-dmaengine-at_hdmac-clear-channel-status-on-channel-r.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0039-dmaengine-at_hdmac-set-residue-as-total-len-in-atc_t.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0040-dmaengine-at_hdmac-implement-pause-and-resume-in-atc.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0041-dmaengine-at_hdmac-pause-no-need-to-wait-for-FIFO-em.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0042-dmaengine-at_hdmac-replace-spin_lock-with-irqsave-va.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0043-dmaengine-at_hdmac-improve-power-management-routines.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0044-sound-atmel-pcm-trivial-typo-in-debug-comment.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0045-sound-atmel-pcm-trivial-typo-in-atmel_pcm_dma_params.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0046-dmaengine-at_hdmac-add-slave-config-operation.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0047-SPI-m25p80-add-serial-flash-IDs.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0048-sound-wm8731-rework-power-management.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0049-atmel-ssc-add-phybase-in-device-structure.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0050-atmel-ssc-dmaengine-usage-switch-depending-on-cpu.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0051-sound-atmel_ssc_dai-fix-ssc-error-path.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0052-sound-atmel_ssc_dai-atmel-pmc-adapt-to-dmaengine-usa.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0053-sound-sam9x5_wm8731-machine-driver-for-at91sam9x5-wm.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0054-mtd-atmel_nand-do-not-scream-while-using-PIO-instead.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0055-MMC-PM-suspend-resume-in-atmel-mci.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0056-ASoc-wm8731-fix-wm8731_check_osc-connected-condition.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0057-ASoc-sam9g20_wm8731-use-the-proper-SYSCKL-value.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0058-sound-atmel_ssc_dai-PM-actually-stopping-clock-on-su.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0059-ARM-at91-sam9x5-increase-CONSISTENT_DMA_SIZE.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0060-SPI-atmel_spi-add-bit-in-mode-register-to-prevent-ov.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0061-media-at91sam9x5-video-new-driver-for-the-high-end-o.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0062-can-at91_can-don-t-align-struct-definitions.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0063-can-at91_can-fix-comment-about-priv-tx_next.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0064-can-at91_can-don-t-copy-data-to-rx-ed-RTR-frames.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0065-can-at91_can-let-get_tx_-functions-return-unsigned-i.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0066-can-at91_can-directly-define-AT91_MB_RX_LAST.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0067-can-at91_can-rename-AT91_MB_RX_MASK-to-AT91_IRQ_MB_R.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0068-can-at91_can-convert-derived-mailbox-constants-into-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0069-can-at91_can-add-id_table-and-convert-prime-mailbox-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0070-can-at91_can-register-mb0-sysfs-entry-only-on-at91sa.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0071-can-at91_can-add-support-for-the-AT91SAM9X5-SOCs.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0072-media-V4L-videobuf2-memops-use-pr_debug-for-debug-me.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0073-video-atmelfb-initially-split-atmelfb-into-a-driver-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0074-video-atmelfb-refactor-core-setup.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0075-video-atmelfb-refactor-start-stop.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0076-video-atmelfb-refactor-isr.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0077-video-atmelfb-refactor-backlight-routines.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0078-video-atmelfb-refactor-dma_update.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0079-video-atmelfb-refactor-LUT.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0080-video-atmelfb-refactor-limit_screeninfo.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0081-arm-at91-refactor-lcdc-includes.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0082-video-atmel_hlcdfb-add-new-driver.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0083-arm-at91-sam9x5-use-new-hlcdc-driver.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0084-arm-at91-sam9x5ek-use-16bpp-as-default-for-fb.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0085-create-platform-device-for-ovl1.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0086-WIP-add-clut-resource.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0087-video-atmel_lcdfb-add-error-msg-when-out-of-memory.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0088-Don-t-shortcut-vb2_reqbufs-in-case-the-format-change.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0089-at91-video-change-atmel-lcdfb-driver-selection-mode.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0090-sound-atmel_ssc_dai-add-a-missing-space-to-an-error-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0091-at91-add-Atmel-Image-Sensor-Interface-ISI-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0092-add-isi-support-in-board-files.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0093-media-at91-add-dumb-set_parm.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0094-AT91-5series-add-ISI-device-and-board-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0095-AT91-board-remove-not-needed-comments.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0096-AT91-5series-update-defconfig.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0097-AT91-input-atmel_tsadcc-rework-irq-infrastructure-an.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0098-5series-Update-LCD-timings-to-avoid-flickering.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0099-atmel_lcdfb-change-pixel-clock-ratio-calculation.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0100-MTD-atmel_nand_pmecc-fix-warning-about-uninitialized.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0101-MTD-atmel_nand-fix-wrong-use-of-0-as-NULL.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0102-ASoC-wm8731-active-bit-and-OSC-management.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0103-AT91-at91sam9x5-add-can-clocks-to-9x25-chip.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0104-AT91-LCD-include-remove-not-needed-comment.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0105-AT91-5series-fix-SPI0-MCI1-ISI-pins-conflicts-in-boa.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0106-PMECC-Fix-bug-incorrect-register-address-for-remaind.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0107-ARM-at91-add-smd-device-definition.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0001-Revert-MTD-atmel_nand-Add-PMECC-controller-support.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0002-Revert-MTD-atmel_nand-optimize-read-write-buffer-fun.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0003-mtd-at91-extract-hw-ecc-initialization-to-one-functi.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0004-atmel_nand-add-PMECC-parameters-in-nand-structure.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0005-mtd-at91-atmel_nand-add-Programmable-Multibit-ECC-co.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0006-atmel_nand-port-to-2.6.39.-modify-function-definitio.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0007-atmel_nand-pass-the-pmecc-parameter-from-board-file-.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0008-atmel_nand-9x5ek-enable-PMECC-in-9x5ek-board.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/9x5_pmecc_2639/0009-atmel_nand-enable-dma-for-9x5ek.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-atmel_serial_disable_hwhs.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-ledtrig-netdev.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/linux-2.6.39.4-option-telit.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/defconfig create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-at91sam9_wdt-10second-timeout.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-at91sam9x5-extreset.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-atmel-mci-force-detect.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-macb-force-link.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-mach-at91-mtocgd3.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/mtocgd3/linux-2.6.39.4-wl12xx-sdio-irq.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0001-DMA-AT91-Get-residual-bytes-in-dma-buffer.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0002-Serial-Configure-DMAC-configuration-register-for-usa.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0003-Configure-peripheral-id-and-enable-basic-usart.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0004-Serial-Enable-Serial-cyclic-DMA-transfer.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0005-Serial-AT91-Refine-tx-dma.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0006-Serial-AT91-refine-error-handler-in-probe-stage.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0007-Serial-AT91-Add-dma-support-for-rs485-and-iso7816.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0008-Serial-AT91-remove-tx-dma-issue-pending.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0009-Serial-AT91-Fix-DBGU-peripheral_id-wrong.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/0010-serial-at91-Make-DBGU-support-dma-and-pdc-transfer.patch create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/Change-log.txt create mode 100644 multitech/recipes/linux/linux-2.6.39.4/serial_dma_rx_at91sam9x5_1.0/how to apply.txt (limited to 'multitech') diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0001-dmaengine-at_hdmac-modify-way-to-use-interrupts.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0001-dmaengine-at_hdmac-modify-way-to-use-interrupts.patch new file mode 100644 index 0000000..4967bd3 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0001-dmaengine-at_hdmac-modify-way-to-use-interrupts.patch @@ -0,0 +1,75 @@ +From e22e7d2f67c4f8003215863361f19ac6acdb927e Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Tue, 1 Feb 2011 19:58:30 +0100 +Subject: [PATCH 001/107] dmaengine: at_hdmac: modify way to use interrupts +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Now we use Buffer Transfer Completed interrupts. If we +want a chained buffer completed information, we setup the +ATC_IEN bit in CTRLB register in the lli. +This is done by set_desc_eol() function and used by +memcpy/slave_sg functions. + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + drivers/dma/at_hdmac.c | 4 ++-- + drivers/dma/at_hdmac_regs.h | 11 ++++++++--- + 2 files changed, 10 insertions(+), 5 deletions(-) + +diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c +index 235f53b..5124e09 100644 +--- a/drivers/dma/at_hdmac.c ++++ b/drivers/dma/at_hdmac.c +@@ -464,7 +464,7 @@ static irqreturn_t at_dma_interrupt(int irq, void *dev_id) + + for (i = 0; i < atdma->dma_common.chancnt; i++) { + atchan = &atdma->chan[i]; +- if (pending & (AT_DMA_CBTC(i) | AT_DMA_ERR(i))) { ++ if (pending & (AT_DMA_BTC(i) | AT_DMA_ERR(i))) { + if (pending & AT_DMA_ERR(i)) { + /* Disable channel on AHB error */ + dma_writel(atdma, CHDR, atchan->mask); +@@ -549,7 +549,7 @@ atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, + } + + ctrla = ATC_DEFAULT_CTRLA; +- ctrlb = ATC_DEFAULT_CTRLB ++ ctrlb = ATC_DEFAULT_CTRLB | ATC_IEN + | ATC_SRC_ADDR_MODE_INCR + | ATC_DST_ADDR_MODE_INCR + | ATC_FC_MEM2MEM; +diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h +index 495457e..8303306 100644 +--- a/drivers/dma/at_hdmac_regs.h ++++ b/drivers/dma/at_hdmac_regs.h +@@ -309,8 +309,8 @@ static void atc_setup_irq(struct at_dma_chan *atchan, int on) + struct at_dma *atdma = to_at_dma(atchan->chan_common.device); + u32 ebci; + +- /* enable interrupts on buffer chain completion & error */ +- ebci = AT_DMA_CBTC(atchan->chan_common.chan_id) ++ /* enable interrupts on buffer transfer completion & error */ ++ ebci = AT_DMA_BTC(atchan->chan_common.chan_id) + | AT_DMA_ERR(atchan->chan_common.chan_id); + if (on) + dma_writel(atdma, EBCIER, ebci); +@@ -347,7 +347,12 @@ static inline int atc_chan_is_enabled(struct at_dma_chan *atchan) + */ + static void set_desc_eol(struct at_desc *desc) + { +- desc->lli.ctrlb |= ATC_SRC_DSCR_DIS | ATC_DST_DSCR_DIS; ++ u32 ctrlb = desc->lli.ctrlb; ++ ++ ctrlb &= ~ATC_IEN; ++ ctrlb |= ATC_SRC_DSCR_DIS | ATC_DST_DSCR_DIS; ++ ++ desc->lli.ctrlb = ctrlb; + desc->lli.dscr = 0; + } + +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0002-dmaengine-at_hdmac-add-cyclic-DMA-operation-support.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0002-dmaengine-at_hdmac-add-cyclic-DMA-operation-support.patch new file mode 100644 index 0000000..63d1757 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0002-dmaengine-at_hdmac-add-cyclic-DMA-operation-support.patch @@ -0,0 +1,319 @@ +From 50730e4e5183b199232b7c0f93eadd8af1e439a6 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Tue, 1 Feb 2011 16:39:11 +0100 +Subject: [PATCH 002/107] dmaengine: at_hdmac: add cyclic DMA operation + support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + drivers/dma/at_hdmac.c | 187 +++++++++++++++++++++++++++++++++++++++--- + drivers/dma/at_hdmac_regs.h | 14 +++- + 2 files changed, 185 insertions(+), 16 deletions(-) + +diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c +index 5124e09..a58ae65 100644 +--- a/drivers/dma/at_hdmac.c ++++ b/drivers/dma/at_hdmac.c +@@ -237,16 +237,12 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first) + static void + atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) + { +- dma_async_tx_callback callback; +- void *param; + struct dma_async_tx_descriptor *txd = &desc->txd; + + dev_vdbg(chan2dev(&atchan->chan_common), + "descriptor %u complete\n", txd->cookie); + + atchan->completed_cookie = txd->cookie; +- callback = txd->callback; +- param = txd->callback_param; + + /* move children to free_list */ + list_splice_init(&desc->tx_list, &atchan->free_list); +@@ -278,12 +274,19 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) + } + } + +- /* +- * The API requires that no submissions are done from a +- * callback, so we don't need to drop the lock here +- */ +- if (callback) +- callback(param); ++ /* for cyclic transfers, ++ * no need to replay callback function while stopping */ ++ if (!test_bit(ATC_IS_CYCLIC, &atchan->status)) { ++ dma_async_tx_callback callback = txd->callback; ++ void *param = txd->callback_param; ++ ++ /* ++ * The API requires that no submissions are done from a ++ * callback, so we don't need to drop the lock here ++ */ ++ if (callback) ++ callback(param); ++ } + + dma_run_dependencies(txd); + } +@@ -419,6 +422,26 @@ static void atc_handle_error(struct at_dma_chan *atchan) + atc_chain_complete(atchan, bad_desc); + } + ++/** ++ * atc_handle_cyclic - at the end of a period, run callback function ++ * @atchan: channel used for cyclic operations ++ * ++ * Called with atchan->lock held and bh disabled ++ */ ++static void atc_handle_cyclic(struct at_dma_chan *atchan) ++{ ++ struct at_desc *first = atc_first_active(atchan); ++ struct dma_async_tx_descriptor *txd = &first->txd; ++ dma_async_tx_callback callback = txd->callback; ++ void *param = txd->callback_param; ++ ++ dev_vdbg(chan2dev(&atchan->chan_common), ++ "new cyclic period llp 0x%08x\n", ++ channel_readl(atchan, DSCR)); ++ ++ if (callback) ++ callback(param); ++} + + /*-- IRQ & Tasklet ---------------------------------------------------*/ + +@@ -434,8 +457,10 @@ static void atc_tasklet(unsigned long data) + } + + spin_lock(&atchan->lock); +- if (test_and_clear_bit(0, &atchan->error_status)) ++ if (test_and_clear_bit(ATC_IS_ERROR, &atchan->status)) + atc_handle_error(atchan); ++ else if (test_bit(ATC_IS_CYCLIC, &atchan->status)) ++ atc_handle_cyclic(atchan); + else + atc_advance_work(atchan); + +@@ -469,7 +494,7 @@ static irqreturn_t at_dma_interrupt(int irq, void *dev_id) + /* Disable channel on AHB error */ + dma_writel(atdma, CHDR, atchan->mask); + /* Give information to tasklet */ +- set_bit(0, &atchan->error_status); ++ set_bit(ATC_IS_ERROR, &atchan->status); + } + tasklet_schedule(&atchan->tasklet); + ret = IRQ_HANDLED; +@@ -759,6 +784,127 @@ err_desc_get: + return NULL; + } + ++/** ++ * atc_dma_cyclic_prep - prepare the cyclic DMA transfer ++ * @chan: the DMA channel to prepare ++ * @buf_addr: physical DMA address where the buffer starts ++ * @buf_len: total number of bytes for the entire buffer ++ * @period_len: number of bytes for each period ++ * @direction: transfer direction, to or from device ++ */ ++static struct dma_async_tx_descriptor * ++atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, ++ size_t period_len, enum dma_data_direction direction) ++{ ++ struct at_dma_chan *atchan = to_at_dma_chan(chan); ++ struct at_dma_slave *atslave = chan->private; ++ struct at_desc *first = NULL; ++ struct at_desc *prev = NULL; ++ unsigned long was_cyclic; ++ unsigned int periods = buf_len / period_len; ++ unsigned int reg_width; ++ u32 ctrla; ++ u32 ctrlb; ++ unsigned int i; ++ ++ dev_vdbg(chan2dev(chan), "prep_dma_cyclic: %s buf@0x%08x - %d (%d/%d)\n", ++ direction == DMA_TO_DEVICE ? "TO DEVICE" : "FROM DEVICE", ++ buf_addr, ++ periods, buf_len, period_len); ++ ++ if (unlikely(!atslave || !buf_len || !period_len)) { ++ dev_dbg(chan2dev(chan), "prep_dma_cyclic: length is zero!\n"); ++ return NULL; ++ } ++ ++ was_cyclic = test_and_set_bit(ATC_IS_CYCLIC, &atchan->status); ++ if (was_cyclic) { ++ dev_dbg(chan2dev(chan), "prep_dma_cyclic: channel in use!\n"); ++ return NULL; ++ } ++ ++ reg_width = atslave->reg_width; ++ ++ /* Check for too big/unaligned periods and unaligned DMA buffer */ ++ if (period_len > (ATC_BTSIZE_MAX << reg_width)) ++ goto err_out; ++ if (unlikely(period_len & ((1 << reg_width) - 1))) ++ goto err_out; ++ if (unlikely(buf_addr & ((1 << reg_width) - 1))) ++ goto err_out; ++ if (unlikely(!(direction & (DMA_TO_DEVICE | DMA_FROM_DEVICE)))) ++ goto err_out; ++ ++ /* prepare common CRTLA/CTRLB values */ ++ ctrla = ATC_DEFAULT_CTRLA | atslave->ctrla ++ | ATC_DST_WIDTH(reg_width) ++ | ATC_SRC_WIDTH(reg_width) ++ | period_len >> reg_width; ++ ctrlb = ATC_DEFAULT_CTRLB; ++ ++ /* build cyclic linked list */ ++ for (i = 0; i < periods; i++) { ++ struct at_desc *desc; ++ ++ desc = atc_desc_get(atchan); ++ if (!desc) ++ goto err_desc_get; ++ ++ switch (direction) { ++ case DMA_TO_DEVICE: ++ desc->lli.saddr = buf_addr + (period_len * i); ++ desc->lli.daddr = atslave->tx_reg; ++ desc->lli.ctrla = ctrla; ++ desc->lli.ctrlb = ctrlb ++ | ATC_DST_ADDR_MODE_FIXED ++ | ATC_SRC_ADDR_MODE_INCR ++ | ATC_FC_MEM2PER; ++ break; ++ ++ case DMA_FROM_DEVICE: ++ desc->lli.saddr = atslave->rx_reg; ++ desc->lli.daddr = buf_addr + (period_len * i); ++ desc->lli.ctrla = ctrla; ++ desc->lli.ctrlb = ctrlb ++ | ATC_DST_ADDR_MODE_INCR ++ | ATC_SRC_ADDR_MODE_FIXED ++ | ATC_FC_PER2MEM; ++ break; ++ ++ default: ++ return NULL; ++ } ++ ++ if (!first) { ++ first = desc; ++ } else { ++ /* inform the HW lli about chaining */ ++ prev->lli.dscr = desc->txd.phys; ++ /* insert the link descriptor to the LD ring */ ++ list_add_tail(&desc->desc_node, ++ &first->tx_list); ++ } ++ prev = desc; ++ } ++ ++ /* lets make a cyclic list */ ++ prev->lli.dscr = first->txd.phys; ++ ++ /* First descriptor of the chain embedds additional information */ ++ first->txd.cookie = -EBUSY; ++ first->len = buf_len; ++ ++ return &first->txd; ++ ++err_desc_get: ++ dev_err(chan2dev(chan), "not enough descriptors available\n"); ++ atc_desc_put(atchan, first); ++err_out: ++ clear_bit(ATC_IS_CYCLIC, &atchan->status); ++ return NULL; ++} ++ ++ + static int atc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd, + unsigned long arg) + { +@@ -795,6 +941,10 @@ static int atc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd, + + spin_unlock_bh(&atchan->lock); + ++ /* XXX/ukl: should this be done with bh disabled? */ ++ /* if channel dedicated to cyclic operations, free it */ ++ clear_bit(ATC_IS_CYCLIC, &atchan->status); ++ + return 0; + } + +@@ -853,6 +1003,10 @@ static void atc_issue_pending(struct dma_chan *chan) + + dev_vdbg(chan2dev(chan), "issue_pending\n"); + ++ /* Not needed for cyclic transfers */ ++ if (test_bit(ATC_IS_CYCLIC, &atchan->status)) ++ return; ++ + spin_lock_bh(&atchan->lock); + if (!atc_chan_is_enabled(atchan)) { + atc_advance_work(atchan); +@@ -1092,10 +1246,15 @@ static int __init at_dma_probe(struct platform_device *pdev) + if (dma_has_cap(DMA_MEMCPY, atdma->dma_common.cap_mask)) + atdma->dma_common.device_prep_dma_memcpy = atc_prep_dma_memcpy; + +- if (dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask)) { ++ if (dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask)) + atdma->dma_common.device_prep_slave_sg = atc_prep_slave_sg; ++ ++ if (dma_has_cap(DMA_CYCLIC, atdma->dma_common.cap_mask)) ++ atdma->dma_common.device_prep_dma_cyclic = atc_prep_dma_cyclic; ++ ++ if (dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) || ++ dma_has_cap(DMA_CYCLIC, atdma->dma_common.cap_mask)) + atdma->dma_common.device_control = atc_control; +- } + + dma_writel(atdma, EN, AT_DMA_ENABLE); + +diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h +index 8303306..c79a9e0 100644 +--- a/drivers/dma/at_hdmac_regs.h ++++ b/drivers/dma/at_hdmac_regs.h +@@ -181,12 +181,22 @@ txd_to_at_desc(struct dma_async_tx_descriptor *txd) + /*-- Channels --------------------------------------------------------*/ + + /** ++ * atc_status - information bits stored in channel status flag ++ * ++ * Manipulated with atomic operations. ++ */ ++enum atc_status { ++ ATC_IS_ERROR = 0, ++ ATC_IS_CYCLIC = 24, ++}; ++ ++/** + * struct at_dma_chan - internal representation of an Atmel HDMAC channel + * @chan_common: common dmaengine channel object members + * @device: parent device + * @ch_regs: memory mapped register base + * @mask: channel index in a mask +- * @error_status: transmit error status information from irq handler ++ * @status: transmit status information from irq/prep* functions + * to tasklet (use atomic operations) + * @tasklet: bottom half to finish transaction work + * @lock: serializes enqueue/dequeue operations to descriptors lists +@@ -201,7 +211,7 @@ struct at_dma_chan { + struct at_dma *device; + void __iomem *ch_regs; + u8 mask; +- unsigned long error_status; ++ unsigned long status; + struct tasklet_struct tasklet; + + spinlock_t lock; +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0003-dmaengine-at_hdmac-debug-information-sg_len-for-prep.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0003-dmaengine-at_hdmac-debug-information-sg_len-for-prep.patch new file mode 100644 index 0000000..d3770f0 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0003-dmaengine-at_hdmac-debug-information-sg_len-for-prep.patch @@ -0,0 +1,32 @@ +From a4353fd9418ab145376c08ec57ffd2b7c231db30 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Mon, 7 Feb 2011 15:07:37 +0100 +Subject: [PATCH 003/107] dmaengine: at_hdmac: debug information sg_len for + prep_slave_sg +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + drivers/dma/at_hdmac.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c +index a58ae65..1c1508e 100644 +--- a/drivers/dma/at_hdmac.c ++++ b/drivers/dma/at_hdmac.c +@@ -664,7 +664,8 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, + struct scatterlist *sg; + size_t total_len = 0; + +- dev_vdbg(chan2dev(chan), "prep_slave_sg: %s f0x%lx\n", ++ dev_vdbg(chan2dev(chan), "prep_slave_sg (%d): %s f0x%lx\n", ++ sg_len, + direction == DMA_TO_DEVICE ? "TO DEVICE" : "FROM DEVICE", + flags); + +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0004-dmaengine-at_hdmac-remove-channel-status-testing-in-.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0004-dmaengine-at_hdmac-remove-channel-status-testing-in-.patch new file mode 100644 index 0000000..60c4bfb --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0004-dmaengine-at_hdmac-remove-channel-status-testing-in-.patch @@ -0,0 +1,41 @@ +From 1e96442285f67be04287e3f2cb536328f2cbae58 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Thu, 10 Feb 2011 12:33:54 +0100 +Subject: [PATCH 004/107] dmaengine: at_hdmac: remove channel status testing + in tasklet +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There is no need to test if channel is enabled in tasklet: +- in error path, channel is disabled in interrupt routine +- in normal path, this test is performed in sub functions to report +a misuse of the engine. + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + drivers/dma/at_hdmac.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c +index 1c1508e..858358a 100644 +--- a/drivers/dma/at_hdmac.c ++++ b/drivers/dma/at_hdmac.c +@@ -449,13 +449,6 @@ static void atc_tasklet(unsigned long data) + { + struct at_dma_chan *atchan = (struct at_dma_chan *)data; + +- /* Channel cannot be enabled here */ +- if (atc_chan_is_enabled(atchan)) { +- dev_err(chan2dev(&atchan->chan_common), +- "BUG: channel enabled in tasklet\n"); +- return; +- } +- + spin_lock(&atchan->lock); + if (test_and_clear_bit(ATC_IS_ERROR, &atchan->status)) + atc_handle_error(atchan); +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0005-dmaengine-at_hdmac-specialize-AHB-interfaces-to-opti.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0005-dmaengine-at_hdmac-specialize-AHB-interfaces-to-opti.patch new file mode 100644 index 0000000..dd7d738 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0005-dmaengine-at_hdmac-specialize-AHB-interfaces-to-opti.patch @@ -0,0 +1,121 @@ +From d319913ecdc643e960902b456069b7259e260a65 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Mon, 14 Feb 2011 19:27:46 +0100 +Subject: [PATCH 005/107] dmaengine: at_hdmac: specialize AHB interfaces to + optimize transfers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +DMA controller has two AHB interfaces on the SOC internal +matrix. +It is more efficient to specialize each interface as the +access to memory can introduce latencies that are not compatible +with peripheral accesses requirements. + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + drivers/dma/at_hdmac.c | 20 ++++++++++---------- + drivers/dma/at_hdmac_regs.h | 2 ++ + 2 files changed, 12 insertions(+), 10 deletions(-) + +diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c +index 858358a..db2c0bd 100644 +--- a/drivers/dma/at_hdmac.c ++++ b/drivers/dma/at_hdmac.c +@@ -37,8 +37,7 @@ + + #define ATC_DEFAULT_CFG (ATC_FIFOCFG_HALFFIFO) + #define ATC_DEFAULT_CTRLA (0) +-#define ATC_DEFAULT_CTRLB (ATC_SIF(0) \ +- |ATC_DIF(1)) ++#define ATC_DEFAULT_CTRLB (ATC_SIF(MEM_IF) | ATC_DIF(MEM_IF)) + + /* + * Initial number of descriptors to allocate for each channel. This could +@@ -670,14 +669,14 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, + reg_width = atslave->reg_width; + + ctrla = ATC_DEFAULT_CTRLA | atslave->ctrla; +- ctrlb = ATC_DEFAULT_CTRLB | ATC_IEN; ++ ctrlb = ATC_IEN; + + switch (direction) { + case DMA_TO_DEVICE: + ctrla |= ATC_DST_WIDTH(reg_width); + ctrlb |= ATC_DST_ADDR_MODE_FIXED + | ATC_SRC_ADDR_MODE_INCR +- | ATC_FC_MEM2PER; ++ | ATC_FC_MEM2PER | ATC_SIF(MEM_IF) | ATC_DIF(PER_IF); + reg = atslave->tx_reg; + for_each_sg(sgl, sg, sg_len, i) { + struct at_desc *desc; +@@ -718,7 +717,7 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, + ctrla |= ATC_SRC_WIDTH(reg_width); + ctrlb |= ATC_DST_ADDR_MODE_INCR + | ATC_SRC_ADDR_MODE_FIXED +- | ATC_FC_PER2MEM; ++ | ATC_FC_PER2MEM | ATC_SIF(PER_IF) | ATC_DIF(MEM_IF); + + reg = atslave->rx_reg; + for_each_sg(sgl, sg, sg_len, i) { +@@ -798,7 +797,7 @@ atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, + unsigned int periods = buf_len / period_len; + unsigned int reg_width; + u32 ctrla; +- u32 ctrlb; ++ u32 ctrlb = 0; + unsigned int i; + + dev_vdbg(chan2dev(chan), "prep_dma_cyclic: %s buf@0x%08x - %d (%d/%d)\n", +@@ -829,12 +828,11 @@ atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, + if (unlikely(!(direction & (DMA_TO_DEVICE | DMA_FROM_DEVICE)))) + goto err_out; + +- /* prepare common CRTLA/CTRLB values */ ++ /* prepare common CRTLA value */ + ctrla = ATC_DEFAULT_CTRLA | atslave->ctrla + | ATC_DST_WIDTH(reg_width) + | ATC_SRC_WIDTH(reg_width) + | period_len >> reg_width; +- ctrlb = ATC_DEFAULT_CTRLB; + + /* build cyclic linked list */ + for (i = 0; i < periods; i++) { +@@ -852,7 +850,8 @@ atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, + desc->lli.ctrlb = ctrlb + | ATC_DST_ADDR_MODE_FIXED + | ATC_SRC_ADDR_MODE_INCR +- | ATC_FC_MEM2PER; ++ | ATC_FC_MEM2PER ++ | ATC_SIF(MEM_IF) | ATC_DIF(PER_IF); + break; + + case DMA_FROM_DEVICE: +@@ -862,7 +861,8 @@ atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, + desc->lli.ctrlb = ctrlb + | ATC_DST_ADDR_MODE_INCR + | ATC_SRC_ADDR_MODE_FIXED +- | ATC_FC_PER2MEM; ++ | ATC_FC_PER2MEM ++ | ATC_SIF(PER_IF) | ATC_DIF(MEM_IF); + break; + + default: +diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h +index c79a9e0..9afcb8d 100644 +--- a/drivers/dma/at_hdmac_regs.h ++++ b/drivers/dma/at_hdmac_regs.h +@@ -103,6 +103,8 @@ + /* Bitfields in CTRLB */ + #define ATC_SIF(i) (0x3 & (i)) /* Src tx done via AHB-Lite Interface i */ + #define ATC_DIF(i) ((0x3 & (i)) << 4) /* Dst tx done via AHB-Lite Interface i */ ++#define MEM_IF 0 /* specify AHB interface 0 as memory interface */ ++#define PER_IF 1 /* specify AHB interface 1 as peripheral interface */ + #define ATC_SRC_PIP (0x1 << 8) /* Source Picture-in-Picture enabled */ + #define ATC_DST_PIP (0x1 << 12) /* Destination Picture-in-Picture enabled */ + #define ATC_SRC_DSCR_DIS (0x1 << 16) /* Src Descriptor fetch disable */ +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0006-dmaengine-AT91SAM9X5-has-a-Atmel-AHB-DMA-engine.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0006-dmaengine-AT91SAM9X5-has-a-Atmel-AHB-DMA-engine.patch new file mode 100644 index 0000000..b388baf --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0006-dmaengine-AT91SAM9X5-has-a-Atmel-AHB-DMA-engine.patch @@ -0,0 +1,33 @@ +From b58656e215f783ca2099e29ee58396122a8220c7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Mon, 18 Apr 2011 17:19:18 +0200 +Subject: [PATCH 006/107] dmaengine: AT91SAM9X5 has a Atmel AHB DMA engine +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This change was part of a patch provided (non-publically) by Atmel. I +split it off because it was unrelated to the commit log and the other +changes in that commit. + +Signed-off-by: Uwe Kleine-König +--- + drivers/dma/Kconfig | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig +index a572600..354fcfa 100644 +--- a/drivers/dma/Kconfig ++++ b/drivers/dma/Kconfig +@@ -91,7 +91,7 @@ config DW_DMAC + + config AT_HDMAC + tristate "Atmel AHB DMA support" +- depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 ++ depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 || ARCH_AT91SAM9X5 + select DMA_ENGINE + help + Support the Atmel AHB DMA controller. This can be integrated in +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0007-rtc-at91-workaround-for-5series-ES-chips.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0007-rtc-at91-workaround-for-5series-ES-chips.patch new file mode 100644 index 0000000..7c802ca --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0007-rtc-at91-workaround-for-5series-ES-chips.patch @@ -0,0 +1,79 @@ +From ef74ff3fcfc0072cbac374553e1a6b2f3bf099c4 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Tue, 19 Oct 2010 13:36:53 +0200 +Subject: [PATCH 007/107] rtc/at91: workaround for 5series ES chips +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The RTC IMR register is not working on 5series ES chips. Fake it with a static +variable and some accessors functions. +This workaround does not modify the original RTC code. + +XXX: reevaluate if the hardware-guys fixed it, if yes, drop this, + patch, if no send them some stinking fish and rework patch to make + the driver aware of the shortcoming. + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + .../include/mach/at91sam9x5_rtc_workaround.h | 31 ++++++++++++++++++++ + drivers/rtc/rtc-at91rm9200.c | 4 ++ + 2 files changed, 35 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/mach-at91/include/mach/at91sam9x5_rtc_workaround.h + +diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5_rtc_workaround.h b/arch/arm/mach-at91/include/mach/at91sam9x5_rtc_workaround.h +new file mode 100644 +index 0000000..4b9f0d7 +--- /dev/null ++++ b/arch/arm/mach-at91/include/mach/at91sam9x5_rtc_workaround.h +@@ -0,0 +1,31 @@ ++/* ++ * Real Time Clock workaround header file ++ * apply to at91sam9x5 family Engineering Samples ++ * ++ * Copyright (C) 2010 Atmel, Nicolas Ferre ++ * ++ * 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 option) ++ * any later version. ++ */ ++ ++static u32 sam9x5es_rtc_imr = 0; ++ ++#define at91_sys_read(x) ( \ ++ (x) == AT91_RTC_IMR? \ ++ sam9x5es_rtc_imr: \ ++ at91_sys_read(x) \ ++ ) ++ ++#define at91_sys_write(y, x) do { \ ++ if ((y) == AT91_RTC_IDR) { \ ++ at91_sys_write(AT91_RTC_IDR, (x)); \ ++ sam9x5es_rtc_imr &= ~(x); \ ++ } else if ((y) == AT91_RTC_IER) { \ ++ sam9x5es_rtc_imr |= (x); \ ++ at91_sys_write(AT91_RTC_IER, (x)); \ ++ } else { \ ++ at91_sys_write((y), (x)); \ ++ } \ ++ } while (0) +diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c +index e39b77a..b9038f4 100644 +--- a/drivers/rtc/rtc-at91rm9200.c ++++ b/drivers/rtc/rtc-at91rm9200.c +@@ -32,6 +32,10 @@ + + #include + ++#if defined(CONFIG_ARCH_AT91SAM9X5) ++#include ++#endif ++ + + #define AT91_RTC_EPOCH 1900UL /* just like arch/arm/common/rtctime.c */ + +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0008-rtc-AT91SAM9X5-has-an-at91_rtc.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0008-rtc-AT91SAM9X5-has-an-at91_rtc.patch new file mode 100644 index 0000000..1e4ad49 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0008-rtc-AT91SAM9X5-has-an-at91_rtc.patch @@ -0,0 +1,41 @@ +From 25d339722fe977695b998ebb8b2ff2fab9faf7bb Mon Sep 17 00:00:00 2001 +From: Dan Liang +Date: Mon, 2 Aug 2010 16:01:39 +0800 +Subject: [PATCH 008/107] rtc: AT91SAM9X5 has an at91_rtc +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Dan Liang +[ukleinek: reword commit log] +Signed-off-by: Uwe Kleine-König +--- + drivers/rtc/Kconfig | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig +index e187887..fa5a072 100644 +--- a/drivers/rtc/Kconfig ++++ b/drivers/rtc/Kconfig +@@ -789,15 +789,15 @@ config RTC_DRV_AT32AP700X + + config RTC_DRV_AT91RM9200 + tristate "AT91RM9200 or some AT91SAM9 RTC" +- depends on ARCH_AT91RM9200 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 ++ depends on ARCH_AT91RM9200 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 || ARCH_AT91SAM9X5 + help + Driver for the internal RTC (Realtime Clock) module found on +- Atmel AT91RM9200's and some AT91SAM9 chips. On AT91SAM9 chips ++ Atmel AT91RM9200's and some AT91SAM9 chips. On AT91SAM9 chips + this is powered by the backup power supply. + + config RTC_DRV_AT91SAM9 + tristate "AT91SAM9x/AT91CAP9 RTT as RTC" +- depends on ARCH_AT91 && !(ARCH_AT91RM9200 || ARCH_AT91X40) ++ depends on ARCH_AT91 && !(ARCH_AT91RM9200 || ARCH_AT91X40 || ARCH_AT91SAM9X5) + help + RTC driver for the Atmel AT91SAM9x and AT91CAP9 internal RTT + (Real Time Timer). These timers are powered by the backup power +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0009-ARM-at91-overall-definition-add-5series-support.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0009-ARM-at91-overall-definition-add-5series-support.patch new file mode 100644 index 0000000..133588d --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0009-ARM-at91-overall-definition-add-5series-support.patch @@ -0,0 +1,356 @@ +From 4b93b1ba993ae9c9d60a86d0a55108a4d2ee2244 Mon Sep 17 00:00:00 2001 +From: Dan Liang +Date: Tue, 13 Jul 2010 15:56:23 +0800 +Subject: [PATCH 009/107] ARM: at91: overall definition: add 5series support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[at91sam9x5.h] +Add the definitions of peripheral and system registers for 5series chips family. + +[at91sam9x5_matrix.h] +Add definitions of Matrix registers for 5series chips family. + +[cpu.h] +Add ARCH_ID and basic cpu macros definition for 5series chips family. + +Signed-off-by: Dan Liang +Signed-off-by: Uwe Kleine-König +--- + arch/arm/mach-at91/include/mach/at91sam9x5.h | 179 ++++++++++++++++++++ + .../arm/mach-at91/include/mach/at91sam9x5_matrix.h | 136 +++++++++++++++ + 2 files changed, 315 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/mach-at91/include/mach/at91sam9x5.h + create mode 100644 arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h + +diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5.h b/arch/arm/mach-at91/include/mach/at91sam9x5.h +new file mode 100644 +index 0000000..c263b46 +--- /dev/null ++++ b/arch/arm/mach-at91/include/mach/at91sam9x5.h +@@ -0,0 +1,179 @@ ++/* ++ * Chip-specific header file for the AT91SAM9x5 family ++ * ++ * Copyright (C) 2009-2010 Atmel Corporation. ++ * ++ * Common definitions. ++ * Based on AT91SAM9x5 preliminary datasheet. ++ * ++ * 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 option) any later version. ++ */ ++ ++#ifndef AT91SAM9X5_H ++#define AT91SAM9X5_H ++ ++/* ++ * Peripheral identifiers/interrupts. ++ */ ++#define AT91_ID_FIQ 0 /* Advanced Interrupt Controller (FIQ) */ ++#define AT91_ID_SYS 1 /* System Controller Interrupt */ ++#define AT91SAM9X5_ID_PIOAB 2 /* Parallel I/O Controller A and B */ ++#define AT91SAM9X5_ID_PIOCD 3 /* Parallel I/O Controller C and D */ ++#define AT91SAM9X5_ID_SMD 4 /* SMD Soft Modem (SMD) */ ++#define AT91SAM9X5_ID_USART0 5 /* USART 0 */ ++#define AT91SAM9X5_ID_USART1 6 /* USART 1 */ ++#define AT91SAM9X5_ID_USART2 7 /* USART 2 */ ++#define AT91SAM9X5_ID_USART3 8 /* USART 3 */ ++#define AT91SAM9X5_ID_TWI0 9 /* Two-Wire Interface 0 */ ++#define AT91SAM9X5_ID_TWI1 10 /* Two-Wire Interface 1 */ ++#define AT91SAM9X5_ID_TWI2 11 /* Two-Wire Interface 2 */ ++#define AT91SAM9X5_ID_MCI0 12 /* High Speed Multimedia Card Interface 0 */ ++#define AT91SAM9X5_ID_SPI0 13 /* Serial Peripheral Interface 0 */ ++#define AT91SAM9X5_ID_SPI1 14 /* Serial Peripheral Interface 1 */ ++#define AT91SAM9X5_ID_UART0 15 /* UART 0 */ ++#define AT91SAM9X5_ID_UART1 16 /* UART 1 */ ++#define AT91SAM9X5_ID_TCB 17 /* Timer Counter 0, 1, 2, 3, 4 and 5 */ ++#define AT91SAM9X5_ID_PWM 18 /* Pulse Width Modulation Controller */ ++#define AT91SAM9X5_ID_ADC 19 /* ADC Controller */ ++#define AT91SAM9X5_ID_DMA0 20 /* DMA Controller 0 */ ++#define AT91SAM9X5_ID_DMA1 21 /* DMA Controller 1 */ ++#define AT91SAM9X5_ID_UHPHS 22 /* USB Host High Speed */ ++#define AT91SAM9X5_ID_UDPHS 23 /* USB Device High Speed */ ++#define AT91SAM9X5_ID_EMAC0 24 /* Ethernet MAC0 */ ++#define AT91SAM9X5_ID_LCDC 25 /* LCD Controller */ ++#define AT91SAM9X5_ID_ISI 25 /* Image Sensor Interface */ ++#define AT91SAM9X5_ID_MCI1 26 /* High Speed Multimedia Card Interface 1 */ ++#define AT91SAM9X5_ID_EMAC1 27 /* Ethernet MAC1 */ ++#define AT91SAM9X5_ID_SSC 28 /* Synchronous Serial Controller */ ++#define AT91SAM9X5_ID_CAN0 29 /* CAN Controller 0 */ ++#define AT91SAM9X5_ID_CAN1 30 /* CAN Controller 1 */ ++#define AT91SAM9X5_ID_IRQ0 31 /* Advanced Interrupt Controller */ ++ ++/* ++ * User Peripheral physical base addresses. ++ */ ++#define AT91SAM9X5_BASE_SPI0 0xf0000000 ++#define AT91SAM9X5_BASE_SPI1 0xf0004000 ++#define AT91SAM9X5_BASE_MCI0 0xf0008000 ++#define AT91SAM9X5_BASE_MCI1 0xf000c000 ++#define AT91SAM9X5_BASE_SSC 0xf0010000 ++#define AT91SAM9X5_BASE_CAN0 0xf8000000 ++#define AT91SAM9X5_BASE_CAN1 0xf8004000 ++#define AT91SAM9X5_BASE_TCB0 0xf8008000 ++#define AT91SAM9X5_BASE_TC0 0xf8008000 ++#define AT91SAM9X5_BASE_TC1 0xf8008040 ++#define AT91SAM9X5_BASE_TC2 0xf8008080 ++#define AT91SAM9X5_BASE_TCB1 0xf800c000 ++#define AT91SAM9X5_BASE_TC3 0xf800c000 ++#define AT91SAM9X5_BASE_TC4 0xf800c040 ++#define AT91SAM9X5_BASE_TC5 0xf800c080 ++#define AT91SAM9X5_BASE_TWI0 0xf8010000 ++#define AT91SAM9X5_BASE_TWI1 0xf8014000 ++#define AT91SAM9X5_BASE_TWI2 0xf8018000 ++#define AT91SAM9X5_BASE_USART0 0xf801c000 ++#define AT91SAM9X5_BASE_USART1 0xf8020000 ++#define AT91SAM9X5_BASE_USART2 0xf8024000 ++#define AT91SAM9X5_BASE_USART3 0xf8028000 ++#define AT91SAM9X5_BASE_EMAC0 0xf802c000 ++#define AT91SAM9X5_BASE_EMAC1 0xf8030000 ++#define AT91SAM9X5_BASE_PWMC 0xf8034000 ++#define AT91SAM9X5_BASE_LCDC 0xf8038000 ++#define AT91SAM9X5_BASE_UDPHS 0xf803c000 ++#define AT91SAM9X5_BASE_UART0 0xf8040000 ++#define AT91SAM9X5_BASE_UART1 0xf8044000 ++#define AT91SAM9X5_BASE_ISI 0xf8048000 ++#define AT91SAM9X5_BASE_ADC 0xf804c000 ++#define AT91_BASE_SYS 0xffffc000 ++ ++/* ++ * System Peripherals (offset from AT91_BASE_SYS) ++ */ ++#define AT91_MATRIX (0xffffde00 - AT91_BASE_SYS) ++#define AT91_PMECC (0xffffe000 - AT91_BASE_SYS) ++#define AT91_PMERRLOC (0xffffe600 - AT91_BASE_SYS) ++#define AT91_DDRSDRC0 (0xffffe800 - AT91_BASE_SYS) ++#define AT91_SMC (0xffffea00 - AT91_BASE_SYS) ++#define AT91_DMA0 (0xffffec00 - AT91_BASE_SYS) ++#define AT91_DMA1 (0xffffee00 - AT91_BASE_SYS) ++#define AT91_AIC (0xfffff000 - AT91_BASE_SYS) ++#define AT91_DBGU (0xfffff200 - AT91_BASE_SYS) ++#define AT91_PIOA (0xfffff400 - AT91_BASE_SYS) ++#define AT91_PIOB (0xfffff600 - AT91_BASE_SYS) ++#define AT91_PIOC (0xfffff800 - AT91_BASE_SYS) ++#define AT91_PIOD (0xfffffa00 - AT91_BASE_SYS) ++#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) ++#define AT91_RSTC (0xfffffe00 - AT91_BASE_SYS) ++#define AT91_SHDWC (0xfffffe10 - AT91_BASE_SYS) ++#define AT91_PIT (0xfffffe30 - AT91_BASE_SYS) ++#define AT91_WDT (0xfffffe40 - AT91_BASE_SYS) ++#define AT91_GPBR (0xfffffe60 - AT91_BASE_SYS) ++#define AT91_RTC (0xfffffeb0 - AT91_BASE_SYS) ++ ++#define AT91_USART0 AT91SAM9X5_BASE_US0 ++#define AT91_USART1 AT91SAM9X5_BASE_US1 ++#define AT91_USART2 AT91SAM9X5_BASE_US2 ++#define AT91_USART3 AT91SAM9X5_BASE_US3 ++ ++/* ++ * Internal Memory. ++ */ ++#define AT91SAM9X5_SRAM_BASE 0x00300000 /* Internal SRAM base address */ ++#define AT91SAM9X5_SRAM_SIZE SZ_32K /* Internal SRAM size (32Kb) */ ++ ++#define AT91SAM9X5_ROM_BASE 0x00100000 /* Internal ROM base address */ ++#define AT91SAM9X5_ROM_SIZE SZ_1M /* Internal ROM size (1Mb) */ ++ ++#define AT91SAM9X5_SMD_BASE 0x00400000 /* SMD Controller */ ++#define AT91SAM9X5_UDPHS_FIFO 0x00500000 /* USB Device HS controller */ ++#define AT91SAM9X5_OHCI_BASE 0x00600000 /* USB Host controller (OHCI) */ ++#define AT91SAM9X5_EHCI_BASE 0x00700000 /* USB Host controller (EHCI) */ ++ ++#define CONFIG_DRAM_BASE AT91_CHIPSELECT_1 ++ ++#define CONSISTENT_DMA_SIZE SZ_4M ++ ++/* ++ * DMA0 peripheral identifiers ++ * for hardware handshaking interface ++ */ ++#define AT_DMA_ID_MCI0 0 ++#define AT_DMA_ID_SPI0_TX 1 ++#define AT_DMA_ID_SPI0_RX 2 ++#define AT_DMA_ID_USART0_TX 3 ++#define AT_DMA_ID_USART0_RX 4 ++#define AT_DMA_ID_USART1_TX 5 ++#define AT_DMA_ID_USART1_RX 6 ++#define AT_DMA_ID_TWI0_TX 7 ++#define AT_DMA_ID_TWI0_RX 8 ++#define AT_DMA_ID_TWI2_TX 9 ++#define AT_DMA_ID_TWI2_RX 10 ++#define AT_DMA_ID_UART0_TX 11 ++#define AT_DMA_ID_UART0_RX 12 ++#define AT_DMA_ID_SSC_TX 13 ++#define AT_DMA_ID_SSC_RX 14 ++ ++/* ++ * DMA1 peripheral identifiers ++ * for hardware handshaking interface ++ */ ++#define AT_DMA_ID_MCI1 0 ++#define AT_DMA_ID_SPI1_TX 1 ++#define AT_DMA_ID_SPI1_RX 2 ++#define AT_DMA_ID_SMD_TX 3 ++#define AT_DMA_ID_SMD_RX 4 ++#define AT_DMA_ID_TWI1_TX 5 ++#define AT_DMA_ID_TWI1_RX 6 ++#define AT_DMA_ID_ADC_RX 7 ++#define AT_DMA_ID_DBGU_TX 8 ++#define AT_DMA_ID_DBGU_RX 9 ++#define AT_DMA_ID_UART1_TX 10 ++#define AT_DMA_ID_UART1_RX 11 ++#define AT_DMA_ID_USART2_TX 12 ++#define AT_DMA_ID_USART2_RX 13 ++#define AT_DMA_ID_USART3_TX 14 ++#define AT_DMA_ID_USART3_RX 15 ++ ++#endif +diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h b/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h +new file mode 100644 +index 0000000..c3e6b64 +--- /dev/null ++++ b/arch/arm/mach-at91/include/mach/at91sam9x5_matrix.h +@@ -0,0 +1,136 @@ ++/* ++ * Matrix-centric header file for the AT91SAM9x5 family ++ * ++ * Copyright (C) 2009-2010 Atmel Corporation. ++ * ++ * Memory Controllers (MATRIX, EBI) - System peripherals registers. ++ * Based on AT91SAM9x5 preliminary datasheet. ++ * ++ * 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 option) any later version. ++ */ ++ ++#ifndef AT91SAM9X5_MATRIX_H ++#define AT91SAM9X5_MATRIX_H ++ ++#define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ ++#define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ ++#define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ ++#define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ ++#define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ ++#define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ ++#define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */ ++#define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */ ++#define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */ ++#define AT91_MATRIX_MCFG9 (AT91_MATRIX + 0x24) /* Master Configuration Register 9 */ ++#define AT91_MATRIX_MCFG10 (AT91_MATRIX + 0x28) /* Master Configuration Register 10 */ ++#define AT91_MATRIX_MCFG11 (AT91_MATRIX + 0x2C) /* Master Configuration Register 11 */ ++#define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ ++#define AT91_MATRIX_ULBT_INFINITE (0 << 0) ++#define AT91_MATRIX_ULBT_SINGLE (1 << 0) ++#define AT91_MATRIX_ULBT_FOUR (2 << 0) ++#define AT91_MATRIX_ULBT_EIGHT (3 << 0) ++#define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) ++#define AT91_MATRIX_ULBT_THIRTYTWO (5 << 0) ++#define AT91_MATRIX_ULBT_SIXTYFOUR (6 << 0) ++#define AT91_MATRIX_ULBT_128 (7 << 0) ++ ++#define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ ++#define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ ++#define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ ++#define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ ++#define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ ++#define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ ++#define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */ ++#define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */ ++#define AT91_MATRIX_SCFG8 (AT91_MATRIX + 0x60) /* Slave Configuration Register 8 */ ++#define AT91_MATRIX_SLOT_CYCLE (0x1ff << 0) /* Maximum Number of Allowed Cycles for a Burst */ ++#define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ ++#define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) ++#define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) ++#define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) ++#define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ ++ ++#define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ ++#define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */ ++#define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ ++#define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */ ++#define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ ++#define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */ ++#define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ ++#define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */ ++#define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ ++#define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */ ++#define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ ++#define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */ ++#define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */ ++#define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */ ++#define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */ ++#define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */ ++#define AT91_MATRIX_PRAS8 (AT91_MATRIX + 0xC0) /* Priority Register A for Slave 8 */ ++#define AT91_MATRIX_PRBS8 (AT91_MATRIX + 0xC4) /* Priority Register B for Slave 8 */ ++#define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ ++#define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ ++#define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ ++#define AT91_MATRIX_M3PR (3 << 12) /* Master 3 Priority */ ++#define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ ++#define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ ++#define AT91_MATRIX_M6PR (3 << 24) /* Master 6 Priority */ ++#define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */ ++#define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */ ++#define AT91_MATRIX_M9PR (3 << 4) /* Master 9 Priority (in Register B) */ ++#define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */ ++#define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */ ++ ++#define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ ++#define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ ++#define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ ++#define AT91_MATRIX_RCB2 (1 << 2) ++#define AT91_MATRIX_RCB3 (1 << 3) ++#define AT91_MATRIX_RCB4 (1 << 4) ++#define AT91_MATRIX_RCB5 (1 << 5) ++#define AT91_MATRIX_RCB6 (1 << 6) ++#define AT91_MATRIX_RCB7 (1 << 7) ++#define AT91_MATRIX_RCB8 (1 << 8) ++#define AT91_MATRIX_RCB9 (1 << 9) ++#define AT91_MATRIX_RCB10 (1 << 10) ++#define AT91_MATRIX_RCB11 (1 << 11) ++ ++#define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x120) /* EBI Chip Select Assignment Register */ ++#define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ ++#define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) ++#define AT91_MATRIX_EBI_CS1A_SDRAMC (1 << 1) ++#define AT91_MATRIX_EBI_CS3A (1 << 3) /* Chip Select 3 Assignment */ ++#define AT91_MATRIX_EBI_CS3A_SMC (0 << 3) ++#define AT91_MATRIX_EBI_CS3A_SMC_NANDFLASH (1 << 3) ++#define AT91_MATRIX_EBI_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ ++#define AT91_MATRIX_EBI_DBPU_ON (0 << 8) ++#define AT91_MATRIX_EBI_DBPU_OFF (1 << 8) ++#define AT91_MATRIX_EBI_DBPDC (1 << 9) /* Data Bus Pull-up Configuration */ ++#define AT91_MATRIX_EBI_DBPD_ON (0 << 9) ++#define AT91_MATRIX_EBI_DBPD_OFF (1 << 9) ++#define AT91_MATRIX_EBI_EBI_IOSR (1 << 17) /* EBI I/O slew rate selection */ ++#define AT91_MATRIX_EBI_EBI_IOSR_REDUCED (0 << 17) ++#define AT91_MATRIX_EBI_EBI_IOSR_NORMAL (1 << 17) ++#define AT91_MATRIX_NFD0_SELECT (1 << 24) /* NAND Flash Data Bus Selection */ ++#define AT91_MATRIX_NFD0_ON_D0 (0 << 24) ++#define AT91_MATRIX_NFD0_ON_D16 (1 << 24) ++#define AT91_MATRIX_DDR_MP_EN (1 << 25) /* DDR Multi-port Enable */ ++#define AT91_MATRIX_MP_OFF (0 << 25) ++#define AT91_MATRIX_MP_ON (1 << 25) ++ ++#define AT91_MATRIX_WPMR (AT91_MATRIX + 0x1E4) /* Write Protect Mode Register */ ++#define AT91_MATRIX_WPMR_WPEN (1 << 0) /* Write Protect ENable */ ++#define AT91_MATRIX_WPMR_WP_WPDIS (0 << 0) ++#define AT91_MATRIX_WPMR_WP_WPEN (1 << 0) ++#define AT91_MATRIX_WPMR_WPKEY (0xFFFFFF << 8) /* Write Protect KEY */ ++ ++#define AT91_MATRIX_WPSR (AT91_MATRIX + 0x1E8) /* Write Protect Status Register */ ++#define AT91_MATRIX_WPSR_WPVS (1 << 0) /* Write Protect Violation Status */ ++#define AT91_MATRIX_WPSR_NO_WPV (0 << 0) ++#define AT91_MATRIX_WPSR_WPV (1 << 0) ++#define AT91_MATRIX_WPSR_WPVSRC (0xFFFF << 8) /* Write Protect Violation Source */ ++ ++#endif +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0010-ARM-at91-PMC-header-add-5series-support.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0010-ARM-at91-PMC-header-add-5series-support.patch new file mode 100644 index 0000000..b6dd5d4 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0010-ARM-at91-PMC-header-add-5series-support.patch @@ -0,0 +1,121 @@ +From 70174744ea113add6279afb8642ea71acafb8d69 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Fri, 9 Jul 2010 19:33:10 +0200 +Subject: [PATCH 010/107] ARM: at91: PMC header: add 5series support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add 5series chips family support in PMC header file: +Alternate prescaler location and CSS length for PCKR is added. +The new Peripheral Control Register management is added. +Protection mode register is modified to complete its management. + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + arch/arm/mach-at91/include/mach/at91_pmc.h | 63 ++++++++++++++++++++++------ + 1 files changed, 50 insertions(+), 13 deletions(-) + +diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h +index e46f93e..1782178 100644 +--- a/arch/arm/mach-at91/include/mach/at91_pmc.h ++++ b/arch/arm/mach-at91/include/mach/at91_pmc.h +@@ -47,9 +47,13 @@ + #define AT91_PMC_BIASCOUNT (0xf << 28) /* UTMI BIAS Start-up Time */ + + #define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register [not on SAM9RL] */ +-#define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */ +-#define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass [SAM9x, CAP9] */ +-#define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */ ++#define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */ ++#define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass [SAM9x, CAP9] */ ++#define AT91_PMC_MOSCRCEN (1 << 3) /* Main On-Chip RC Oscillator Enable [some SAM9] */ ++#define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */ ++#define AT91_PMC_KEY (0x37 << 16) /* MOR Writing Key */ ++#define AT91_PMC_MOSCSEL (1 << 24) /* Main Oscillator Selection [some SAM9] */ ++#define AT91_PMC_CFDEN (1 << 25) /* Clock Failure Detector Enable [some SAM9] */ + + #define AT91_CKGR_MCFR (AT91_PMC + 0x24) /* Main Clock Frequency Register */ + #define AT91_PMC_MAINF (0xffff << 0) /* Main Clock Frequency */ +@@ -74,14 +78,24 @@ + #define AT91_PMC_CSS_PLLA (2 << 0) + #define AT91_PMC_CSS_PLLB (3 << 0) + #define AT91_PMC_CSS_UPLL (3 << 0) /* [some SAM9 only] */ +-#define AT91_PMC_PRES (7 << 2) /* Master Clock Prescaler */ +-#define AT91_PMC_PRES_1 (0 << 2) +-#define AT91_PMC_PRES_2 (1 << 2) +-#define AT91_PMC_PRES_4 (2 << 2) +-#define AT91_PMC_PRES_8 (3 << 2) +-#define AT91_PMC_PRES_16 (4 << 2) +-#define AT91_PMC_PRES_32 (5 << 2) +-#define AT91_PMC_PRES_64 (6 << 2) ++#define PMC_PRES_OFFSET 2 ++#define AT91_PMC_PRES (7 << PMC_PRES_OFFSET) /* Master Clock Prescaler */ ++#define AT91_PMC_PRES_1 (0 << PMC_PRES_OFFSET) ++#define AT91_PMC_PRES_2 (1 << PMC_PRES_OFFSET) ++#define AT91_PMC_PRES_4 (2 << PMC_PRES_OFFSET) ++#define AT91_PMC_PRES_8 (3 << PMC_PRES_OFFSET) ++#define AT91_PMC_PRES_16 (4 << PMC_PRES_OFFSET) ++#define AT91_PMC_PRES_32 (5 << PMC_PRES_OFFSET) ++#define AT91_PMC_PRES_64 (6 << PMC_PRES_OFFSET) ++#define PMC_ALT_PRES_OFFSET 4 ++#define AT91_PMC_ALT_PRES (7 << PMC_ALT_PRES_OFFSET) /* Master Clock Prescaler [alternate location] */ ++#define AT91_PMC_ALT_PRES_1 (0 << PMC_ALT_PRES_OFFSET) ++#define AT91_PMC_ALT_PRES_2 (1 << PMC_ALT_PRES_OFFSET) ++#define AT91_PMC_ALT_PRES_4 (2 << PMC_ALT_PRES_OFFSET) ++#define AT91_PMC_ALT_PRES_8 (3 << PMC_ALT_PRES_OFFSET) ++#define AT91_PMC_ALT_PRES_16 (4 << PMC_ALT_PRES_OFFSET) ++#define AT91_PMC_ALT_PRES_32 (5 << PMC_ALT_PRES_OFFSET) ++#define AT91_PMC_ALT_PRES_64 (6 << PMC_ALT_PRES_OFFSET) + #define AT91_PMC_MDIV (3 << 8) /* Master Clock Division */ + #define AT91RM9200_PMC_MDIV_1 (0 << 8) /* [AT91RM9200 only] */ + #define AT91RM9200_PMC_MDIV_2 (1 << 8) +@@ -105,7 +119,14 @@ + #define AT91_PMC_USBS_UPLL (1 << 0) + #define AT91_PMC_OHCIUSBDIV (0xF << 8) /* Divider for USB OHCI Clock */ + ++#define AT91_PMC_SMD (AT91_PMC + 0x3c) /* Soft Modem Clock Register [some SAM9 only] */ ++#define AT91_PMC_SMDS (0x1 << 0) /* SMD input clock selection */ ++#define AT91_PMC_SMD_DIV (0x1f << 8) /* SMD input clock divider */ ++#define AT91_PMC_SMDDIV(n) (((n) << 8) & AT91_PMC_SMD_DIV) ++ + #define AT91_PMC_PCKR(n) (AT91_PMC + 0x40 + ((n) * 4)) /* Programmable Clock 0-N Registers */ ++#define AT91_PMC_ALT_PCKR_CSS (0x7 << 0) /* Programmable Clock Source Selection [alternate length] */ ++#define AT91_PMC_CSS_MASTER (4 << 0) /* [some SAM9 only] */ + #define AT91_PMC_CSSMCK (0x1 << 8) /* CSS or Master Clock Selection */ + #define AT91_PMC_CSSMCK_CSS (0 << 8) + #define AT91_PMC_CSSMCK_MCK (1 << 8) +@@ -123,11 +144,27 @@ + #define AT91_PMC_PCK1RDY (1 << 9) /* Programmable Clock 1 */ + #define AT91_PMC_PCK2RDY (1 << 10) /* Programmable Clock 2 */ + #define AT91_PMC_PCK3RDY (1 << 11) /* Programmable Clock 3 */ ++#define AT91_PMC_MOSCSELS (1 << 16) /* Main Oscillator Selection [some SAM9] */ ++#define AT91_PMC_MOSCRCS (1 << 17) /* Main On-Chip RC [some SAM9] */ ++#define AT91_PMC_CFDEV (1 << 18) /* Clock Failure Detector Event [some SAM9] */ + #define AT91_PMC_IMR (AT91_PMC + 0x6c) /* Interrupt Mask Register */ + +-#define AT91_PMC_PROT (AT91_PMC + 0xe4) /* Protect Register [AT91CAP9 revC only] */ +-#define AT91_PMC_PROTKEY 0x504d4301 /* Activation Code */ ++#define AT91_PMC_PROT (AT91_PMC + 0xe4) /* Write Protect Mode Register [some SAM9, AT91CAP9 revC only] */ ++#define AT91_PMC_WPEN (0x1 << 0) /* Write Protect Enable */ ++#define AT91_PMC_WPKEY (0xffffff << 8) /* Write Protect Key */ ++#define AT91_PMC_PROTKEY (0x504d43 << 8) /* Activation Code */ ++ ++#define AT91_PMC_WPSR (AT91_PMC + 0xe8) /* Write Protect Status Register [some SAM9] */ ++#define AT91_PMC_WPVS (0x1 << 0) /* Write Protect Violation Status */ ++#define AT91_PMC_WPVSRC (0xffff << 8) /* Write Protect Violation Source */ + + #define AT91_PMC_VER (AT91_PMC + 0xfc) /* PMC Module Version [AT91CAP9 only] */ + ++#define AT91_PMC_PCR (AT91_PMC + 0x10c) /* Peripheral Control Register [some SAM9] */ ++#define AT91_PMC_PCR_PID (0x3f << 0) /* Peripheral ID */ ++#define AT91_PMC_PCR_CMD (0x1 << 12) /* Command */ ++#define AT91_PMC_PCR_DIV (0x3 << 16) /* Divisor Value */ ++#define AT91_PMC_PCRDIV(n) (((n) << 16) & AT91_PMC_PCR_DIV) ++#define AT91_PMC_PCR_EN (0x1 << 28) /* Enable */ ++ + #endif +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0011-ARM-at91-clock-add-5series-chip-family-support.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0011-ARM-at91-clock-add-5series-chip-family-support.patch new file mode 100644 index 0000000..180e515 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0011-ARM-at91-clock-add-5series-chip-family-support.patch @@ -0,0 +1,215 @@ +From 6a6e54c0091962d01f6b343958bbda95487bb9f5 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Mon, 12 Jul 2010 19:24:14 +0200 +Subject: [PATCH 011/107] ARM: at91: clock: add 5series chip family support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Several changes to PMC have to be managed for adding this 5series support: +- alternate prescaler location for both MCKR and PCKR +- alternate CSS length for PCKR +- added cpu_is_at91sam9x5() to functional switches +- manage UTMI bias like sam9g45 chip family + +Signed-off-by: Nicolas Ferre +Signed-off-by: Uwe Kleine-König +--- + arch/arm/mach-at91/clock.c | 85 ++++++++++++++++++++++++++++++++++---------- + 1 files changed, 66 insertions(+), 19 deletions(-) + +diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c +index 9113da6..6c92db8 100644 +--- a/arch/arm/mach-at91/clock.c ++++ b/arch/arm/mach-at91/clock.c +@@ -49,24 +49,37 @@ + */ + #define cpu_has_utmi() ( cpu_is_at91cap9() \ + || cpu_is_at91sam9rl() \ +- || cpu_is_at91sam9g45()) ++ || cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5()) + + #define cpu_has_800M_plla() ( cpu_is_at91sam9g20() \ +- || cpu_is_at91sam9g45()) ++ || cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5()) + + #define cpu_has_300M_plla() (cpu_is_at91sam9g10()) + + #define cpu_has_pllb() (!(cpu_is_at91sam9rl() \ +- || cpu_is_at91sam9g45())) ++ || cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5())) + +-#define cpu_has_upll() (cpu_is_at91sam9g45()) ++#define cpu_has_upll() (cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5()) + + /* USB host HS & FS */ + #define cpu_has_uhp() (!cpu_is_at91sam9rl()) + + /* USB device FS only */ + #define cpu_has_udpfs() (!(cpu_is_at91sam9rl() \ +- || cpu_is_at91sam9g45())) ++ || cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5())) ++ ++#define cpu_has_plladiv2() (cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5()) ++ ++#define cpu_has_mdiv3() (cpu_is_at91sam9g45() \ ++ || cpu_is_at91sam9x5()) ++ ++#define cpu_has_alt_prescaler() (cpu_is_at91sam9x5()) + + static LIST_HEAD(clocks); + static DEFINE_SPINLOCK(clk_lock); +@@ -139,13 +152,6 @@ static void pmc_uckr_mode(struct clk *clk, int is_on) + { + unsigned int uckr = at91_sys_read(AT91_CKGR_UCKR); + +- if (cpu_is_at91sam9g45()) { +- if (is_on) +- uckr |= AT91_PMC_BIASEN; +- else +- uckr &= ~AT91_PMC_BIASEN; +- } +- + if (is_on) { + is_on = AT91_PMC_LOCKU; + at91_sys_write(AT91_CKGR_UCKR, uckr | clk->pmc_mask); +@@ -210,11 +216,26 @@ static struct clk __init *at91_css_to_clk(unsigned long css) + return &utmi_clk; + else if (cpu_has_pllb()) + return &pllb; ++ break; ++ /* alternate PMC: can use master clock */ ++ case AT91_PMC_CSS_MASTER: ++ return &mck; + } + + return NULL; + } + ++ ++static int pmc_prescaler_divider(u32 reg) ++{ ++ if (cpu_has_alt_prescaler()) { ++ return 1 << ((reg & AT91_PMC_ALT_PRES) >> PMC_ALT_PRES_OFFSET); ++ } else { ++ return 1 << ((reg & AT91_PMC_PRES) >> PMC_PRES_OFFSET); ++ } ++} ++ ++ + /* + * Associate a particular clock with a function (eg, "uart") and device. + * The drivers can then request the same 'function' with several different +@@ -353,12 +374,22 @@ int clk_set_rate(struct clk *clk, unsigned long rate) + { + unsigned long flags; + unsigned prescale; ++ unsigned long prescale_offset, css_mask; + unsigned long actual; + + if (!clk_is_programmable(clk)) + return -EINVAL; + if (clk->users) + return -EBUSY; ++ ++ if (cpu_has_alt_prescaler()) { ++ prescale_offset = PMC_ALT_PRES_OFFSET; ++ css_mask = AT91_PMC_ALT_PCKR_CSS; ++ } else { ++ prescale_offset = PMC_PRES_OFFSET; ++ css_mask = AT91_PMC_CSS; ++ } ++ + spin_lock_irqsave(&clk_lock, flags); + + actual = clk->parent->rate_hz; +@@ -367,8 +398,8 @@ int clk_set_rate(struct clk *clk, unsigned long rate) + u32 pckr; + + pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); +- pckr &= AT91_PMC_CSS; /* clock selection */ +- pckr |= prescale << 2; ++ pckr &= css_mask; /* keep clock selection */ ++ pckr |= prescale << prescale_offset; + at91_sys_write(AT91_PMC_PCKR(clk->id), pckr); + clk->rate_hz = actual; + break; +@@ -415,11 +446,17 @@ static void __init init_programmable_clock(struct clk *clk) + { + struct clk *parent; + u32 pckr; ++ unsigned int css_mask; ++ ++ if (cpu_has_alt_prescaler()) ++ css_mask = AT91_PMC_ALT_PCKR_CSS; ++ else ++ css_mask = AT91_PMC_CSS; + + pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); +- parent = at91_css_to_clk(pckr & AT91_PMC_CSS); ++ parent = at91_css_to_clk(pckr & css_mask); + clk->parent = parent; +- clk->rate_hz = parent->rate_hz / (1 << ((pckr & AT91_PMC_PRES) >> 2)); ++ clk->rate_hz = parent->rate_hz / pmc_prescaler_divider(pckr); + } + + #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ +@@ -697,7 +734,7 @@ int __init at91_clock_init(unsigned long main_clock) + if (pll_overclock) + pr_info("Clocks: PLLA overclocked, %ld MHz\n", plla.rate_hz / 1000000); + +- if (cpu_is_at91sam9g45()) { ++ if (cpu_has_plladiv2()) { + mckr = at91_sys_read(AT91_PMC_MCKR); + plla.rate_hz /= (1 << ((mckr & AT91_PMC_PLLADIV2) >> 12)); /* plla divisor by 2 */ + } +@@ -719,6 +756,10 @@ int __init at91_clock_init(unsigned long main_clock) + * (obtain the USB High Speed 480 MHz when input is 12 MHz) + */ + utmi_clk.rate_hz = 40 * utmi_clk.parent->rate_hz; ++ ++ /* UTMI bias and PLL are managed at the same time */ ++ if (cpu_is_at91sam9g45() || cpu_is_at91sam9x5()) ++ utmi_clk.pmc_mask |= AT91_PMC_BIASEN; + } + + /* +@@ -737,7 +778,7 @@ int __init at91_clock_init(unsigned long main_clock) + mckr = at91_sys_read(AT91_PMC_MCKR); + mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS); + freq = mck.parent->rate_hz; +- freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2)); /* prescale */ ++ freq /= pmc_prescaler_divider(mckr); /* prescale */ + if (cpu_is_at91rm9200()) { + mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ + } else if (cpu_is_at91sam9g20()) { +@@ -745,13 +786,19 @@ int __init at91_clock_init(unsigned long main_clock) + freq / ((mckr & AT91_PMC_MDIV) >> 7) : freq; /* mdiv ; (x >> 7) = ((x >> 8) * 2) */ + if (mckr & AT91_PMC_PDIV) + freq /= 2; /* processor clock division */ +- } else if (cpu_is_at91sam9g45()) { ++ } else if (cpu_has_mdiv3()) { + mck.rate_hz = (mckr & AT91_PMC_MDIV) == AT91SAM9_PMC_MDIV_3 ? + freq / 3 : freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ + } else { + mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ + } + ++ if (cpu_has_alt_prescaler()) { ++ /* Programmable clocks can use MCK */ ++ mck.type |= CLK_TYPE_PRIMARY; ++ mck.id = 4; ++ } ++ + /* Register the PMC's standard clocks */ + for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++) + list_add_tail(&standard_pmc_clocks[i]->node, &clocks); +-- +1.7.5.4 + diff --git a/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0012-ARM-at91-AT91SAM9x5-processors-and-EK-board-support.patch b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0012-ARM-at91-AT91SAM9x5-processors-and-EK-board-support.patch new file mode 100644 index 0000000..6078e73 --- /dev/null +++ b/multitech/recipes/linux/linux-2.6.39.4/2.6.39-at91-exp.2/2.6.39-at91-exp.2-0012-ARM-at91-AT91SAM9x5-processors-and-EK-board-support.patch @@ -0,0 +1,3216 @@ +From 31f087cd051928de83fe17aee4d1e2a6416e88ee Mon Sep 17 00:00:00 2001 +From: Dan Liang +Date: Fri, 23 Jul 2010 13:00:56 +0200 +Subject: [PATCH 012/107] ARM: at91: AT91SAM9x5 processors and EK board + support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This patch is based on many smaller patches by Dan Liang, Hong Xu, Josh +Wu and Nicolas Ferre. + +XXX: try to put support for AT91SAM9x5 into an existing choice item + +Signed-off-by: Dan Liang +Signed-off-by: Hong Xu +Signed-off-by: Josh Wu +Signed-off-by: Nicolas Ferre +[ukleinek: remove .phys_io and .io_pg_offst] +Signed-off-by: Uwe Kleine-König +--- + arch/arm/mach-at91/Kconfig | 21 + + arch/arm/mach-at91/Makefile | 4 + + arch/arm/mach-at91/at91sam9x5.c | 416 ++++++ + arch/arm/mach-at91/at91sam9x5_devices.c | 1785 ++++++++++++++++++++++++ + arch/arm/mach-at91/board-sam9x5cm.c | 236 ++++ + arch/arm/mach-at91/board-sam9x5ek.c | 358 +++++ + arch/arm/mach-at91/generic.h | 2 + + arch/arm/mach-at91/include/mach/board-sam9x5.h | 91 ++ + arch/arm/mach-at91/include/mach/board.h | 18 +- + arch/arm/mach-at91/include/mach/hardware.h | 2 + + arch/arm/mach-at91/include/mach/timex.h | 5 + + arch/arm/mach-at91/pm.h | 19 + + arch/arm/mach-at91/pm_slowclock.S | 11 +- + 13 files changed, 2961 insertions(+), 7 deletions(-) + create mode 100644 arch/arm/mach-at91/at91sam9x5.c + create mode 100644 arch/arm/mach-at91/at91sam9x5_devices.c + create mode 100644 arch/arm/mach-at91/board-sam9x5cm.c + create mode 100644 arch/arm/mach-at91/board-sam9x5ek.c + create mode 100644 arch/arm/mach-at91/include/mach/board-sam9x5.h + +diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig +index 2d299bf..b5d29ef 100644 +--- a/arch/arm/mach-at91/Kconfig ++++ b/arch/arm/mach-at91/Kconfig +@@ -78,6 +78,13 @@ config ARCH_AT91SAM9G45 + select HAVE_FB_ATMEL + select HAVE_NET_MACB + ++config ARCH_AT91SAM9X5 ++ bool "AT91SAM9X5" ++ select CPU_ARM926T ++ select GENERIC_CLOCKEVENTS ++ select HAVE_FB_ATMEL ++ select HAVE_NET_MACB ++ + config ARCH_AT91CAP9 + bool "AT91CAP9" + select CPU_ARM926T +@@ -426,6 +433,20 @@ endif + + # ---------------------------------------------------------- + ++if ARCH_AT91SAM9X5 ++ ++comment "AT91SAM9x5 Series Board Type" ++ ++config MACH_AT91SAM9X5EK ++ bool "Atmel AT91SAM9x5 Series Evaluation Kit" ++ help ++ Select this if you re using Atmel's AT91SAM9x5-EK Evaluation Kit. ++ Supported chips are sam9g15, sam9g25, sam9x25, sam9g35 and sam9x35. ++ ++endif ++ ++# ---------------------------------------------------------- ++ + if ARCH_AT91CAP9 + + comment "AT91CAP9 Board Type" +diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile +index a83835e..3d82460 100644 +--- a/arch/arm/mach-at91/Makefile ++++ b/arch/arm/mach-at91/Makefile +@@ -18,6 +18,7 @@ obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_d + obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o at91sam9_alt_reset.o + obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o + obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o ++obj-$(CONFIG_ARCH_AT91SAM9X5) += at91sam9x5.o at91sam926x_time.o at91sam9x5_devices.o sam9_smc.o + obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o + obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o + obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o +@@ -75,6 +76,9 @@ obj-$(CONFIG_MACH_SNAPPER_9260) += board-snapper9260.o + # AT91SAM9G45 board-specific support + obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o + ++# AT91SAM9X5 board-specific support ++obj-$(CONFIG_MACH_AT91SAM9X5EK) += board-sam9x5cm.o board-sam9x5ek.o ++ + # AT91CAP9 board-specific support + obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o + +diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c +new file mode 100644 +index 0000000..de456e6 +--- /dev/null ++++ b/arch/arm/mach-at91/at91sam9x5.c +@@ -0,0 +1,416 @@ ++/* ++ * Chip-specific setup code for the AT91SAM9x5 family ++ * ++ * Copyright (C) 2010 Atmel Corporation. ++ * ++ * 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 option) any later version. ++ * ++ */ ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "generic.h" ++#include "clock.h" ++ ++static struct map_desc at91sam9x5_io_desc[] __initdata = { ++ { ++ .virtual = AT91_VA_BASE_SYS, ++ .pfn = __phys_to_pfn(AT91_BASE_SYS), ++ .length = SZ_16K, ++ .type = MT_DEVICE, ++ }, { ++ .virtual = AT91_IO_VIRT_BASE - AT91SAM9X5_SRAM_SIZE, ++ .pfn = __phys_to_pfn(AT91SAM9X5_SRAM_BASE), ++ .length = AT91SAM9X5_SRAM_SIZE, ++ .type = MT_DEVICE, ++ } ++}; ++ ++/* -------------------------------------------------------------------- ++ * Clocks ++ * -------------------------------------------------------------------- */ ++ ++/* ++ * The peripheral clocks. ++ */ ++static struct clk pioAB_clk = { ++ .name = "pioAB_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_PIOAB, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk pioCD_clk = { ++ .name = "pioCD_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_PIOCD, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk smd_clk = { ++ .name = "smd_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_SMD, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk usart0_clk = { ++ .name = "usart0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_USART0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk usart1_clk = { ++ .name = "usart1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_USART1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk usart2_clk = { ++ .name = "usart2_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_USART2, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* USART3 clock - Only for sam9g25/sam9x25 */ ++static struct clk usart3_clk = { ++ .name = "usart3_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_USART3, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk twi0_clk = { ++ .name = "twi0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_TWI0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk twi1_clk = { ++ .name = "twi1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_TWI1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk twi2_clk = { ++ .name = "twi2_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_TWI2, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk mmc0_clk = { ++ .name = "mci0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_MCI0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk spi0_clk = { ++ .name = "spi0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_SPI0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk spi1_clk = { ++ .name = "spi1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_SPI1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk uart0_clk = { ++ .name = "uart0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_UART0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk uart1_clk = { ++ .name = "uart1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_UART1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk tcb0_clk = { ++ .name = "tcb0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_TCB, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk pwm_clk = { ++ .name = "pwm_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_PWM, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk adc_clk = { ++ .name = "adc_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_ADC, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk dma0_clk = { ++ .name = "dma0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_DMA0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk dma1_clk = { ++ .name = "dma1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_DMA1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk uhphs_clk = { ++ .name = "uhphs_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_UHPHS, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk udphs_clk = { ++ .name = "udphs_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_UDPHS, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* emac0 clock - Only for sam9g25/sam9x25/sam9g35/sam9x35 */ ++static struct clk macb0_clk = { ++ .name = "macb0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_EMAC0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* lcd clock - Only for sam9g15/sam9g35/sam9x35 */ ++static struct clk lcdc_clk = { ++ .name = "lcdc_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_LCDC, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* isi clock - Only for sam9g25 */ ++static struct clk isi_clk = { ++ .name = "isi_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_ISI, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk mmc1_clk = { ++ .name = "mci1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_MCI1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* emac1 clock - Only for sam9x25 */ ++static struct clk macb1_clk = { ++ .name = "macb1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_EMAC1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++static struct clk ssc_clk = { ++ .name = "ssc_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_SSC, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* can0 clock - Only for sam9x35 */ ++static struct clk can0_clk = { ++ .name = "can0_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_CAN0, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++/* can1 clock - Only for sam9x35 */ ++static struct clk can1_clk = { ++ .name = "can1_clk", ++ .pmc_mask = 1 << AT91SAM9X5_ID_CAN1, ++ .type = CLK_TYPE_PERIPHERAL, ++}; ++ ++/* One additional fake clock for ohci */ ++static struct clk ohci_clk = { ++ .name = "ohci_clk", ++ .pmc_mask = 0, ++ .type = CLK_TYPE_PERIPHERAL, ++ .parent = &uhphs_clk, ++}; ++ ++/* One additional fake clock for second TC block */ ++static struct clk tcb1_clk = { ++ .name = "tcb1_clk", ++ .pmc_mask = 0, ++ .type = CLK_TYPE_PERIPHERAL, ++ .parent = &tcb0_clk, ++}; ++ ++static struct clk *periph_clocks[] __initdata = { ++ &pioAB_clk, ++ &pioCD_clk, ++ &smd_clk, ++ &usart0_clk, ++ &usart1_clk, ++ &usart2_clk, ++ &twi0_clk, ++ &twi1_clk, ++ &twi2_clk, ++ &mmc0_clk, ++ &spi0_clk, ++ &spi1_clk, ++ &uart0_clk, ++ &uart1_clk, ++ &tcb0_clk, ++ &pwm_clk, ++ &adc_clk, ++ &dma0_clk, ++ &dma1_clk, ++ &uhphs_clk, ++ &udphs_clk, ++ &mmc1_clk, ++ &ssc_clk, ++ // irq0 ++ &ohci_clk, ++ &tcb1_clk, ++}; ++ ++/* ++ * The two programmable clocks. ++ * You must configure pin multiplexing to bring these signals out. ++ */ ++static struct clk pck0 = { ++ .name = "pck0", ++ .pmc_mask = AT91_PMC_PCK0, ++ .type = CLK_TYPE_PROGRAMMABLE, ++ .id = 0, ++}; ++static struct clk pck1 = { ++ .name = "pck1", ++ .pmc_mask = AT91_PMC_PCK1, ++ .type = CLK_TYPE_PROGRAMMABLE, ++ .id = 1, ++}; ++ ++static void __init at91sam9x5_register_clocks(void) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) ++ clk_register(periph_clocks[i]); ++ ++ if (cpu_is_at91sam9g25() ++ || cpu_is_at91sam9x25()) ++ clk_register(&usart3_clk); ++ ++ if (cpu_is_at91sam9g25() ++ || cpu_is_at91sam9x25() ++ || cpu_is_at91sam9g35() ++ || cpu_is_at91sam9x35()) ++ clk_register(&macb0_clk); ++ ++ if (cpu_is_at91sam9g15() ++ || cpu_is_at91sam9g35() ++ || cpu_is_at91sam9x35()) ++ clk_register(&lcdc_clk); ++ ++ if (cpu_is_at91sam9g25()) ++ clk_register(&isi_clk); ++ ++ if (cpu_is_at91sam9x25()) ++ clk_register(&macb1_clk); ++ ++ if (cpu_is_at91sam9x35()) { ++ clk_register(&can0_clk); ++ clk_register(&can1_clk); ++ } ++ ++ clk_register(&pck0); ++ clk_register(&pck1); ++} ++ ++/* -------------------------------------------------------------------- ++ * GPIO ++ * -------------------------------------------------------------------- */ ++ ++static struct at91_gpio_bank at91sam9x5_gpio[] = { ++ { ++ .id = AT91SAM9X5_ID_PIOAB, ++ .offset = AT91_PIOA, ++ .clock = &pioAB_clk, ++ }, { ++ .id = AT91SAM9X5_ID_PIOAB, ++ .offset = AT91_PIOB, ++ .clock = &pioAB_clk, ++ }, { ++ .id = AT91SAM9X5_ID_PIOCD, ++ .offset = AT91_PIOC, ++ .clock = &pioCD_clk, ++ }, { ++ .id = AT91SAM9X5_ID_PIOCD, ++ .offset = AT91_PIOD, ++ .clock = &pioCD_clk, ++ } ++}; ++ ++static void at91sam9x5_reset(void) ++{ ++ at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); ++} ++ ++static void at91sam9x5_poweroff(void) ++{ ++ at91_sys_write(AT91_SHDW_CR, AT91_SHDW_KEY | AT91_SHDW_SHDW); ++} ++ ++ ++/* -------------------------------------------------------------------- ++ * AT91SAM9x5 processor initialization ++ * -------------------------------------------------------------------- */ ++ ++void __init at91sam9x5_initialize(unsigned long main_clock) ++{ ++ /* Map peripherals */ ++ iotable_init(at91sam9x5_io_desc, ARRAY_SIZE(at91sam9x5_io_desc)); ++ ++ at91_arch_reset = at91sam9x5_reset; ++ pm_power_off = at91sam9x5_poweroff; ++ at91_extern_irq = (1 << AT91SAM9X5_ID_IRQ0); ++ ++ /* Init clock subsystem */ ++ at91_clock_init(main_clock); ++ ++ /* Register the processor-specific clocks */ ++ at91sam9x5_register_clocks(); ++ ++ /* Register GPIO subsystem */ ++ at91_gpio_init(at91sam9x5_gpio, 4); ++} ++ ++/* -------------------------------------------------------------------- ++ * Interrupt initialization ++ * -------------------------------------------------------------------- */ ++ ++/* ++ * The default interrupt priority levels (0 = lowest, 7 = highest). ++ */ ++static unsigned int at91sam9x5_default_irq_priority[NR_AIC_IRQS] __initdata = { ++ 7, /* Advanced Interrupt Controller (FIQ) */ ++ 7, /* System Peripherals */ ++ 1, /* Parallel IO Controller A and B */ ++ 1, /* Parallel IO Controller C and D */ ++ 4, /* Soft Modem */ ++ 5, /* USART 0 */ ++ 5, /* USART 1 */ ++ 5, /* USART 2 */ ++ 5, /* USART 3 */ ++ 6, /* Two-Wire Interface 0 */ ++ 6, /* Two-Wire Interface 1 */ ++ 6, /* Two-Wire Interface 2 */ ++ 0, /* Multimedia Card Interface 0 */ ++ 5, /* Serial Peripheral Interface 0 */ ++ 5, /* Serial Peripheral Interface 1 */ ++ 5, /* UART 0 */ ++ 5, /* UART 1 */ ++ 0, /* Timer Counter 0, 1, 2, 3, 4 and 5 */ ++ 0, /* Pulse Width Modulation Controller */ ++ 0, /* ADC COntroller */ ++ 0, /* DMA Controller 0 */ ++ 0, /* DMA Controller 1 */ ++ 2, /* USB Host High Speed port */ ++ 2, /* USB Device High speed port */ ++ 3, /* Ethernet MAC 0 */ ++ 3, /* LDC Controller or Image Sensor Interface */ ++ 0, /* Multimedia Card Interface 1 */ ++ 3, /* Ethernet MAC 1 */ ++ 4, /* Synchronous Serial Interface */ ++ 4, /* CAN Controller 0 */ ++ 4, /* CAN Controller 1 */ ++ 0, /* Advanced Interrupt Controller (IRQ0) */ ++}; ++ ++void __init at91sam9x5_init_interrupts(unsigned int priority[NR_AIC_IRQS]) ++{ ++ if (!priority) ++ priority = at91sam9x5_default_irq_priority; ++ ++ /* Initialize the AIC interrupt controller */ ++ at91_aic_init(priority); ++ ++ /* Enable GPIO interrupts */ ++ at91_gpio_irq_setup(); ++} +diff --git a/arch/arm/mach-at91/at91sam9x5_devices.c b/arch/arm/mach-at91/at91sam9x5_devices.c +new file mode 100644 +index 0000000..e601ae4 +--- /dev/null ++++ b/arch/arm/mach-at91/at91sam9x5_devices.c +@@ -0,0 +1,1785 @@ ++/* ++ * On-Chip devices setup code for the AT91SAM9x5 family ++ * ++ * Copyright (C) 2010 Atmel Corporation. ++ * ++ * 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 option) any later version. ++ * ++ */ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include